Títẹ̀jáde sẹ́bà ilé nípasẹ̀ VPS nígbà tí CGNAT bá dènà àwọn pọ́ọ̀tù
Ọ̀nà láti aṣàwákiri dé ẹ̀rọ ilé: jẹ́rìí pé laini wà lẹ́yìn CGNAT, darí DNS sí VPS, ṣe DNAT lórí pọ́ọ̀tù kan, tún ọ̀nà ìpadàbọ̀ ṣe àti gbé e kalẹ̀ láti ìta.
Mo bẹ̀rẹ̀ láti ìta, gẹ́gẹ́ bí olùlò yóò ṣe: mo tẹ orúkọ náà sínú aṣàwákiri fọ́nù lórí dátà alágbèéká, mo sì wo bí ìsopọ̀ ṣe rọ̀ kí ó tó parí àkókò. Orúkọ náà yanjú, nítorí náà DNS dára. Ojú-ìwé ìtọ́já pọ́ọ̀tù ti rótà ilé pẹ̀lú jẹ́ ọ̀nà àbáwọlé, nítorí àdírẹ́sì WAN rẹ̀ ń fi 100.64.31.42 hàn, ìyẹn kì í ṣe àdírẹ́sì tí olùpèsè yóò darí mi sí láti orí íńtánẹ́ẹ̀tì. Nọ́mbà yẹn ṣàlàyé gbogbo ìkùnà: laini náà wà lẹ́yìn carrier-grade NAT, nítorí náà àdírẹ́sì gbangba ní ẹ̀gbẹ́ mi ti ògiri jẹ́ ti olùpèsè. Ohun tí ó tẹ̀lé ni ọ̀nà tí mo gbà láti inú àkójọpọ̀ tí ó rọ̀ yẹn dé iṣẹ́ tí ó ń dáhùn.
Bẹ̀rẹ̀ láti ọ̀dọ̀ abániṣe kí o sì lọ sínú
Kí o tó yí ìlànà kankan padà, jẹ́rìí ibi tí ẹ̀wọ̀n náà ti dúró. Lórí kọ̀mpútà àgbékà mo ṣe dig +short files.example.net mo sì gba àdírẹ́sì VPS padà, èyí yọ DNS àtijọ́ kúrò lórí ẹ̀rọ mi. Lẹ́yìn náà curl -v --connect-timeout 5 files.example.net:5022 parí àkókò dípò kí wọ́n kọ̀ ọ́. Ìyàtọ̀ yìí ṣe pàtàkì: píparí àkókò sábà túmọ̀ sí pé wọ́n ń sọ àwọn pákẹ́tì nù lójú ọ̀nà, nígbà tí ìkọ̀ túmọ̀ sí pé ohun kan dáhùn ó sì sọ rárá.
Ìgbésẹ̀ tí ó tẹ̀lé sínú ni VPS fúnra rẹ̀. ss -ltnp kò fi ohunkóhun hàn tí ó ń gbọ́rọ̀ lórí 5022, èyí tí a retí kí ìlànà DNAT tó wà. Lórí ẹ̀rọ kan náà wg show (tàbí ip -br a show tun0 fún OpenVPN) jẹ́rìí pé peer ilé wà níṣẹ́ pẹ̀lú handshake tuntun. Bí peer kò bá ṣiṣẹ́, kò sí ìlànà NAT tí yóò ràn ọ́ lọ́wọ́, ìmọ́lẹ̀ aláwọ̀ ewé lórí ojú-ìwé VPN ti rótà ilé kò sì túmọ̀ sí nkankan.
Jẹ́rìí pé laini ilé wà lẹ́yìn CGNAT ní tòótọ́
Fi àdírẹ́sì tí rótà náà ń ròyìn lórí interface WAN rẹ̀ wé ohun tí iṣẹ́ ìta ń rí. Ohunkóhun tí ó wà nínú 100.64.0.0/10, ìyẹn láti 100.64.x.x dé 100.127.x.x, jẹ́ ìpín àdírẹ́sì àjọpín láti RFC 6598, a kò sì lè dé ọ̀dọ̀ rẹ̀ láti orí íńtánẹ́ẹ̀tì. Ìparí kan náà ni wàá dé bí rótà bá sọ pé ó ní àdírẹ́sì àdáni déédéé nígbà tí ìwádìí gbangba bá dá ohun tí kò ní í ṣe pẹ̀lú padà. Laini CGNAT lè wá pẹ̀lú àdírẹ́sì gbangba tí ó wà nìkan dé lease tí ó kàn, nítorí náà ìtọ́já pọ́ọ̀tù dàbí ẹni pé ó ń ṣiṣẹ́ wákàtí kan, lẹ́yìn náà ó kú ní ìdákẹ́jẹ́ẹ́.
Àwọn olùpèsè kan ń fúnni ní àdírẹ́sì gbangba gidi, ṣùgbọ́n wọ́n ń dí àwọn pọ́ọ̀tù tí ó ń wọlé 80 àti 443 lórí àwọn àkọsílẹ̀ ilé. Bí iṣẹ́ rẹ bá jẹ́ wẹ́ẹ̀bù nìkan, tí àdírẹ́sì WAN sì jẹ́ gbangba ní tòótọ́, béèrè lọ́wọ́ ẹ̀ka ìtìlẹ́yìn kí o tó kọ́ relay. Bí kò bá rí bẹ́ẹ̀, àpẹẹrẹ tí ó wà nísàlẹ̀ yìí kan náà fún gbogbo pọ́ọ̀tù, ó sì yẹ kí o dá ìdánwò náà dúró ní ẹ̀gbẹ́ rótà: olùtúmọ̀ tí ó wà nínú nẹ́tíwọ́kì olùpèsè máa ń parí ìsopọ̀ kí ó tó dé interface WAN rẹ.
Darí orúkọ náà sí àdírẹ́sì VPS
DNS kì í gbé ìrìnàjò lọ, nítorí náà àkọsílẹ̀ A fún iṣẹ́ náà gbọ́dọ̀ ní àdírẹ́sì gbangba VPS nínú. Àkọsílẹ̀ A tí ó tọ́ka sí 192.168.1.20 ń yanjú lọ́nà tí ó wúlò nìkan fún àwọn abániṣe tí wọ́n ti wà nínú VPN; láti orí íńtánẹ́ẹ̀tì ó ń yanjú sí àdírẹ́sì tí ẹnikẹ́ni kò lè darí. Fún àǹfààní ìṣàkóso VPS fúnra rẹ̀ mo pa orúkọ ọ̀tọ̀ mọ́, kí èmi má baà dàrú nípa irú ẹ̀rọ tí àkọsílẹ̀ kan ń tọ́ka sí.
Bí àti VPS àti ẹ̀rọ ilé bá ń pèsè HTTP, fún kọ̀ọ̀kan ní orúkọ tirẹ̀ kí o sì jẹ́ kí VPS pinnu ẹni tí yóò dáhùn. Kíkó wọn jọ sínú orúkọ kan àti ìrètí pé proxy yóò yan backend tí ó tọ́ ni ọ̀nà kan náà tí o ń gbà parí ọ̀sán kan ní ṣíṣe àtúnṣe àṣìṣe lórí ẹ̀rọ tí kò tọ́.
Pọ́ọ̀tù kan nípasẹ̀ DNAT, fi SSH sílẹ̀ ní 22
Àṣàyàn tààrà ni NAT ìdí ní orí VPS. Tan forwarding fún kérnẹ́lì tí ń ṣiṣẹ́ kí o sì pa àdírẹ́sì ògiri ti sẹ́bà ilé mọ́ nínú ìlànà, kì í ṣe àdírẹ́sì LAN rẹ̀:
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
Fi SSH sí VPS fúnra rẹ̀ ní 22 kí o sì darí pọ́ọ̀tù mìíràn, bíi 5022, sí ẹ̀rọ ilé. Bí o bá darí 22 sí ẹ̀rọ tí ó ti kú, wàá pàdánù ọ̀nà kan ṣoṣo tí ìbá ti tún un ṣe. Ìlànà kan náà kan proxy: pa pọ́ọ̀tù ìṣàkóso VPS mọ́ ní ìta àwọn ìlànà relay.
Jẹ́ kí àwọn ìlànà dúró pẹ́ tí wọ́n bá ń ṣiṣẹ́. Lórí Debian tàbí Ubuntu, apt install iptables-persistent àti lẹ́yìn náà netfilter-persistent save máa ń kọ wọ́n sínú /etc/iptables/rules.v4. Lórí ẹ̀rọ tí ó ní firewalld, ohun tí ó dọ́gba ni ìtọ́já pọ́ọ̀tù tí ó dúró pẹ́ lórí agbègbè, tí ó nílò firewall-cmd --reload kí ó tó wúlò. Àwọn ìlànà tí ó wà nínú ìrántí nìkan máa ń pàdánù ní àkọ́kọ́ ìtúnbẹ̀rẹ̀ ìtọ́jú olùpèsè, sábà ní wákàtí tí kò dára.
Tún ọ̀nà ìpadàbọ̀ ṣe, tàbí yẹra fún àìní rẹ̀
DNAT máa ń kọ ìdí nìkan lẹ́ẹ̀kan sí i. Sẹ́bà ilé ń rí ìsopọ̀ láti àdírẹ́sì abániṣe àkọ́kọ́, bí ọ̀nà àìdábọ̀ rẹ̀ bá sì tọ́ka sí rótà ilé, ìdáhùn náà máa ń jáde nípasẹ̀ WAN ilé níbi tí olùtúmọ̀ olùpèsè ti ń sọ ọ́ nù. Àìdọ́gba yẹn ni ìkùnà kejì tí mo pàdé, lẹ́yìn tí ìlànà DNAT fi hàn bí ẹni pé ó tọ́ pátápátá.
Àtúnṣe méjì ń ṣiṣẹ́. Fún ẹ̀rọ ilé ní ọ̀nà ìmúlò kí ìrìnàjò láti inú ògiri lè padà nípasẹ̀ ògiri:
ip rule add from 10.8.0.2 table 100
ip route add default dev wg0 table 100
Tàbí jẹ́ kí VPS kọ orísun náà padà kí ìdáhùn ní àdírẹ́sì tí ó lè dé, kí conntrack sì yí i padà nígbà tí ó ń jáde:
iptables -t nat -A POSTROUTING -d 10.8.0.2 -p tcp --dport 5022 -j SNAT --to-source 10.8.0.1
Ẹ̀yà SNAT ń fi àdírẹ́sì abániṣe gidi pamọ́ fún sẹ́bà ilé, nítorí náà àwọn àkọsílẹ̀ ohun-èlò ń fi 10.8.0.1 hàn gẹ́gẹ́ bí peer. Gbé àdírẹ́sì àkọ́kọ́ lọ ní ìpele ohun-èlò, tàbí gba pípàdánù àkọsílẹ̀ fún abániṣe kọ̀ọ̀kan, ṣùgbọ́n pinnu í lọ́nà mọ̀ọ́mọ̀ dípò kí o ṣe àwárí rẹ̀ nígbà ìṣẹ̀lẹ̀.
Ṣàyẹ̀wò gbogbo ọ̀nà láti ìta
Jẹ́rìí láti inú nẹ́tíwọ́kì tí kì í ṣe VPS tí kì í sì ṣe ilé: fọ́nù lórí dátà alágbèéká, tàbí shell aṣọṣowọ́pọ̀ níbòmí kan. nc -vz files.example.net 5022 yẹ kí ó ròyìn ìsopọ̀ àṣeyọrí, openssl s_client -connect files.example.net:443 -servername files.example.net sì yẹ kí ó fi ìwé-ẹ̀rí hàn fún orúkọ gbangba. Lẹ́yìn náà ṣàyẹ̀wò ẹgbẹ́ ààbò tàbí odi iná àwọsánmà olùpèsè. Ìlànà DNAT tí kì í rí pákẹ́tì rárá ni wọ́n sábà ń dí ní ìpele kan lókè ẹ̀rọ.
Níkẹyìn, pinnu ohun tí yóò ṣẹlẹ̀ tí ògiri bá ṣubú. Ìlànà DNAT ń tẹ̀síwájú gbígba ìsopọ̀, ó sì ń darí wọn ní ìdákẹ́jẹ́ẹ́ sínú ògiri tí ó ti kú, èyí tí ó dàbí iṣẹ́ tí ó ti bàjẹ́ pátápátá. Àyẹ̀wò ìlera lórí VPS tí ó kọ̀ pọ́ọ̀tù nígbà tí peer kò bá ṣiṣẹ́ ń ná ìlà mélòó kan, ó sì ń gba wákàtí kan tí a ìbá fi ṣe àfojúsùn. Lẹ́yìn náà dá ṣíṣe àtúnṣe àwọn ìlànà dúró kí o sì wò ó fún ọjọ́ kan kí o tó gbẹ́kẹ̀lé e.