Predstavitev naprave LAN na enem od lastnih naslovov tunela prehoda zahteva samo eno vrstico NAT. Povezava vseeno ne uspe, ker naprava, ki odgovarja, ne ve, da je naslov odjemalca dosegljiv prek tega prehoda. Prehodite paket od odjemalca navznoter, nato prehodite odgovor nazaj navzven, in manjkajoča polovica postane očitna.

Začnite z vidika odjemalca

Odjemalec v tem primeru sedi v sklopu VPN 10.62.0.0/24 in se poveže na 10.62.0.1 na vratih 8080. Ta naslov pripada prehodu samemu, zato paket prispe v jedro prehoda in ne k drugemu partnerju. Za prehodom je omrežje LAN 172.21.4.0/24. Prehod ima 172.21.4.10, naprava, ki dejansko streže HTTP, pa je 172.21.4.40.

Naslov, ki pripada drugemu partnerju VPN, ni zamenljiv z naslovom storitve prehoda. Če se odjemalec povezuje z naslovom partnerja, nobeno pravilo prehoda sploh ni vključeno, in celoten ta sprehod je napačen primer.

Omejite prevajanje cilja namerno

Ozka različica predstavi ena vrata in prepiše samo cilj. Paket ohrani protokol in vir, in prav zato je preostanek sprehoda zanimiv.

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

Pravilo brez meril protokola in vrat je široka različica: ohrani katera koli vrata, ki jih je izbral odjemalec, in spremeni samo naslov. To je zakonito, kadar je treba predstaviti celoten gostitelj, in napačno, kadar je bila namera ena storitev. Preberite pravilo nazaj in potrdite ime vmesnika. Pravilo DNAT na napačnem vmesniku se ne ujema z ničimer, kar ustvari enako časovno omejitev kot manjkajoče pravilo in zapravi uro gledanja v napravo.

Naj se meja posredovanja strinja

Prevajanje spremeni glavo, ne podeli dovoljenja. Pri privzeti politiki zavračanja potrebuje posredovani tok svoje odobritve, povratna smer pa potrebuje pravilo za vzpostavljeno povezavo, ki ga vaša politika verjetno že ima.

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

Brezpogojna odobritev za vsak tok DNAT je širša od te zasnove in bo dovolila tudi preslikave, ki jih pozneje doda nekdo drug. Poimenujte cilj in vrata, ostalo pa pustite zaprto. Če števci na pravilu posredovanja ostanejo na nič, medtem ko števci NAT naraščajo, se paket zavrže pred vašim pravilom. Berite vrstni red verig, namesto da dodate drugo kopijo.

Naprava mora nekako odgovoriti

Po prevajanju naprava vidi vir v 10.62.0.0/24. Njen odgovor gre na privzeti prehod, ki je usmerjevalnik LAN in ne prehod VPN, razen če ji kaj pove drugače. Dve ureditvi to popravita in nista enakovredni. Pot na napravi ali na usmerjevalniku LAN pošlje 10.62.0.0/24 na 172.21.4.10 in ohrani vir odjemalca. Omejeno prevajanje vira pa skrije odjemalca za naslovom LAN prehoda.

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

Izberite glede na to, kaj storitev potrebuje. Politika na odjemalca in smiselni dnevniki želijo usmerjeno obliko; naprava, ki ji ni mogoče dati poti, ali storitev, ki preprosto mora videti naslov LAN, kažeta na prevedeno obliko. Ne seglejte po globalnem pravilu masquerade, da bi en odgovor deloval. Skrije vsakega odjemalca pred vsakim ciljem in tiho zlomi politike, ki so odvisne od izvornih naslovov.

Ne preizkušajte s prehoda samega

Zahteva, ustvarjena na prehodu na 10.62.0.1, izstopi skozi verigo OUTPUT, ne skozi dohodni PREROUTING. Njen neuspeh ali uspeh ne pove ničesar o pravilu, obrnjenem k odjemalcu, in tako ljudje sklepajo, da je delujoče pravilo pokvarjeno.

conntrack -L | grep 172.21.4.40
tcpdump -ni any 'port 8080 or port 80'

Zaženite resnično zahtevo odjemalca in preberite oboje. Vnos conntrack pokaže uporabljeno prevajanje, zajem pa pokaže, ali je zahteva prešla v omrežje LAN in ali se je odgovor vrnil proti tunelu. Po spremembi pravil uporabite novo povezavo, ker obstoječe stanje ohrani prejšnjo preslikavo in bo še naprej neuspešno na stari način. Nato potrdite celoten pogovor: naslov naprave, dovoljenje za posredovanje in pot odgovora opisujejo isti tok.

Sorodni članki