Vaš tunel je vzpostavljen, storitev posluša, pisarniško omrežje LAN pa še vedno ne dobi ničesar nazaj. Nihče ni pokvaril VPN. Z vidika omrežja LAN naslov tunela prenosnika ne obstaja, dokler nekaj ne pove omrežju LAN, kako priti do njega, in odgovor se mora vrniti po isti poti, po kateri je šla zahteva. Videl sem ljudi, ki so trikrat znova zgradili povsem zdrav tunel, preden je kdo pogledal povratno pot.

Ni se pokvaril tunel

Oba konca sedita v zasebnih obsegih, kar je običajen primer in ne napačna konfiguracija. Naslov, kot je 10.8.0.6, je znotraj tunela resničen in drugje ne obstaja, zato omrežje LAN nima razloga, da bi tja kaj pošiljalo. Preden se dotaknete usmerjanja, potrdite, da je storitev sploh dosegljiva znotraj tunela: na odjemalcu ss -ltn pokaže, ali se poslušalec veže na 127.0.0.1, na vmesnik LAN ali na naslov tunela. Demon, vezan samo na loopback, ne odgovori nikomur razen sebi, in tega ne spremeni nobena pot, DNAT ali preusmeritev vrat.

Posrednik na vratih 80 ali 443 je drugo orodje z drugo vidnostjo. Premika zahteve, ne pakete, zato je napačna plast za surovo povezavo z bazo podatkov, in prav poseganje po njem je pot, po kateri ta težava konča tri orodja globoko, preden kdo karkoli izmeri.

Oblika poti: povejte omrežju LAN, kje je bazen

Statična pot na prehodu omrežja LAN je najčistejši odgovor, ko se omrežje LAN in bazen tunela ne prekrivata. Usmerite bazen na stroj, ki zaključi tunel:

ip route add 10.8.0.0/24 via 192.168.1.12
route add -p 10.8.0.0 mask 255.255.255.0 192.168.1.12   # Windows, persistent

To popravi samo eno smer, zato so na pol dokončane različice te spremembe videti kot napredek. Stran tunela potrebuje ustrezno polovico, sicer odgovor zapusti odjemalca po njegovi lastni privzeti poti in na poti umre:

push "route 192.168.1.0 255.255.255.0"

Za podomrežje, ki stoji za enim odjemalcem in ne za strežnikom, strežnik potrebuje sistemsko pot in vnos iroute v datoteki tega odjemalca pod client-config-dir. Brez iroute OpenVPN ve, da predpona obstaja, in nima pojma, kateri odjemalec jo ima v lasti: paketi prihajajo in demon nima s čim, da bi jih uskladil.

Tu je mit, ki si zasluži ime. Pot naredi naslov dosegljiv; ne naredi druge strani pripravljene odgovoriti. Partnerji med lokacijami dodajo še eno plast, ker oddaljeni prehod sprejema samo vire znotraj predpon iz svoje politike, prenosnik, ki prihaja iz domačega bazena, pa ni v njih.

Oblika NAT: DNAT navznoter in vrstica SNAT, ki jo vsi izpustijo

Ko se prehoda omrežja LAN ne morete dotakniti ali želite objaviti natanko ena vrata, prevajanje na gostitelju VPN deluje brez kakršne koli poti v omrežju LAN. Objavite vrata, jih posredujte in prevedite vir na poti v tunel:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -i eth0 -o tun0 -p tcp -d 10.8.0.6 --dport 3000 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -d 10.8.0.6 -p tcp --dport 3000 -j SNAT --to-source 10.8.0.1

Tretja vrstica je tista, ki izgine. Izpustite jo in odjemalec vidi prvotni naslov LAN kot vir, odgovori po svoji privzeti poti in ta odgovor gre v tunel, namesto nazaj proti omrežju LAN. Ali povezava preživi, je potem odvisno od usmerjanja, ki ga niste nikoli načrtovali. S SNAT odjemalec vidi naslov tunela strežnika, zato odgovor sledi tunelu nazaj do edinega gostitelja, ki lahko prevajanje razveljavi.

Potrošniška programska oprema uporablja svoja imena verig in tega prevajanja ne ustvari namesto vas. Na Tomato vhodno pravilo pade v WANPREROUTING in nato v verigo filtriranja, kot je wanin, in nabor pravil, ki je videti popoln, še vedno potrebuje ročno vrstico POSTROUTING. To ni napaka vdelane programske opreme; to je nabor pravil, napisan samo za vhodni promet.

Zakaj pravilno videti pravilo paket vseeno zavrže

Večina teh napak ni v pravilu, v katero strmite. Preverite štiri stvari v tem vrstnem redu in se ustavite pri prvi, ki ne velja:

  • Vrstni red verig. iptables -I vstavi na vrh, -A pa doda na konec, zato prejšnje dovoljujoče ali blokirajoče pravilo odloči prvo.
  • Napačna veriga. Promet, naslovljen na sam usmerjevalnik, gre skozi INPUT, posredovani promet pa se je nikoli ne dotakne. Objava ene storitve lahko zahteva pravila v obeh.
  • Zastavice smeri. -i tun0 se ujema s prometom, ki prihaja od odjemalcev, -o tun0 pa s prometom, ki gre proti njim. REJECT z napačno zastavico blokira nekaj, česar niste nameravali.
  • Omejitev vira. Posredovanje, ki sprejme en naslov odjemalca, deluje od tega odjemalca in vsak drug vir zavrže brez besede.

Pravilo z ničelnim števcem paketov sploh ni na poti, in branje števcev je najhitrejši način, da ločite težavo napačne verige od težave napačnega pravila.

Lokalno posredovanje, ko v omrežju LAN ni mogoče ničesar spremeniti

Lokalno posredovanje SSH se izogne celotnemu vprašanju. Ne potrebuje poti v omrežju LAN, sodelovanja požarnega zidu odjemalca in nikjer objavljenih vrat:

ssh -N -f -L 3000:10.8.0.6:3000 user@vpn-host

Storitev se nato pojavi na localhost:3000 stroja, ki drži tunel, in nikjer drugje. To je meja: ena delovna postaja, ena vrata, in posredovanje umre s sejo, razen če ga nekaj znova zažene. Za skrbnika, ki preverja testno bazo podatkov, je to pravo orodje. Za kamero ali optični bralnik, do katerih morajo priti drugi ljudje, ni, ker bi vsak uporabnik potreboval svoje posredovanje.

Preden dodate še eno pravilo, preverite obe smeri

Prevajanje pušča sledi, in branje le-teh je bolje kot ugibanje. Na gostitelju VPN conntrack -L pokaže, ali je do prevajanja sploh prišlo, iptables -t nat -L -n -v pokaže, ali so se števci premaknili, tcpdump -ni any port 3000 pa pokaže, kateri naslov vira je v resnici prispel. Na odjemalcu ss -ltn potrdi, da je poslušalec na naslovu, ki ga tunel lahko doseže.

Nato izberite obliko, ki jo obdržite. Ena objavljena vrata, pot za celoten bazen in posredovanje za enega skrbnika so tri različne zaveze, in njihovo mešanje je pot, po kateri delujoča nastavitev postane taka, da je pol leta kasneje nihče ne zna razložiti. Zapišite, kateri naslov je od kod dosegljiv, in naslednja oseba, ki bo to razhroščevala, začne pri odgovoru namesto pri tunelu.

Sorodni članki