Váš profil OpenVPN na Androide nepridá trasu, pretože telefón nemá adresu na virtuálnom rozhraní, takže nie je na čo, aby trasa ukazovala. Trasy odpovedajú len na to, kam majú pakety ísť. Adresa tunela odpovedá na to, kým je telefón vnútri tunela, a klient ju musí dodať skôr, než rozhranie môže vzniknúť. Prejdite štyri kontroly nižšie v poradí a zastavte sa na prvom zlyhaní, pretože úprava trás pred vznikom adresy skrýva skutočný problém.

Čítajte zlyhanie v poradí, v akom ho klient vykonáva

VpnService.Builder v Androide drží dva pojmy oddelene: addAddress() vkladá adresu na rozhranie, ktoré aplikácia stavia, addRoute() pridáva cieľový prefix a establish() odmieta vytvoriť rozhranie, kým nie je pridaná aspoň jedna adresa. Klient OpenVPN mapuje profil a možnosti, ktoré posiela server, presne na tieto volania, takže spojenie, ktoré nikdy neanalyzuje adresu, nemôže rozhranie vôbec postaviť.

Preto riadok protokolu, ktorý čítate, môže uvádzať trasu, hoci príčina je o krok skôr. Klient sa dostane k fáze trasy až po tom, čo rozhranie existuje; bez adresy volanie trasy okamžite zlyhá alebo sa nikdy nevykoná. Keď protokol hovorí, že trasu nemožno pridať, začnite adresou a nie syntaxou trasy.

Kontrola 1: vkladá server adresu do odpovede?

V smerovanej službe OpenVPN adresa pochádza z fondu servera alebo z pridelenia pre každého klienta a topológia rozhoduje o jej tvare. Na serveri s OpenVPN 2.4 alebo novším vyzerá služba s topológiou podsiete takto:

topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir ccd

S týmto tvarom server posiela niečo ako ifconfig 10.8.0.6 255.255.255.0. Staršia inštalácia s topology net30 posiela namiesto toho adresu partnera, napríklad ifconfig 10.8.0.6 10.8.0.5, takže profil presunutý medzi dvoma modelmi môže vyzerať správne, hoci nesie nesprávnu sieťovú masku.

V protokole pripojenia klienta hľadajte množinu odoslaných možností. Ak v ňom nie je ani jeden riadok ifconfig, server nikdy neposlal adresu alebo klient možnosť odmietol. Na serveri, ktorý používa client-config-dir, musí súbor pomenovaný podľa common name certifikátu existovať a obsahovať pridelenie:

# ccd/phone-anna
ifconfig-push 10.8.0.6 255.255.255.0

Kontrola 2: zachováva klient prijatú adresu?

Príliš široký filter je druhá častá príčina. pull-filter existuje v OpenVPN 2.4 a novšom, a keď viac filtrov zodpovedá tej istej možnosti, vyhráva posledný zodpovedajúci, takže catch-all na konci odstráni adresu bez chyby:

# removes every pushed option, including the address
pull-filter ignore "ifconfig"
pull-filter ignore "route"

Zúžte filter na možnosť, ktorej sa naozaj chcete zbaviť, a adresu nechajte na pokoji:

# keeps the pushed address, drops one unwanted LAN route
pull-filter ignore "route 10.60.0.0"

Rada vypnúť všetky pull zvyčajne prichádza od niekoho, kto sa chce zbaviť jedinej trasy. route-nopull je užší prepínač: zachováva ifconfig a ostatné odoslané možnosti, pričom odmieta odoslané trasy a možnosti typu DHCP. Použite ho, keď je to naozaj to, čo chcete, a otázku adresy riešte oddelene.

Kontrola 3: je adresa na vás, aby ste ju napísali?

Manuálne adresovanie je oprávnené len vtedy, keď vám operátor odovzdá hodnotu. Ak zadáte adresu sami, musí pochádzať z podsiete klienta VPN, byť jedinečná medzi aktívnymi reláciami a zodpovedať topológii, ktorú server prevádzkuje. Kopírovanie adresy mosta počítača alebo hostiteľa vo vzdialenej LAN zlyháva v oboch bodoch: telefón by si nárokoval adresu, ktorá už existuje inde, a brána by nemala spätnú cestu k nej.

Prefix vzdialenej LAN v trase je cieľ, nikdy identita telefónu. Trasa pre 10.60.0.0/24 hovorí, že k tej sieti sa ide cez tunel; nehovorí nič o tom, akú adresu 10.60.0.x má telefón mať, a telefón by nemal mať žiadnu z nich. Statické pridelenia patria na stranu servera, kde nemôžu kolidovať s dynamickým fondom.

Dve relácie na jednej identite odhalia tú istú kolíziu. Ak sa ten istý certifikát pripojí dvakrát a server pošle jednu pevnú adresu obom, druhá relácia duplikuje prvú, a riešením sú oddelené identity alebo oddelené pridelenia, nie úprava na strane klienta.

Kontrola 4: drží niečo iné miesto tunela?

Android povoľuje iba jednu aktívnu službu VPN naraz. Iná aplikácia VPN alebo záznam vždy zapnutej VPN ponechaný zapnutý pre profil, ktorý už nefunguje, môže to miesto zabrať skôr, než váš klient OpenVPN zavolá establish(). Rozhranie sa potom nikdy neobjaví, hoci profil je platný, preto odpojte druhú VPN, vypnite nastavenie vždy zapnutej a pripojte sa znova, kým sa dotknete profilu.

Služba, ktorá trvá na mostíkovaní Ethernetu, je druhá slepá ulička. Aplikácia pre Android bez root môže vytvoriť IP tunel, nie mostíkovaný Ethernet segment, takže žiadna adresa, ktorú zadáte, nespôsobí, že server dev tap bude fungovať; operátor musí ponúknuť smerovanú službu. Keď problém hlásite, uveďte názov a verziu klienta, odoslanú množinu možností, topológiu a presný krok, v ktorom sa adresa mala objaviť.

Ak všetky štyri kontroly prejdú a adresa je prítomná, jedinečná a správne maskovaná, otázka trasy sa stane obvyklou: ktoré prefixy server povoľuje a ako ich má klient ohraničiť. Poznačte si adresu tunela, jeho sieťovú masku a topológiu predtým, než čokoľvek iné zmeníte, pretože práve tieto tri hodnoty potrebuje operátor porovnať s pohľadom servera.

Súvisiace články