Freastalaí baile a fhoilsiú trí VPS nuair a bhíonn CGNAT ag bacadh port
An bealach ón mbrabhsálaí go dtí an bosca baile: cruthaigh go bhfuil an líne taobh thiar de CGNAT, cuir DNS chuig an VPS, déan DNAT ar phort amháin, ceartaigh an bealach ar ais agus fíoraigh ón taobh amuigh.
Thosaigh mé ón taobh amuigh, mar a dhéanfadh úsáideoir: chlóscríobh mé an t-ainm i mbrabhsálaí fóin ar shonraí móibíleacha agus d'fhéach mé ar an nasc ag crochadh go dtí go ndeachaigh sé in am. Réitíodh an t-ainm, mar sin bhí an DNS ceart. Bhí leathanach aistriú port an ródaire baile ina mharbhchríoch freisin, mar bhí 100.64.31.42 ar a sheoladh WAN, agus ní seoladh é sin a ndéanfaidh soláthraí ródú chugam ón idirlíon. Míníonn an uimhir sin an teip ar fad: tá an líne taobh thiar de carrier-grade NAT, mar sin baineann an seoladh poiblí ar mo thaobh den tollán leis an soláthraí. Seo a leanas an bealach a shiúil mé ón táb sin a bhí crochta go dtí seirbhís a fhreagraíonn.
Tosaigh ag an gcliant agus oibrigh isteach
Sula n-athraíonn tú aon riail, cruthaigh cá stopann an slabhra. Ar an ríomhaire glúine rith mé dig +short files.example.net agus fuair mé seoladh an VPS ar ais, rud a chuir as an áireamh DNS sean ar mo mheaisín. Ansin chuaigh curl -v --connect-timeout 5 files.example.net:5022 in am in ionad diúltú dó. Tá tábhacht leis an difríocht sin: is iondúil go gciallaíonn am istigh go bhfuil paicéid á scaoileadh ar an mbealach, agus ciallaíonn diúltú gur fhreagair rud éigin agus gur dhúirt sé ní hea.
Ba é an VPS féin an chéad léim eile isteach. Níor thaispeáin ss -ltnp aon rud ag éisteacht ar 5022, rud a bhí súil leis sular tháinig an riail DNAT. Ar an meaisín céanna dhearbhaigh wg show (nó ip -br a show tun0 le haghaidh OpenVPN) go raibh piara an tí suas le croitheadh láimhe úr. Má tá an piara síos, ní chabhróidh aon riail NAT, agus ní chiallaíonn an solas glas ar leathanach VPN an ródaire baile aon rud.
Deimhnigh go bhfuil líne an tí i ndáiríre taobh thiar de CGNAT
Cuir an seoladh a thuairiscíonn an ródaire ar a chomhéadan WAN i gcomparáid leis an méid a fheiceann seirbhís sheachtrach. Tá gach rud in 100.64.0.0/10, is é sin 100.64.x.x go 100.127.x.x, sa raon seoltaí comhroinnte ó RFC 6598 agus ní féidir é a shroicheadh ón idirlíon. Tagann tú ar an gconclúid chéanna nuair a mhaíonn an ródaire gnáthsheoladh príobháideach agus nuair a thugann cuardach poiblí rud éigin gan bhaint ar ais. Is féidir le líne CGNAT seoladh poiblí a bheith aici freisin nach maireann ach go dtí an chéad léas eile, ionas go bhfeictear go n-oibríonn aistriú port ar feadh uaire agus go bhfaigheann sé bás go ciúin ina dhiaidh sin.
Tabhannaíonn roinnt soláthraithe seoladh poiblí fíor, ach cuireann siad bac ar 80 agus 443 isteach ar chuntais chónaithe. Má tá do sheirbhís ina gréasán amháin agus má tá an seoladh WAN go fírinneach poiblí, fiafraigh den tacaíocht sula dtógfaidh tú athsheoltóir. Mura bhfuil, tá an dearadh thíos infheidhme go comhionann do gach port, agus is fiú stop a chur leis an turgnamh ar thaobh an ródaire: cuireann an t-aistritheoir i líonra an tsoláthraí deireadh leis an nasc sula sroicheann sé do chomhéadan WAN riamh.
Cuir an t-ainm chuig seoladh an VPS
Ní dhéanann DNS trácht a athsheoladh, mar sin caithfidh seoladh poiblí an VPS a bheith sa taifead A don tseirbhís. Ní réitíonn taifead A chuig 192.168.1.20 go húsáideach ach do chliaint atá laistigh den VPN cheana; ón idirlíon réitíonn sé chuig seoladh nach féidir le duine ar bith a ródú. Coinním ainm ar leith do rochtain riaracháin an VPS féin, ionas nach meascfaidh mé riamh cén t-óstach a bhfuil taifead ag tagairt dó.
Má fhreastalaíonn an VPS agus an bosca baile araon ar HTTP, tabhair ainm féin do gach ceann acu agus lig don VPS cinneadh cé a fhreagraíonn. Is é an rud a dhéanann tú nuair a chumascann tú in aon ainm iad agus a bhfuil súil agat go roghnóidh an seachfhreastalaí an cúltaca ceart ná an t-óstach mícheart a dhífhabhtú ar feadh tráthnóna.
DNAT ar phort amháin, fág SSH ar 22
Is é an rogha díreach ná NAT sprice ar an VPS. Cumasaigh aistriú don eithne atá ag rith agus coinnigh seoladh tolláin an fhreastalaí baile sa riail, ní a sheoladh LAN:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp -d 198.51.100.10 --dport 5022 -j DNAT --to-destination 10.8.0.2
Fág SSH chuig an VPS féin ar 22 agus aistrigh port eile, mar shampla 5022, chuig an meaisín baile. Má aistríonn tú 22 chuig bosca atá síos, caillfidh tú an t-aon bhealach a d'fhéadfadh é a shocrú. Tá an loighic chéanna i bhfeidhm maidir leis an seachfhreastalaí: fág port bainistíochta an VPS lasmuigh de na rialacha athsheolta.
Déan na rialacha marthanach nuair a oibríonn siad. Ar Debian nó Ubuntu, scríobhann apt install iptables-persistent agus ansin netfilter-persistent save iad chuig /etc/iptables/rules.v4. Ar óstach firewalld is é an comhionann ná aistriú port buan ar an gcrios, a dteastaíonn firewall-cmd --reload uaidh sula gcuirtear i bhfeidhm é. Imíonn rialacha nach maireann ach sa chuimhne ag an gcéad atosú cothabhála ón soláthraí, de ghnáth ag uair mhí-ámharach.
Ceartaigh an bealach ar ais, nó seachain a bheith ag teastáil uaidh
Ní athscríobhann DNAT ach an ceann scríbe. Feiceann freastalaí an tí nasc ó sheoladh bunaidh an chliaint, agus má dhíríonn a bhealach réamhshocraithe chuig ródaire an tí, fágann an freagra an teach tríd an WAN áit a scaoileann aistritheoir an tsoláthraí é. Ba í an neamhshiméadracht sin an dara teip a bhuail mé, tar éis do riail DNAT breathnú go hiomlán ceart.
Oibríonn dhá cheartú. Tabhair bealach polasaí don bhosca baile ionas go dtéann trácht ón tollán ar ais tríd an tollán:
ip rule add from 10.8.0.2 table 100
ip route add default dev wg0 table 100
Nó lig don VPS an fhoinse a athscríobh ionas go mbeidh seoladh ag an bhfreagra ar féidir leis a shroicheadh, agus lig do conntrack é a chur ar ais ar an mbealach amach:
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 5022 -j SNAT --to-source 10.8.0.1
Folaíonn leagan SNAT fíor-sheoladh an chliaint ó fhreastalaí an tí, mar sin taispeánann logaí na feidhmchlár 10.8.0.1 mar phiara. Cuir an seoladh bunaidh ar aghaidh ag an gciseal feidhmchláir, nó glac le cailliúint logála in aghaidh an chliaint, ach socraigh go stuama é seachas é a aimsiú le linn eachtra.
Seiceáil an bealach ar fad ón taobh amuigh
Fíoraigh ó líonra nach é an VPS ná an teach é: fón ar shonraí móibíleacha, nó blaosc saoráideach áit éigin eile. Ba cheart do nc -vz files.example.net 5022 nasc rathúil a thuairisciú, agus ba cheart do openssl s_client -connect files.example.net:443 -servername files.example.net an teastas don ainm poiblí a thaispeáint. Ansin seiceáil grúpa slándála nó balla dóiteáin scamall an tsoláthraí. De ghnáth cuirtear bac ar riail DNAT nach bhfeiceann paicéad riamh ciseal amháin os cionn an óstaigh.
Ar deireadh, socraigh cad a tharlaíonn nuair a thiteann an tollán. Leanann riail DNAT ag glacadh le naisc agus beathaíonn sí go ciúin iad isteach i dtollán marbh, rud atá díreach cosúil le seirbhís bhriste. Cosnaíonn seiceáil shláinte ar an VPS a dhiúltaíonn don phort agus an piara síos cúpla líne agus sábhálann sí uair an chloig de bhuille faoi thuairim. Ina dhiaidh sin, stop ag eagarthóireacht rialacha agus breathnaigh air ar feadh lae sula gcuirfidh tú muinín ann.