OpenVPN TAP på macOS: kontroller klienten, før du fejlfinder
TAP bærer Ethernet-rammer, og TUN bærer IP, og nutidens macOS-klienter har for det meste droppet det første. Bekræft tilstanden, og migrér derefter sammen med serverens ejer.
En gammel profil lander på en aktuel Mac, klienten importerer den uden klage, og forbindelsen falder bort eller sender aldrig trafik. Før du bruger en eftermiddag på certifikater, skal du læse enhedslinjen i profilen. Hvis der står dev tap, beder du klienten om en Ethernet-lignende grænseflade, og på macOS er det netop denne anmodning, hvor de fleste af disse sessioner ender.
Trin 1: bekræft, at profilen virkelig beder om TAP
Profiler bliver omdøbt, pakket ind og eksporteret igen, så tjek den fil, du faktisk importerede. Søg efter enhedsdirektivet og efter enhver include, der kan tilsidesætte det. To linjer output afgør spørgsmålet i de fleste tilfælde. Når både dev og dev-type optræder, vinder det senere direktiv, og det er præcis den slags detalje, en kopieret profil skjuler.
grep -nE "^[[:space:]]*(dev|dev-type)[[:space:]]" client.ovpn
ls -l ~/Library/Application\ Support/ 2>/dev/null
Hvis filen indeholder dev tap eller dev tap0, skal klienten implementere en TAP-grænseflade. Hvis den indeholder dev tun, gælder resten af denne artikel ikke, og fejlen ligger et andet sted.
Skriv klientens navn og version, macOS-versionen og hvor profilen kom fra ned. De tre fakta afgør, hvilken af de to veje nedenfor der overhovedet er mulig.
Trin 2: vid, hvad enhedstilstanden faktisk ændrer
En TUN-grænseflade bærer IP-pakker. Klienten læser og skriver pakker, der er adresseret til en IP-modpart, og operativsystemet ruter til den som til enhver anden grænseflade.
En TAP-grænseflade bærer Ethernet-rammer, herunder broadcast og ARP. Det er det, der lader en broet server uddele adresser via DHCP og en klient opdage enheder ved at råbe op, og derfor afhænger nogle ældre design af det.
Prisen er, at TAP kræver en driver, der præsenterer en Ethernet-grænseflade for systemet. Apple har udfaset den kerneludvidelsesmodel, som ældre TAP-drivere til Mac byggede på, og dens erstatnings-API dukker ikke op af sig selv i klienter, der aldrig er blevet opdateret til at bruge den. En platformsevne og et leveret produkt er to forskellige ting.
Trin 3: vælg mellem en kompatibel klient og en migrering
Der er to ærlige veje. Den første er en klient, hvis udgiver for din macOS-version og hardware erklærer, at den understøtter det TAP-arrangement, du har brug for. Ikke et forumindlæg fra for fire år siden, og ikke en arkiveret installationspakke: en aktuel erklæring plus en testforbindelse.
Den anden er at flytte tjenesten til TUN, hvilket er en serverændring lige så vel som en klientændring. Det kræver en rutet topologi, en adressepulje, pushede ruter til fjernnetværkene og en returvej fra disse netværk tilbage til puljen.
Det, der ikke virker, er at ændre tap til tun i din lokale kopi og håbe. Serveren broer stadig, klienten taler nu IP, og intet stemmer overens.
Trin 4: saml fakta, før du ændrer en fungerende tjeneste
Lad den oprindelige profil være urørt, og lav en kopi til eksperimenter. En fil, du kan gendanne på et minut, er mere værd end en ryddelig mappe. Når erstatningen virker, skal du slette kopien med vilje i stedet for at efterlade to profiler, der ser identiske ud på en liste. Den ene vane forebygger det meste af den forvirring, der følger en mislykket migrering. Notér den nuværende adfærd, så du kan bevise, hvad der ændrede sig: kommer tunnelen op, får den en adresse, kan du nå en kendt vært, og virker navneopslag.
Stil gatewayens ejer tre spørgsmål. Kører serveren en broet eller rutet topologi? Hvilke fjernpræfikser skal kunne nås? Og er der et vedligeholdelsesvindue til en konfigurationsændring, eller forventes det at virke uden at røre serveren?
Svarene på det afgør, om du løser et klientproblem i eftermiddag, eller planlægger en netværksændring i næste uge.
Trin 5: verificér migreringen fra begge ender
Når serveren har en rutet konfiguration, og du har en matchende profil, skal du teste i denne rækkefølge: tunnelen etableres, klienten modtager en adresse fra den nye pulje, en vært på fjernsiden svarer, og et navn opløses via den pushede DNS-indstilling.
Test derefter det, der plejede at afhænge af Ethernet-adfærd. Hvis en applikation opdagede enheder via broadcast, finder den dem ikke over en rutet tunnel, og ingen mængde klientkonfiguration bringer det tilbage. Den applikation har brug for en kendt adresse, en lokal hjælpevært eller en anden opdagelsesmetode.
Afslut ved at genoprette forbindelsen og genstarte én gang, fordi en profil, der kun virker ved første forsøg, normalt betyder, at de pushede ruter eller DNS-indstillingen ikke anvendes ved genopkobling.
Når det stadig fejler, skal du læse den første fejl
En klient, der ikke kan oprette grænsefladen, siger det i sin log, normalt inden for de første par linjer. En klient, der opretter den og derefter ikke kan autentificere, er helt forbi enhedsspørgsmålet, og at fortsætte med at jage TAP spilder sessionen.
Behold den oprindelige profil og den fungerende konfiguration, indtil erstatningen er bevist. At rulle en klientændring tilbage er hurtigt; at genopbygge et broet netværk, som nogen har skilt ad på en fornemmelse, er det ikke.