Dva prehoda, en VPN: zakaj OpenVPN izbere napačno izhodno povezavo
Tunel je v redu; vtičnica izhaja skozi napačen WAN. Preberite aktivni naslov partnerja, pripnite pot do gostitelja in najprej preverite pravila politike.
Dve izhodni povezavi, en tunel in promet izhaja skozi tisto, ki je niste izbrali. Zasebna podomrežja so dosegljiva, dnevnik poroča o uspešni povezavi, in prav merjena povezava jo prenaša. Nič v izhodu OpenVPN ne omenja prehoda, ker odjemalec nikoli ni izbral nobenega. Odprl je vtičnico na oddaljeni naslov in jedru prepustil odločitev, kako doseči ta naslov.
Naslov tunela ni končna točka
V vsaki seji obstajata dve različni poti. Zunanja pot prenaša šifriran promet do javnega naslova strežnika. Notranja pot prenaša vse, kar strežnik potisne v tunel, in pravila usmerjanja za eno ne vplivajo na drugo.
Vnos remote v profilu poimenuje zunanji cilj, zato je to naslov, ki ga je treba pripeti. To je tudi vrednost, ki se spremeni, ko se ime gostitelja razreši drugače ali profil navaja več vnosov remote.
Poiščite naslov, na katerega je odjemalec res poklical
Berite živo vtičnico, ne konfiguracijske datoteke. Tabela vtičnic prikazuje partnerja, s katerim se je proces res povezal, in to je vrednost, ki se ji mora izjema ujemati. Profil je mogoče urejati po začetku seje, vtičnica pa je edini dokaz o tem, na kaj je bilo klicano:
ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"
Vrstica v dnevniku navaja naslov in vrata partnerja v trenutku povezave. Če se ne ujema s profilom, nekaj pred odjemalcem prepisuje cilj, preden se povezava začne.
Preverite tudi družino naslovov. Profil z dvema skladoma se lahko poveže prek IPv6, medtem ko vaša izjema pokriva le IPv4, in takrat promet sledi drugemu pravilu od tistega, ki ste ga napisali. Enako velja za proxy, ki odgovarja v imenu končne točke. Oba primera dajeta tunel, ki deluje, medtem ko vaša pot ne naredi ničesar.
Pripnite končno točko in preberite vrstni red politike
Pot do gostitelja je bolj specifična od katere koli privzete poti. Zato /32 za naslov partnerja zmaga v tabeli, ki ga vsebuje. Običajna oblika izrecno navaja prehod in napravo:
ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0
Ta pot pomaga le, če iskanje doseže to tabelo. Pravila politike se ocenjujejo po vrstnem redu in prvo ujemanje odloči, zato pravilo, ki pošlje vse v drugo tabelo, obide vašo pot do gostitelja v main. Preberite pravila, preden domnevate, da je pot merodajna:
ip rule show
ip route get 203.0.113.40
Vprašajte drugi ukaz z istim izvornim naslovom ali oznako, ki jo odjemalec uporablja, ko je politika odvisna od njih. Poroča pot, ki bi jo jedro izbralo, kar je dokaz o iskanju in ne dokaz, da živa vtičnica uporablja to pot.
Ko se končna točka premakne
Ime gostitelja, ki se razreši na več naslovov, razveljavi trajni /32 takoj, ko se odgovor spremeni. Profil z več vrsticami remote ima isto težavo, ker lahko odjemalec pristane na kateri koli od njih. Osvežite pot iz lastnih kljuk življenjskega cikla odjemalca, namesto da jo dodajate ročno. Skript up, ki bere dogovorjenega partnerja in namesti pot do gostitelja, drži izjemo usklajeno z resničnostjo, ustrezni skript down pa jo odstrani.
Osvežitev zabeležite na istem mestu kot preostalo konfiguracijo usmerjanja gostitelja. Pot, ki obstaja le do naslednjega zagona, je preizkus, ne popravek.
Notranjo politiko hranite ločeno
Premikanje zunanje poti ne daje dostopa do novega zasebnega podomrežja in ne spremeni, katere cilje strežnik potisne v tunel. Pot spodnjega sloja izbere žico; potisnjene poti izberejo, kaj vstopi v tunel. Prav ločevanje teh dveh odločitev naredi delitev predvidljivo.
Če je cilj le obdržati šifriran promet stran od merjene povezave, pustite privzeto pot pri miru in dodajte edino izjemo za gostitelja. Zamenjava sistemske privzete poti zaradi premikanja ene povezave VPN pokvari vsako drugo aplikacijo na gostitelju.
Rezultat potrdite z dvema neodvisnima opažanjema: lokalnim naslovom in napravo vtičnice ter potjo, v katero se razreši zasebni cilj. Ko se oba ujemata z vašim namenom, je delitev resnična. Priročnik OpenVPN 2.6 pokriva možnosti remote in lokalne vezave, ki določijo, na kateri naslov odjemalec kliče.