TAP, nebo TUN? OpenVPN klienti pro Android a serverová rozhraní s mostem
TAP přenáší ethernetové rámce, TUN přenáší IP pakety a aplikace pro Android dostane jen druhý typ. Porovnejte obojí a pak opravte stranu serveru.
Profil, který funguje na notebooku, na telefonu selže. Nabízející se krok je změnit jedno slovo v konfiguraci klienta. To slovo nepomůže, protože oba konce nemluví o stejném druhu provozu.
TAP přenáší ethernetové rámce. TUN přenáší IP pakety. Aplikace VPN pro Android dostane IP rozhraní, a to činí jednu z těch dvou možností proveditelnou a druhou ne, ať konfigurace říká cokoli.
Srovnání je krátké, ale rozhoduje o tom, zda to můžete opravit v telefonu, nebo musíte změnit službu.
Dva typy tunelů s odlišnými daty
Rozhraní TAP se chová jako ethernetový adaptér. Přenáší rámce, tedy ARP, broadcast a vše ostatní, co LAN přenáší pod IP. Právě to umožňuje most: tunel rozšiřuje broadcastovou doménu a klienti se chovají, jako by byli zapojeni do switche.
Rozhraní TUN přenáší IP pakety adresované jemu. Neexistuje vrstva linky k vyjednávání, žádné ARP ani broadcast. O tom, co vstoupí do tunelu, rozhoduje směrování a konfigurace na straně serveru používá podsíť, nikoli most.
Oba konce se musí shodnout, kterou z těch věcí dělají. Změna dev tap na dev tun na jedné straně službu nepřevede; vznikne klient, který očekává směrovaný tunel, a server, který stále posílá rámce, a handshake může uspět, zatímco neprochází nic použitelného.
Co Android aplikaci skutečně předá
API VpnService platformy dává aplikaci virtuální rozhraní pro IP pakety, nastavené adresami, trasami a MTU. V tom API není žádný ethernetový adaptér a aplikace si ho nemůže vymyslet.
Proto OpenVPN Connect dokumentuje podporu směrovaných připojení TUN na Androidu, nikoli TAP mostů. Časté dotazy k Androidu jsou vyjádřením této hranice ze strany klienta a odpovídají API platformy.
Síťové nástroje s rootem, vlastní firmware nebo produkt s výslovnou překladovou vrstvou jsou jiná uspořádání. Běžný případ je ten, kolem kterého je třeba plánovat: aplikace, která umí importovat váš soubor a běžet jako běžný uživatel, s IP rozhraním a ničím pod ním.
Jak to vypadá, když to přesto zkusíte
Spojení se obvykle naváže. Právě proto je selhání matoucí: klient hlásí připojení, protokol serveru ukazuje protějšek a žádná aplikace nefunguje.
Provoz adresovaný přiřazené adrese telefonu nedorazí, protože server mostuje rámce na MAC adresu, kterou telefon nikdy neměl. Zjišťování závislé na broadcastu zůstává prázdné. Pokud se LAN spoléhá na DHCP přes most, telefon takto nezíská pronájem a ručně přiřazená adresa v mostované podsíti chybějící rozhraní stejně nevytvoří.
Někteří klienti selžou dříve, při importu profilu, když narazí na typ zařízení, který nedokážou implementovat. Obě chování znamenají totéž a ani jedno se neopraví přidáním tras, změnou DNS nebo rozšířením adresního rozsahu tunelu.
Co musí změnit strana serveru
Oprava patří tomu, kdo službu VPN provozuje, a obvykle se přidává, nikoli migruje. Spusťte druhou instanci OpenVPN se směrovaným zařízením, vlastní klientskou podsítí a konfigurací serveru, která přiděluje adresy a předává trasy, jež telefony potřebují. Stávající mostovaná instance dál obsluhuje zařízení, která Ethernet skutečně potřebují.
Dva detaily to v praxi zprovozní. LAN potřebuje zpětnou trasu pro novou klientskou podsíť mířící na hostitele VPN, jinak se odpovědi nikdy nevrátí. A firewall na hostiteli tunelu musí předávat mezi rozhraním tunelu a LAN, což je krok, který se nejčastěji vynechá, když test z hostitele samotného uspěje.
Pokud operátor nemůže přidat službu, alternativou je zařízení, které se umí připojit k mostu, tedy notebook nebo router jednající jménem telefonu. To je obchvat s vlastními náklady na správu, ne konfigurace Androidu.
Rozhodujte podle aplikace, ne podle tunelu
Zeptejte se, k čemu telefon skutečně musí dosáhnout, a pak to zmapujte. Sdílená složka nebo intranetový web dostupný jménem či adresou je požadavek na IP a směrovaný tunel jej splní, jakmile DNS přeloží jméno a trasa existuje. Nástroj pro zjišťování, který prochází místní broadcastovou doménu, požadavek na IP není a žádné množství směrování jej nenaplní.
| Requirement | Tunnel that satisfies it |
|---|---|
| File server or intranet by hostname | Routed TUN, with working DNS |
| Broadcast or ARP-based discovery | Ethernet bridging, so not an ordinary Android client |
| Multicast delivery | Bridging or an explicit multicast relay |
| One application to one address | Routed TUN, narrowest possible route |
Tabulka je zároveň žádost, kterou lze poslat. Pojmenujte aplikaci, adresu nebo jméno, které používá, a zda závisí na zjišťování. Operátor může na takový popis reagovat, což s telefonem, který se nepřipojí, nedokáže nikdo.
Nakonec, zachovejte službu TAP pro zařízení, která ji potřebují, místo abyste nutili každého klienta napodobovat adaptér LAN. Dvě služby s jasným účelem se podporují snáz než jedna, která všem funguje napůl.