Gdje pripada ruta u OpenVPN-u: klijentu ili serveru?
Gola ruta u serverskoj konfiguraciji mijenja server, a ne klijenta. Odaberite klijentsku datoteku, globalni push ili push za pojedinačnog klijenta i provjerite šta je stiglo.
Dodate route 10.60.0.0 255.255.255.0 u konfiguraciju servera, restartujete, ponovo povežete laptop, a podmreža je i dalje nedostupna s tog laptopa. Linija je prihvaćena, servis je čisto startovao i ništa u logu ne izgleda pogrešno. Desilo se to da je ruta instalirana na mašini koju ste uredili: gateway sada vjeruje da može dosegnuti taj prefiks, dok klijentu ništa nije rečeno. Postavljanje je cijelo pitanje, a postoje četiri mjesta na kojima ista linija može živjeti.
Četiri mjesta i ko prima svako od njih
Ruta se može dodati vlastitom konfiguracijom klijenta, ponuditi svakom klijentu kroz globalni push, ponuditi jednom klijentu kroz datoteku za određenog klijenta ili upisati u vlastiti kontekst rutiranja servera.
Ta četiri slučaja koriste gotovo identičnu sintaksu i daju potpuno različite rezultate. Prva tri utiču na to šta klijent šalje u tunel; četvrti utiče na to kako server doseže mrežu, što je korisno kada samom serveru treba putanja, a štetno kada se to pobrka s distribucijom.
Odlučite koje od četiri želite prije nego što napišete liniju, pa potvrdite primaoca.
| Placement | Effect | Receiver |
|---|---|---|
| Client profile route | Installed by the client at connect | That client only |
Global push "route ..." | Sent to every client that accepts pushed options | All pulling clients |
| Client-specific push | Sent to the matching client context | One identity |
| Server config route, no push | Added to the server's own table | The gateway itself |
Zašto gola serverska ruta iznenađuje ljude
Serverska konfiguracija je prvo mjesto u koje administratori gledaju, a direktiva rute tamo se čita kao izjava o VPN mreži. Nije. OpenVPN je tretira kao lokalnu instalaciju rute na mašini na kojoj radi demon, što je upravo ista vrsta promjene koju biste napravili s ip route i zatim zaboravili.
Distribucija zahtijeva da ruta bude poslana kroz push, a push zahtijeva da je klijent povuče. Klijent pokrenut s onemogućenim povučenim opcijama potpuno ignorira ponudu. Provjerite oba kraja tog rukovanja prije nego što prepišete serversku datoteku, jer se serverski log neće žaliti: sa njegove strane ponuda je poslana. Prihvaćena ruta takođe stupa na snagu tek pri sljedećem povezivanju, nikad u sesiji u kojoj već jeste.
Kad dvije operacije vidite kao odvojene, kvar prestaje biti tajanstven: server doseže prefiks, klijent ne može, a obje tvrdnje su istovremeno tačne.
Datoteke za pojedinačne klijente i identitet koji odgovaraju
Datoteka za određenog klijenta naziva se po identitetu koji je server autentificirao, a to je po defaultu uobičajeno ime certifikata. Prijateljsko ime veze u desktop klijentu nije ta vrijednost, a nepodudaranje stvara datoteku koja se nikad ne čita.
Provjerite direktorij koji server stvarno koristi, pa potvrdite da ime datoteke tačno odgovara autentificiranom identitetu, uključujući velika i mala slova.
grep -n 'client-config-dir' /etc/openvpn/server/server.conf
ls -l /etc/openvpn/ccd/Unutar te datoteke ruta se ipak mora poslati kroz push, jer kontekst pojedinačnog klijenta je skup opcija primijenjenih na sesiju tog klijenta, a ne lokalna tabela rutiranja. Gola ruta tamo ima isti problem kao gola ruta u globalnoj datoteci.
Klijentova vlastita datoteka i alat koji njome upravlja
Ruta smještena u klijentsku konfiguraciju instalira se kada se taj klijent poveže i uklanja kada se odspoji, što je ispravan životni ciklus za statično odredište.
Ako profilom upravlja mrežni menadžer, on može jednom uvesti te opcije i zatim čuvati svoju kopiju. Uređivanje preuzete datoteke kasnije ništa ne mijenja, a to je čest izvor fraze "ruta postoji ali se ne primjenjuje".
Provjerite aktivni profil, a ne datoteku koju ste preuzeli, i provjerite uvezene postavke koje menadžer prikazuje. Zatim se povežite i pitajte sistem koju putanju koristi određena adresa, umjesto da pretpostavite da je tunel pobijedio jer je ruta postojala u tekstualnoj datoteci.
Provjerite na klijentu, pa provjerite povratnu putanju
Pitajte klijentovu vlastitu tabelu rutiranja za odredište, a ne serversku. Pretraga za jednim hostom unutar prefiksa dovoljna je da pokaže interfejs i sljedeći hop koji će se koristiti.
ip route get 10.60.0.10Ako pretraga pokazuje na tunel, distribucija je radila i preostali problem je negdje drugdje. Ako pokazuje na default gateway, ruta nije instalirana, filtrirana je opcijom na strani klijenta ili pripada profilu koji klijent ne koristi.
Pretpostavite da je distribucija radila, a ništa ne odgovara: tada provjerite prosljeđivanje na gatewayu, povratnu rutu suprotne strane i bilo koji firewall između njih. Ruta bira putanju, ona ne daje pristup.