TAP ili TUN? OpenVPN klijenti za Android i premosni serveri
TAP prenosi Ethernet okvire, TUN prenosi IP pakete, a Android aplikacija dobija samo drugu vrstu. Uporedite oboje, pa popravite serversku stranu.
Profil koji radi na laptopu ne radi na telefonu. Očigledan potez je izmijeniti jednu riječ u konfiguraciji klijenta. Ta riječ neće pomoći, jer dvije strane ne govore o istoj vrsti saobraćaja.
TAP prenosi Ethernet okvire. TUN prenosi IP pakete. Android VPN aplikacija dobija IP interfejs, što jedan od ta dva rasporeda čini mogućim, a drugi ne, bez obzira na to šta konfiguracija kaže.
Poređenje je kratko, ali odlučuje možete li to popraviti na telefonu ili morate promijeniti uslugu.
Dvije vrste tunela s različitim sadržajem
TAP interfejs se ponaša kao Ethernet adapter. Prenosi okvire, što znači ARP, broadcast i sve ostalo što LAN prenosi ispod IP-a. To omogućava premošćavanje: tunel proširuje broadcast domenu i klijenti se ponašaju kao da su uključeni u svič.
TUN interfejs prenosi IP pakete upućene njemu. Nema sloja veze o kojem bi se pregovaralo, nema ARP-a i nema broadcasta. Rutiranje odlučuje šta ulazi u tunel, a serverska konfiguracija koristi podmrežu, a ne most.
Obje strane se moraju složiti šta od toga rade. Promjena dev tap u dev tun na jednoj strani ne pretvara uslugu; nastaje klijent koji očekuje rutirani tunel i server koji još šalje okvire, a rukovanje može uspjeti dok ništa upotrebljivo ne prolazi.
Šta Android zapravo daje aplikaciji
API VpnService platforme daje aplikaciji virtuelni interfejs za IP pakete, konfigurisan adresama, rutama i MTU-om. U tom API-ju nema Ethernet adaptera i aplikacija ga ne može stvoriti.
Zato OpenVPN Connect dokumentuje podršku za rutirane TUN veze na Androidu, a ne za TAP premošćavanje. Android FAQ je izjava klijentske strane o toj granici i odgovara API-ju platforme.
Alati za mrežu s root pravima, prilagođeni firmver ili proizvod koji sprovodi izričit sloj prevođenja su drugi rasporedi. Običan slučaj je onaj oko kojeg treba planirati: aplikacija koja može uvesti vašu datoteku i raditi kao običan korisnik, s IP interfejsom i ničim ispod njega.
Kako to izgleda kada ipak pokušate
Veza se obično uspostavi. Zbog toga je kvar zbunjujuć: klijent prijavljuje povezanost, serverski dnevnik pokazuje partnera, a nijedna aplikacija ne radi.
Saobraćaj upućen na dodijeljenu adresu telefona ne stiže, jer server premošćuje okvire na MAC adresu koju telefon nikada nije imao. Otkrivanje koje zavisi od broadcasta ostaje prazno. Ako se LAN oslanja na DHCP preko mosta, telefon tako neće dobiti iznajmljivanje, a ručno dodijeljena adresa u premošćenoj podmreži ipak ne stvara interfejs koji nedostaje.
Neki klijenti padaju ranije, pri uvozu profila, kada vide vrstu uređaja koju ne mogu izvesti. Oba ponašanja znače isto, a nijedno se ne popravlja dodavanjem ruta, promjenom DNS-a ili proširenjem adresnog raspona tunela.
Šta serverska strana mora promijeniti
Popravka pripada onome ko upravlja VPN uslugom i obično je dodatak, a ne migracija. Pokrenite drugu OpenVPN instancu s rutiranim uređajem, vlastitom klijentskom podmrežom i serverskom konfiguracijom koja dodjeljuje adrese i gura rute koje telefonima trebaju. Postojeća premošćena instanca nastavlja služiti uređajima kojima Ethernet zaista treba.
Dva detalja to čine upotrebljivim u praksi. LAN-u treba povratna ruta za novu klijentsku podmrežu, usmjerena na VPN host, inače odgovori nikada neće doći. I firewall na hostu tunela mora prosljeđivati između interfejsa tunela i LAN-a, a to je korak koji se najčešće preskoči kada test s hosta uspije.
Ako operator ne može dodati uslugu, alternativa je uređaj koji se može pridružiti mostu, dakle laptop ili ruter koji djeluje u ime telefona. To je zaobilazno rješenje s vlastitim troškom upravljanja, a ne Android konfiguracija.
Odlučite iz aplikacije, a ne iz tunela
Pitajte do čega telefon zapravo mora doći, pa to preslikajte. Dijeljeni direktorij ili intranet stranica dostupni po imenu ili adresi su IP zahtjev i rutirani tunel ih zadovoljava kada DNS razriješi ime i ruta postoji. Alat za otkrivanje koji pregleda lokalnu broadcast domenu nije IP zahtjev i nikakva količina rutiranja ga neće popuniti.
| 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 |
Ta tabela je i zahtjev koji šaljete. Navedite aplikaciju, adresu ili ime koje koristi i zavisi li od otkrivanja. Operator može djelovati na osnovu tog opisa, a na osnovu telefona koji se ne povezuje ne može niko.
Na kraju, zadržite TAP uslugu za uređaje kojima treba, umjesto da svaki klijent oponaša LAN adapter. Dvije usluge s jasnim ciljevima lakše je podržavati od jedne koja napola radi za sve.