Chapisha lango la mteja wa VPN kutoka nyuma ya CGNAT: orodha ya ukaguzi
Kanuni ya NAT ya lengwa peke yake hutoa miunganisho iliyofunguka nusu. Fanya anwani ya handaki isigee, tafsiri pande zote mbili na uthibitishe njia ya jibu kabla ya kujaribu.
Weka huduma kwenye kompyuta ya mkononi nyuma ya NAT ya kiwango cha mtoa huduma, elekeza kompyuta hiyo kwenye VPS kupitia VPN, na hakuna mtu wa nje anayeweza kuifikia. Unaongeza kanuni ya NAT ya lengwa kwenye VPS na unapata kitu kibaya zaidi kuliko ukimya: miunganisho hufunguka kisha hukwama. Jibu halikosekani, linaondoka kupitia njia chaguo-msingi ya mteja mwenyewe, ambayo inamaanisha seva haioni kamwe. Fanya ukaguzi huu tano kwa mpangilio na usimame kwenye ule wa kwanza usioshikilia.
Thibitisha kuwa seva itasambaza hata kidogo
Weka alama kwenye kisanduku hiki kabla ya kuandika tafsiri moja. Kanuni ya DNAT kwa pakiti ambayo kernel inakataa kuisambaza inakubaliwa na kichanganuzi cha kanuni kisha hutupwa na njia ya usambazaji, jambo ambalo hutoa muda wa kusubiri unaoonekana kama tatizo la firewall.
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
Kuiweka kwenye kernel inayofanya kazi si sawa na kuiweka kwa muda wa kuwasha upya. Andika net.ipv4.ip_forward=1 kwenye faili chini ya /etc/sysctl.d/, endesha sysctl --system, kisha soma thamani tena badala ya kuamini kuwa faili ilichukuliwa. Kontena linalosimamia nafasi yake ya majina ya mtandao linahitaji thamani hiyo hiyo ndani ya nafasi hiyo, si kwenye mwenyeji peke yake.
Ikiwa usomaji wa marudio bado ni sifuri, simama hapa. Hakuna kitu chini kitakachofanya kazi.
Fanya anwani ya handaki isigee kabla kanuni yoyote kuirejelea
Bwawa hugawanya anwani kwa mpangilio wa miunganisho, kwa hivyo kanuni iliyoandikwa kwa kukodisha kwa leo inaweza kuonyesha kwa utulivu mteja mwingine wiki ijayo. Funga anwani hiyo na utambulisho wa cheti badala ya mpangilio wa kuwasili.
client-config-dir /etc/openvpn/ccd
ifconfig-push 10.77.0.14 10.77.0.13
Jozi hiyo ni mwisho wa mteja na mwisho wa mwenza wa handaki la nukta-hadi-nukta, na seva imefungwa kwa jina la kawaida la cheti. Katika topolojia ya mtandao mdogo thamani ya pili husomwa kama kifuniko cha mtandao badala yake, kwa hivyo andika umbo linalolingana na topolojia inayotumika. Kisha unganisha tena mteja na soma anwani kwenye mteja mwenyewe, kwa sababu mtazamo wa seva kuhusu bwawa si uthibitisho wa kile mteja alisanisha.
Ikiwa anwani inabadilika baada ya kuunganisha tena, simama. Kanuni ya NAT inayofuata lengo linalosogea itashindwa mara kwa mara na haitakufundisha chochote.
Tafsiri pande zote mbili
Tafsiri ya lengwa hutuma pakiti inayoingia kwa mteja. Tafsiri ya chanzo ndiyo inayomfanya mteja amjibu seva badala ya mtumaji wa awali, na ndiyo kanuni ambayo watu huiacha.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 29443 -j DNAT --to-destination 10.77.0.14:29443
iptables -t nat -A POSTROUTING -d 10.77.0.14 -p tcp --dport 29443 -j SNAT --to-source 10.77.0.13
Bila kanuni ya pili mteja hujibu kupitia kiungo chake cha juu cha ISP, kwa hivyo mwenza wa mbali huona anwani ya chanzo ambayo hakuwahi kuzungumza nayo, wakati seva haina kumbukumbu yoyote ya ufuatiliaji kwa jibu. Mtazamaji wa nje huona usalimiano unaokamilika nusu, na hiyo ndiyo dalili inayowapeleka watu kutafuta hitilafu ya firewall ambayo haipo.
Soma kanuni zote mbili tena kwa iptables -t nat -S na uthibitishe kuwa jina la kiolesura ni lile linalobeba anwani ya umma. Kwenye mwenyeji anayechuja tayari kwa nftables, andika tafsiri kwenye mnyororo wa NAT wa nftables wa familia ya anwani inayolingana badala ya kuchanganya zana.
Acha jedwali la vichujio lipite
Majedwali ya NAT huandika upya vichwa; hayatoi ruhusa. Kwa sera chaguo-msingi ya DROP mtiririko unaosambazwa unahitaji idhini yake mwenyewe, pamoja na mwelekeo wa kurudi ambao sera nyingi tayari huufunika kwa kanuni ya established,related.
iptables -A FORWARD -i eth0 -o tun0 -p tcp --dport 29443 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Angalia sera ya mnyororo wa FORWARD kabla ya kuongeza chochote, kwa sababu mpangilio wa DROP ya mapema huamua ikiwa kanuni yako itashauriwa kabisa. Kwenye mwenyeji ambaye uchujaji wake unaishi nftables, ongeza kanuni inayolingana kwenye ndoano ya forward ya jedwali la inet na uthibitishe kuwa mnyororo msingi unaona kweli trafiki inayosambazwa na si tu pembejeo la ndani. Ikiwa kihesabu cha pakiti kwenye kanuni mpya kinabaki sifuri wakati vihesabu vya NAT vinapanda, pakiti inatupwa kabla ya kanuni yako. Hiyo ni ishara ya kusoma mpangilio wa minyororo, si kuongeza nakala ya pili ya kanuni hiyo hiyo.
Thibitisha hilo kutoka mtandao wa nje
Jaribu kutoka mtandao usiohusiana. Uchunguzi kutoka mashine nyingine kwenye LAN moja unaweza kupita kupitia msaada wa hairpin NAT na haufanyi kamwe njia ambayo mteja wa mbali hutumia, kwa hivyo matokeo ya kijani hapo huthibitisha kitu kibaya.
tcpdump -ni any port 29443
conntrack -L | grep 29443
Endesha ukamataji kwenye seva na kwa mteja kwa wakati mmoja. Ukamataji wa seva huonyesha ikiwa pakiti iliyotafsiriwa inaondoka kuelekea handaki; ukamataji wa mteja huonyesha ikiwa ombi linafika na jibu limeelekezwa wapi. Kumbukumbu ya tafsiri katika conntrack -L huthibitisha kuwa kanuni ililingana, na kutokuwepo kwake huthibitisha kuwa pakiti haikufika kamwe kwenye mnyororo wa NAT.
Vichanganuzi vya lango ni ushahidi hafifu. Huripoti lango kama limefungwa hadi programu ifungwe na kusikiliza, kwa hivyo tumia muunganisho halisi kwa huduma halisi. Linapofanya kazi hatimaye, weka mfiduo kwenye lango hilo moja: kusambaza SSH au paneli ya msimamizi kwa sababu kanuni ya kwanza ilionekana isiyofaa ni uamuzi mkubwa zaidi kuliko kuchapisha huduma.