Dva prolaza, jedan VPN: zašto OpenVPN bira pogrešan uzlazni kanal
Tunel je u redu; socket izlazi kroz pogrešan WAN. Pročitajte aktivnu adresu peera, prikucajte rutu do hosta i prvo provjerite pravila politike.
Dva uzlazna kanala, jedan tunel, a saobraćaj izlazi kroz onaj koji niste odabrali. Privatne podmreže su dostupne, dnevnik prijavljuje uspješnu vezu, a upravo mjereni link ga nosi. Ništa u izlazu OpenVPN-a ne spominje prolaz, jer klijent ga nikada nije odabrao. Otvorio je socket prema udaljenoj adresi i prepustio jezgru da odluči kako da do te adrese stigne.
Adresa tunela nije krajnja točka
U svakoj sesiji postoje dva različita puta. Vanjski put nosi šifrovani transport do javne adrese servera. Unutrašnji put nosi sve što server ugura u tunel, a pravila rutiranja za jedan ne utiču na drugi.
Unos remote u profilu imenuje vanjsko odredište, pa je to adresa koju treba prikucati. To je i vrijednost koja se mijenja kada se ime hosta razriješi drugačije ili profil navede više remote unosa.
Pronađite adresu na koju je klijent zaista pozvao
Čitajte živi socket, a ne konfiguracijsku datoteku. Tabela socketa pokazuje peer s kojim se proces zaista povezao, a to je vrijednost s kojom se izuzetak mora poklopiti. Profil se može urediti nakon početka sesije, a socket je jedini dokaz šta je pozvano:
ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"
Linija u dnevniku navodi adresu i port peera u trenutku povezivanja. Ako se ne slaže s profilom, nešto ispred klijenta prepisuje odredište prije nego što veza počne.
Provjerite i porodicu adresa. Profil s dva steka može se povezati preko IPv6, dok vaš izuzetak pokriva samo IPv4, i tada saobraćaj slijedi drugo pravilo od onog koje ste napisali. Isto vrijedi za proxy koji odgovara u ime krajnje točke. Oba slučaja daju tunel koji radi dok vaša ruta ne radi ništa.
Prikucajte krajnju točku i pročitajte redoslijed politike
Ruta do hosta je specifičnija od bilo koje podrazumijevane. Zato /32 za adresu peera pobjeđuje unutar tabele koja ga sadrži. Uobičajeni oblik izričito navodi prolaz i uređaj:
ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0
Ta ruta pomaže samo ako pretraga dosegne tu tabelu. Pravila politike procjenjuju se po redu i prvo poklapanje odlučuje, pa pravilo koje sve šalje u drugu tabelu zaobilazi vašu rutu do hosta u main. Pročitajte pravila prije nego što pretpostavite da je ruta mjerodavna:
ip rule show
ip route get 203.0.113.40
Pitajte drugu komandu s istom izvornom adresom ili oznakom koju klijent koristi kada politika o njima ovisi. Ona prijavljuje rutu koju bi jezgro odabralo, što je dokaz o pretrazi, a ne dokaz da živi socket koristi taj put.
Kada se krajnja točka pomjeri
Ime hosta koje se razrješava na više adresa poništava trajni /32 čim se odgovor promijeni. Profil s više remote linija ima isti problem, jer klijent može sletjeti na bilo koju od njih. Osvježavajte rutu iz klijentovih vlastitih kuka životnog ciklusa umjesto da je dodajete ručno. up skripta koja čita dogovoreni peer i instalira rutu do hosta drži izuzetak usklađen sa stvarnošću, a odgovarajuća down skripta ga uklanja.
Zabilježite osvježavanje na isto mjesto kao i ostatak konfiguracije rutiranja hosta. Ruta koja postoji samo do sljedećeg restarta je test, a ne popravka.
Držite unutrašnju politiku odvojeno
Premještanje vanjskog puta ne daje pristup novoj privatnoj podmreži i ne mijenja koja odredišta server gura u tunel. Ruta donjeg sloja bira žicu; gurnute rute biraju šta ulazi u tunel. Upravo odvajanje te dvije odluke čini podjelu predvidljivom.
Ako je cilj samo držati šifrovani transport podalje od mjerenog linka, ostavite podrazumijevanu rutu na miru i dodajte jedini izuzetak za host. Zamjena mašinski široke podrazumijevane rute da bi se pomjerila jedna VPN veza kvari svaku drugu aplikaciju na hostu.
Potvrdite rezultat s dva nezavisna zapažanja: lokalnom adresom i uređajem socketa, i rutom na koju se razrješava privatno odredište. Kada se oba poklope s vašom namjerom, podjela je stvarna. OpenVPN 2.6 priručnik pokriva opcije remote i lokalnog vezivanja koje odlučuju na koju adresu klijent poziva.