Dva uzlazna kanala, jedan tunel, a promet izlazi kroz onaj koji niste odabrali. Privatne podmreže su dostupne, dnevnik prijavljuje uspješnu vezu, a upravo mjerena veza ga nosi. Ništa u izlazu OpenVPN-a ne spominje pristup, jer ga klijent nikada nije odabrao. Otvorio je socket prema udaljenoj adresi i prepustio jezgri da odluči kako do te adrese stići.

Adresa tunela nije krajnja točka

U svakoj sesiji postoje dva različita puta. Vanjski put nosi šifrirani transport do javne adrese poslužitelja. Unutarnji put nosi sve što poslužitelj gura u tunel, a pravila usmjeravanja za jedan ne utječu na drugi.

Unos remote u profilu imenuje vanjsko odredište, pa je to adresa koju treba prikvačiti. 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 doista pozvao

Čitajte živi socket, a ne konfiguracijsku datoteku. Tablica socketa pokazuje peer s kojim se proces doista 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 što 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 veza počne.

Provjerite i obitelj adresa. Profil s dva stoga može se povezati preko IPv6, dok vaš izuzetak pokriva samo IPv4, i tada promet slijedi drugo pravilo od onoga 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.

Prikvačite krajnju točku i pročitajte redoslijed politike

Ruta do hosta specifičnija je od bilo koje zadane. Zato /32 za adresu peera pobjeđuje unutar tablice koja ga sadrži. Uobičajeni oblik izričito navodi pristup 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 tablicu. Pravila politike procjenjuju se po redu i prvo podudaranje odlučuje, pa pravilo koje sve šalje u drugu tablicu zaobilazi vašu rutu do hosta u main. Pročitajte pravila prije nego pretpostavite da je ruta mjerodavna:

ip rule show
ip route get 203.0.113.40

Pitajte drugu naredbu s istom izvornom adresom ili oznakom koju klijent koristi kada politika o njima ovisi. Ona prijavljuje rutu koju bi jezgra odabrala, što je dokaz o pretrazi, a ne dokaz da živi socket koristi taj put.

Kada se krajnja točka pomakne

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 usmjeravanja hosta. Ruta koja postoji samo do sljedećeg restarta test je, a ne popravak.

Držite unutarnju politiku odvojeno

Premještanje vanjskog puta ne daje pristup novoj privatnoj podmreži i ne mijenja koja odredišta poslužitelj gura u tunel. Ruta donjeg sloja bira žicu; gurnute rute biraju što ulazi u tunel. Upravo odvajanje tih dviju odluka čini podjelu predvidljivom.

Ako je cilj samo držati šifrirani transport podalje od mjerene veze, ostavite zadanu rutu na miru i dodajte jedini izuzetak za host. Zamjena strojno široke zadane rute da bi se pomaknula jedna VPN veza kvari svaku drugu aplikaciju na hostu.

Potvrdite rezultat s dva neovisna opažanja: lokalnom adresom i uređajem socketa, i rutom na koju se razrješava privatno odredište. Kada se oboje poklopi 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.

Povezani članci