Pripojíte sa k firemnému VPN, ikona v oznamovacej oblasti zozelenie, intranet sa načíta a tlačiareň dva metre ďalej prestane odpovedať. Zdieľaná zložka, ktorá ráno fungovala, na tom istom počítači vyprší, a žiadny log nespomína tlačiareň. Reflex je DNS, lebo meno, ktoré sa nevyrieši, vyzerá ako meno, ktoré neexistuje, ale problém je v adrese: dva adaptéry si teraz nárokujú 192.168.1.0/24 a ten prefix môže vyhrať len jedna trasa. Prejdite to v tomto poradí a uvidíte, ktorý adaptér si ho vzal, skôr než čokoľvek zmeníte.

Začnite príznakom, nie tunelom

Nápovedou je rozsah. Keď intranet funguje a každé lokálne zariadenie zlyháva, tunel je zdravý a lokálna cesta nie. Keď lokálne zariadenia fungujú a intranet zlyháva, je to opačne. Keď funguje všetko okrem jedného hostiteľa, pozeráte sa na jedinú adresu, ktorá existuje na oboch stranách.

Skôr než sa dotknete nastavenia, zapíšte si jednu lokálnu a jednu vzdialenú adresu. „Tlačiareň“ sa testovať nedá; 192.168.1.40 áno. Ten jeden krok zabráni najčastejšej stratenej hodine pri tomto probléme, ktorou je prepisovanie nastavení DNS pre rozhodnutie o smerovaní.

Krok 1: vidte oba adaptéry nárokujúce si prefix

Otvorte Sieťové pripojenia (ncpa.cpl) a čítajte oba adaptéry vedľa seba. Ethernet adaptér zobrazuje 192.168.1.50/24 s bránou 192.168.1.1. VPN adaptér zobrazuje 192.168.1.201/24, ktoré poslal server. Oba sú legitímne, oba veria, že prefix je on-link, a zásobník si preň ponechá jedinú trasu.

Get-NetIPAddress -AddressFamily IPv4 vypisuje adresy a Get-NetIPInterface | Sort-Object InterfaceMetric ukazuje poradie, v ktorom ich zásobník použije. Ten stĺpec metriky je rozhodnutie, ktoré sa chystáte prečítať, takže si čísla zapíšte, namiesto toho, aby ste si ich pamätali.

Lacno dokážte, že teória o DNS je chybná: Resolve-DnsName printer.office.lan vracia rovnakú adresu ako včera. Meno sa vyriešilo; potom paket odišiel nesprávnym adaptérom. Dve minúty tu ušetria popoludnie v nastaveniach resolvera.

Krok 2: prečítajte trasu, ktorá naozaj vyhrala

Find-NetRoute -RemoteIPAddress 192.168.1.40 vypíše rozhranie, ďalší skok a zdroj, ktoré by zásobník pre tú adresu použil. Berte tento výstup ako odpoveď, nie ako nápovedu. route print -4 dá celú tabuľku, keď chcete vidieť, ktorá položka prehrala a o koľko.

Konkrétnosť víťazí nad úmyslom. Posielaný 192.168.0.0/25 poráža lokálny 192.168.0.0/24, lebo prefix je dlhší, takže 192.168.0.0 až 192.168.0.127 odchádza tunelom, zatiaľ čo horná polovica zostáva lokálna. Zmiznutie polovice LAN bez chybovej správy je pre takú tabuľku správne správanie.

tracert -d 192.168.1.40 to potvrdzuje zvonku tabuľky: ak je prvý skok adresa tunela namiesto vášho vlastného routera, trasa je celý príbeh. Na Linuxe je tá istá otázka ip route get 192.168.1.40, ktorý vypíše zdrojovú adresu a zariadenie na jednom riadku. Keď odpoveď spomenie tun0, prestaňte sa pozerať do prehliadača.

Krok 3: skontrolujte spätnú cestu, skôr než obviníte klienta

Správna trasa tam aj tak zlyhá, keď druhá strana nevie odpovedať. Keď sa klientska LAN dosahuje tunelom, brána tej LAN musí vedieť, kde žije pool tunela: ip route add 10.8.0.0/24 via 192.168.1.12 na tom routeri, a push „route 192.168.1.0 255.255.255.0“ zo servera, aby klienti poznali spätnú cestu.

Bez prvého záznamu odpoveď opúšťa cieľ smerom k svojej predvolenej bráne, ktorá prepošle privátnu adresu poskytovateľovi a zahodí ju. Symptóm je jednosmerný a ľahko sa prečíta nesprávne: požiadavky sa objavujú na tun0, odpovede nikdy.

Pravidlo masquerade na hostiteľovi VPN odstráni potrebu tejto statickej trasy: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE. Skrýva aj skutočné zdrojové adresy, čo sťažuje každú ďalšiu otázku nad logmi. Cieľový hostiteľ s nesprávnou predvolenou bránou vytvára rovnaké ticho, v najlepšom prípade s presmerovaním ICMP, v normálnom prípade s čiernou dierou, a preto snímka patrí na oba konce.

