Zašto server iza VPN klijenta odgovara kroz tunel
Dolazne veze ne uspijevaju kada odgovori slijede zadani put VPN-a umjesto putanje dolaska. Usmjeravanje po politici ili NAT izvora vraća povratni put.
Dolazne veze prema hostu koji također pokreće VPN klijent ne uspijevaju na vrlo specifičan način: rukovanje stigne, daemon odgovori, a klijent ne dobije ništa natrag. Ništa ne blokira port. Odgovor je otišao kroz tunel, jer tunel posjeduje zadanu rutu i jezgro usmjerava odgovore prema odredištu, a ne prema pamćenju odakle je zahtjev došao. Daemon je ispravan i port je otvoren.
Odgovor se usmjerava, ne pamti
VPN klijent koji postavi zadanu rutu dodaje unos koji nadmašuje LAN gateway, bilo metrikom bilo dijeljenjem prostora na dvije preciznije polovine. Odlazni paketi sada biraju sučelje tunela. Jezgro nikada ne pita odakle je paket koji se odgovara izvorno stigao. Taj jedini propust objašnjava svaki sljedeći simptom.
Smjer naprijed usmjerava se prema odredištu, kao i obrnuti smjer. Odgovor je adresiran na javnog klijenta, kojeg će tunel rado prenijeti. Drugi kraj primi paket čiji izvor ne posjeduje, odbaci ga, a originalni klijent čeka dok ne istekne vrijeme.
Strogo filtriranje obrnutog puta može odbaciti dolazni paket prije nego što ga daemon uopće pročita. Prvo provjerite taj brojač, jer filtrirano odbacivanje i greška usmjeravanja izvana izgledaju identično.
ip route show default sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter nft list ruleset | grep -A3 'hook forward'
Prva naredba pokazuje koja zadana ruta trenutno pobjeđuje. Druga izvještava primjenjuje li se strogo filtriranje globalno ili po sučelju, a treća pokazuje svako pravilo u lancu prosljeđivanja koje može biti uključeno.
Tri načina da zadržite povratni put
Isključivanje odredišta usluge iz tunela najuža je opcija. Ruta hosta usmjerena na LAN gateway, plus daemon vezan na fizičku adresu umjesto na svaku adresu, drži taj jedan tok izvan tunela. Promjena je lokalna i lako se poništava.
Usmjeravanje po politici opći je odgovor. Pravilo vezano za adresu izvora ili za oznaku vatrozida bira tablicu čija zadana ruta pokazuje na WAN gateway, dok vlastite veze hosta nastavljaju koristiti tunel. Držite prioritet eksplicitnim da pravilo kasnije ne bude zasjenjeno.
ip rule add from 203.0.113.25/32 table 100 priority 100 ip route add default via 192.0.2.1 dev eth0 table 100 ip route get 198.51.100.7 from 203.0.113.25
Prve dvije naredbe grade alternativni put za odgovore s javne adrese. Treća pita jezgro kojim bi putem išao točno taj izvor i odredište, i tako potvrđujete da pravilo ima ikakav učinak.
Prevođenje izvora treća je opcija i jedina koja preživljava usmjerivač koji već radi NAT ispred usluge. Odgovor se mora vratiti tom usmjerivaču, a maskiranje na WAN sučelje to postiže skrivajući klijenta iz zapisnika usluge. Ručna zamjena zadane rute nakon povezivanja dijagnostika je, jer klijent prepisuje tablicu pri sljedećem ponovnom povezivanju.
Kada kutija usmjerava i za LAN
Ista greška pojavljuje se jedan skok dalje kada host usmjerava za uređaje iza sebe. Dolazna veza prosljeđuje se unutarnjem uređaju čiji je jedini povratni put tunel, a odgovor stiže vanjskom klijentu s adrese pružatelja. Unutarnji uređaj cijelo vrijeme radi ispravno.
Praćenje veza tada vidi odgovor za tok koji nikad nije zabilježilo i odbacuje ga. Prevođenje odredišta dostavlja dolaznu vezu uređaju, a prevođenje izvora čini da odgovor izgleda kao da dolazi od samog usmjerivača.
Politička ruta koja zadržava proslijeđeni port na WAN-u dok vlastiti promet usmjerivača koristi tunel čišći je ekvivalent. Bez prevođenja izvora odgovor je adresiran na vanjskog klijenta, a unutarnji uređaj uopće nema rutu za tu adresu.
Tri probe koje razdvajaju uzroke
Provedite tri probe: vezu u kutiju s interneta, vezu iz nje prema javnom hostu i traženje naziva. Kada se prve dvije razilaze, kriv je povratni put. Kada nazivi ne uspiju u oba smjera, razrješivač je druga greška koja samo dijeli tunel.
Prvo riješite pitanje usmjeravanja, pa pogledajte nazive. Miješanje to dvoje način je da se ispravan server okrivi za pokvaren razrješivač.
Zabilježite koje sučelje izuzetak imenuje i držite konfiguraciju pod kontrolom verzija. Pravilo napisano prema sučelju koje se preimenuje nakon nadogradnje prolazi danas i pada nakon sljedećeg restarta.