Chapisha huduma ya LAN kwenye anwani ya lango la VPN yenyewe
Fuatilia mlango uliosafirishwa kutoka kwa mteja hadi kifaa na kurudi: punguza kiwango cha tafsiri ya lengwa, kisha amua kama majibu yanaelekezwa au yanatafsiriwa.
Kuonyesha kifaa cha LAN kwenye mojawapo ya anwani za handaki za lango yenyewe kunahitaji mstari mmoja wa NAT. Muunganisho bado unashindwa, kwa sababu kifaa kinachojibu hakijui kwamba anwani ya mteja inafikiwa kupitia lango hilo. Fuatilia kifurushi kutoka kwa mteja kwenda ndani, kisha fuatilia jibu kurudi nje, na nusu inayokosekana itakuwa dhahiri.
Anza kwa mtazamo wa mteja
Mteja katika mfano huu yuko kwenye bwawa la VPN 10.62.0.0/24 na anajiunga na 10.62.0.1 kwenye mlango 8080. Anwani hiyo ni ya lango yenyewe, kwa hiyo kifurushi kinafika kwenye kiini cha lango badala ya mwenza mwingine. Nyuma ya lango, LAN ni 172.21.4.0/24. Lango linamiliki 172.21.4.10 na kifaa kinachohudumia HTTP kwa kweli ni 172.21.4.40.
Anwani inayomilikiwa na mwenza mwingine wa VPN haibadilishwi na anwani ya huduma ya lango. Ikiwa mteja anajiunga na anwani ya mwenza, hakuna kanuni yoyote ya lango inayohusika kabisa, na safari hii yote ni kesi isiyofaa.
Punguza kiwango cha tafsiri ya lengwa kwa makusudi
Toleo jembamba linaonyesha mlango mmoja na kuandika upya lengwa pekee. Kifurushi kinahifadhi itifaki yake na chanzo chake, na hilo ndilo linalofanya safari iliyobaki ivutie.
iptables -t nat -A PREROUTING -i tun0 -s 10.62.0.0/24 -d 10.62.0.1 -p tcp --dport 8080 -j DNAT --to-destination 172.21.4.40:80
Kanuni isiyo na vigezo vya itifaki na mlango ni toleo pana: inahifadhi mlango wowote ambao mteja alichagua na kubadilisha anwani pekee. Hiyo ni halali wakati mwenyeji mzima anapaswa kuonyeshwa, na si sahihi wakati huduma moja ilikuwa lengo. Soma kanuni tena na uthibitisha jina la kiolesura. Kanuni ya DNAT kwenye kiolesura kisichofaa hailingani na kitu chochote, ambayo hutoa ukomo huo huo wa muda kama kanuni inayokosekana na hupoteza saa moja kukitazama kifaa.
Acha ukingo wa usafirishaji ukubaliane
Tafsiri hubadilisha kichwa, haitoi ruhusa. Kwa sera ya kawaida ya kutupa, mtiririko uliosafirishwa unahitaji idhini yake mwenyewe, na mwelekeo wa kurudi unahitaji kanuni ya muunganisho ulioimarishwa ambayo sera yako inaweza kuwa nayo tayari.
iptables -A FORWARD -i tun0 -o lan0 -d 172.21.4.40 -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Idhini isiyo na masharti kwa kila mtiririko wa DNAT ni pana kuliko ubunifu huu na pia itaruhusu ramani zinazoongezwa baadaye na mtu mwingine. Taja lengwa na mlango, na uache mengine yakiwa yamefungwa. Ikiwa vihesabu kwenye kanuni ya usafirishaji vinabaki sifuri wakati vihesabu vya NAT vinapanda, kifurushi kinatupwa kabla ya kanuni yako. Soma mpangilio wa minyororo badala ya kuongeza nakala ya pili.
Kifaa lazima kijibu kwa namna fulani
Baada ya tafsiri kifaa kinaona chanzo ndani ya 10.62.0.0/24. Jibu lake linaenda kwenye lango lake la kawaida, ambalo ni kipanga njia cha LAN, si lango la VPN, isipokuwa kitu kinamwambia vinginevyo. Mipangilio miwili inarekebisha hilo na si sawa. Njia kwenye kifaa au kwenye kipanga njia cha LAN inatuma 10.62.0.0/24 kwenda 172.21.4.10 ikihifadhi chanzo cha mteja. Tafsiri ndogo ya chanzo huficha mteja nyuma ya anwani ya LAN ya lango badala yake.
ip route add 10.62.0.0/24 via 172.21.4.10 dev eth1
iptables -t nat -A POSTROUTING -s 10.62.0.0/24 -d 172.21.4.40 -o lan0 -p tcp --dport 80 -j SNAT --to-source 172.21.4.10
Chagua kulingana na kile huduma inahitaji. Sera ya kila mteja na kumbukumbu zenye maana zinataka umbo lililoelekezwa; kifaa ambacho hakiwezi kupewa njia, au huduma ambayo lazima ionyeshe anwani ya LAN, huelekeza kwenye umbo lililotafsiriwa. Usikimbilie kanuni ya masquerade ya kimataifa ili jibu moja lifanye kazi. Inaficha kila mteja kutoka kwa kila lengwa na kuvunja kwa utulivu sera zinazotegemea anwani za chanzo.
Usijaribu kutoka kwenye lango yenyewe
Ombi linaloundwa kwenye lango kuelekea 10.62.0.1 hutoka kupitia mnyororo wa OUTPUT, si kupitia PREROUTING inayoingia. Kushindwa au kufanikiwa kwake hakusemi chochote kuhusu kanuni inayoelekea mteja, na hivyo ndivyo watu wanahitimisha kwamba kanuni inayofanya kazi imevunjika.
conntrack -L | grep 172.21.4.40
tcpdump -ni any 'port 8080 or port 80'
Endesha ombi halisi la mteja na usome yote mawili. Ingizo la conntrack linaonyesha tafsiri iliyotumika, na vinaso vinaonyesha kama ombi lilivuka kwenda LAN na kama jibu lilirudi kuelekea handaki. Tumia muunganisho mpya baada ya kubadilisha kanuni, kwa sababu hali iliyopo inahifadhi ramani yake ya awali na itaendelea kushindwa kwa njia ya zamani. Kisha uthibitisha mazungumzo yote: anwani ya kifaa, idhini ya usafirishaji na njia ya jibu zote zinaelezea mtiririko mmoja.