Krok 4: vyberte opravu, s ktorou dokážete žiť

Používa sa na to päť opráv a nie sú zameniteľné. Vyberajte podľa toho, čo musí zostať dostupné súčasne, nie podľa toho, ktorý príkaz je najkratší.

RepairWhat it fixesWhat it costs
Flip interface metricsAlternating access: office now, home later, never bothGet-NetAdapter -Name "Ethernet 2" | Set-NetIPInterface -InterfaceMetric 21; set the VPN adapter back to 5000. A client that rewrites metrics on connect defeats it
Renumber one sideEvery host reachable in both directionsDHCP reservations, printer queues, firewall rules and hard-coded addresses all move
Narrow the advertised prefixRemote hosts really live in the upper halfBreaks the day someone adds a host below the cut
Translate with client-natBoth address plans stay untouchedStateless per-client mapping, unreadable logs, anything embedding addresses breaks
Publish one service with DNATOne service on the VPN host reachable from the LANBoth address plans stay; source addresses and reverse lookups stop being meaningful

Metriky sú lacná možnosť a tá, po ktorej ľudia siahnu najprv. Zmena platí pre rozhranie, takže funguje, kým je tunel hore, a patrí do skriptu vedľa klienta, nie do shellu, ktorý zabudnete. Nemôže dať súčasný prístup k tej istej adrese v dvoch sieťach, a to je limit, ktorý posiela všetkých ostatných dolu po tabuľke.

Prečíslovanie domácej LAN na 10.10.0.0/24 je čisté riešenie: jedno obnovenie DHCP lease plus rezervácie, tlačové fronty a pevne zadané adresy, ktoré spomínajú starý rozsah. Prečíslovanie na strane kancelárie zvyčajne nie je vaše rozhodnutie. IPv6 kolíziu úplne odstráni, keď ju nesú obe siete, s unikátnym lokálnym prefixom z fd00::/8 namiesto niečoho zapamätateľného, ale testujte aplikáciu cez TCP, nie pingom, lebo ICMP môže fungovať, kým služba nie.

Vlastná možnosť prekladu OpenVPN je posledná záchrana, posielaná zo servera do položky adresára špecifickej pre klienta. Za názvom možnosti berie štyri parametre — smer, sieť, masku a alias — a alias nie je voliteľný: push "route 192.168.2.0 255.255.255.0" a push "client-nat dnat 192.168.2.0 255.255.255.0 192.168.1.0". Sieť a maska sú rozsah, ktorý klient vidí (192.168.2.0/24), alias je skutočný kancelársky rozsah na strane servera (192.168.1.0/24) a posielaná trasa robí tento viditeľný rozsah dostupným. Kancelária sa potom tomu klientovi javí pod 192.168.2.x. Zdokumentujte mapovanie v profile, inak ho budúci človek bude ladiť ako chybu smerovania.

Publikovanie jedinej služby je úzka verzia prekladu a možnosť OpenVPN vôbec nepotrebuje. Pravidlo DNAT na hostiteľovi VPN znovu publikuje jeden port, takže LAN si ponechá adresy a dosiahne službu na adrese hostiteľa, ktorú už pozná. Cena je obvyklá: služba vidí hostiteľa VPN ako zdroj, takže logy po klientoch a reverzné vyhľadávania prestávajú niečo znamenať. To pokryje jednu tlačovú frontu alebo jednu administrátorskú stránku, nie hostiteľov na oboch stranách, ktorí sa navzájom dosiahnu.

Čo stále nebude fungovať a čo si zapísať

Broadcast neprechádza cez smerovaný tunel. DLNA, UPnP, prehliadanie NetBIOS a Wake-on-LAN závisia od broadcastu alebo multicastu, ktorý zariadenie tun nenesie, takže žiadna trasa neopraví objavovanie. Mostovanie s dev tap rozširuje segment a s ním DHCP broadcasty, ARP a každý ďalší objavovací paket; uprednostnite unicast trasu k hostiteľovi, napríklad route 192.168.2.1 255.255.255.255, pre adresu na strane LAN vzdialeného routera.

Dva routery, ktoré oba používajú 192.168.1.1 na tej istej ceste, patria do tej istej rodiny problémov: lokálna adresa vždy vyhrá, takže stránka vzdialeného routera zostáva nedostupná, kým sa jedna LAN nepresunie. Pridanie druhého adaptéra na ničom z toho nič nemení.

Zaznamenajte dôkazy, skôr než čokoľvek upravíte: ip route get alebo Find-NetRoute, ping -c 3 na dotyčnú adresu, traceroute a tcpdump -ni tun0 icmp na klientovi, potom smerovaciu tabuľku a NAT počítadlá na serveri. Ping, ktorý funguje jedným smerom a umiera druhým, ukazuje na spätnú cestu, nie na tunel, a práve tento rozdiel rozhoduje, ktorú z opráv vyššie skutočne potrebujete.

Súvisiace články