Paket za 10.77.20.0/24 donosi dvije odvojene odluke na OpenVPN serveru: operativni sistem ga mora predati VPN interfejsu, a OpenVPN mora znati koji povezani klijent posjeduje taj prefiks. Nedostajuća kernel ruta ga odbacuje prije tunela, a nedostajuća peer ruta poslije njega. Oba kvara izgledaju isto s udaljenog LAN-a, a dijagnostika koji imate traži po jednu komandu sa svake strane.

U klasičnoj korisničkoj putanji podataka kernel ruta ubacuje paket u tunelski proces, a iroute govori tom procesu koji peer treba da ga primi. Nijedna ne zamjenjuje drugu, a konfiguracija sa samo jednom od njih izgledat će razumno sve do prvog pinga.

Dvije odluke, a ne jedna ruta

Zamislite vezu između lokacija gdje 10.77.20.0/24 stoji iza jednog klijenta. Kernel ruta servera, na primjer ip route add 10.77.20.0/24 dev tun0, šalje odgovarajuće pakete tunelskom uređaju. OpenVPN zatim pregleda vlastitu internu tabelu, izgrađenu od iroute unosa u direktoriju konfiguracije klijenta, da odluči koja peer veza će ih primiti. Bez kernel rute paket nikada ne stigne do procesa, a bez peer rute stigne do procesa i ne ode nikuda.

Tu podjelu je lako zaboraviti, jer jedan red rute u profilu klijenta može izgledati kao da obavlja oba posla. Ne obavlja: guranje rute govori klijentima šta slati kroz tunel, dok iroute govori serveru ko posjeduje raspon adresa iza klijenta. Žive u različitim datotekama, čitaju ih različite strane i padaju u suprotnim smjerovima.

Gdje iroute pripada i šta kaže

Unos ide u datoteku za pojedinačnog klijenta nazvanu po common_name klijenta, unutar client-config-dir, kao iroute 10.77.20.0/24. Podudaranje imena datoteke nije kozmetičko: OpenVPN traži autentificirani identitet i čita datoteku s tačno tim imenom, pa datoteka site-a djeluje samo za klijenta čije je uobičajeno ime site-a. Dodajte ccd-exclusive ako klijente bez takve datoteke treba odmah odbiti, što je ispravna postavka kada je svaki klijent mrežni gateway lokacije. Držite jednu datoteku po gatewayu i nazovite je po subjektu certifikata koji zaista izdajete.

Testirajte unos sa servera prije nego okrivite udaljeni LAN. Statusna datoteka navodi povezane klijente s njihovim uobičajenim imenima, a server pokrenut s --verb 4 bilježi instalaciju iroute kada se peer poveže. Ako se pri povezivanju ništa ne pojavi, datoteka je u pogrešnom direktoriju ili imenuje pogrešan identitet.

Zamka: datoteka postoji, identitet je pogrešan

Ispravno izgledajući iroute vezan za pogrešan peer gubi više vremena od nedostajuće datoteke, jer sve na disku izgleda ispravno. Preimenovanje certifikata, duplicirana uobičajena imena i username-as-common-name koji mijenja efektivni identitet sve to proizvode. Provjerite koji je identitet server autentificirao, a ne koji ste očekivali: statusni izlaz je mjerodavan, dok je ime datoteke samo ključ za pretragu.

Ruta može nadživjeti svog vlasnika. Statičke rute i iroute unosi opisuju prefiks, a ne garanciju dostupnosti, pa se saobraćaj može nastaviti usmjeravati ka peeru koji je trenutno isključen.

Dovršite putanju iza peera

Vlasništvo nad peerom je sredina putanje, a ne kraj. Klijent mora prosljeđivati pakete iz tunela u svoj LAN, što znači da je na tom hostu omogućeno IP prosljeđivanje i da pravilo firewalla dopušta prolaz. Hostovi na udaljenom LAN-u trebaju povratnu putanju za adresu tunela: ili rutu koja pokazuje natrag na gateway, ili namjerno dizajniran NAT na strani klijenta. Potvrdite postavku prosljeđivanja na klijentu pomoću sysctl net.ipv4.ip_forward umjesto da pretpostavljate zadano distribucije.

Ako drugi VPN klijenti moraju dosegnuti tu podmrežu, raspored ponovno raste: server treba client-to-client, a ti klijenti moraju usmjeriti prefiks kroz tunel. Ništa od toga ne proizlazi iz serverove vlastite tablice ruta.

Provjerite jedno odredište s pravog izvora, a ne sa samog servera. Ping s nepovezanog LAN hosta na host iza klijenta vježba povratnu putanju, pravilo prosljeđivanja i vlasništvo nad peerom u jednom potezu, dok uspješan handshake dokazuje samo identitet. Zatim odspojite vlasničkog peera i zabilježite šta ruta radi, jer taj odgovor je vaš način kvara.

Povezani članci