VPN ir namų LAN tame pačiame potinkyje: pirmiausia peržiūrėkite maršrutą
Abu adapteriai pretenduoja į 192.168.1.0/24, o laimi tik vienas maršrutas. Peržiūrėkite adapterių sąrašą, laimėjusį maršrutą ir grįžimo kelią prieš pernumeruodami ar kaltindami DNS.
Prisijungiate prie biuro VPN, dėklo piktograma tampa žalia, intranetas įsikelia, o dviem metrais toliau esantis spausdintuvas nustoja atsakinėti. Bendraimasis aplankas, kuris veikė ryte, tame pačiame kompiuteryje baigia laukti, ir jokiame žurnale nėra spausdintuvo. Pirmoji reakcija – DNS, nes neišsprendžiamas vardas atrodo kaip neegzistuojantis vardas, bet problema yra adresas: du adapteriai dabar pretenduoja į 192.168.1.0/24, o šį priešdėlį gali laimėti tik vienas maršrutas. Pereikite tai šia tvarka ir pamatysite, kuris adapteris jį paėmė, prieš ką nors keisdami.
Pradėkite nuo simptomo, o ne nuo tunelio
Užuomina – apimtis. Jei intranetas veikia, o visi vietiniai įrenginiai nepavyksta, tunelis sveikas, o vietinis kelias ne. Jei vietiniai įrenginiai veikia, o intranetas nepavyksta, atvirkščiai. Jei viskas veikia išskyrus vieną mazgą, matote vieną adresą, kuris egzistuoja abiejose pusėse.
Užsirašykite vieną vietinį ir vieną nuotolinį adresą prieš liesdami nustatymą. „Spausdintuvo“ patikrinti negalima; 192.168.1.40 galima. Šis vienas žingsnis apsaugo nuo dažniausiai prarandamos valandos šioje problemoje, tai yra DNS nustatymų perrašymo dėl maršrutizavimo sprendimo.
1 žingsnis: pamatykite abu adapterius, pretenduojančius į priešdėlį
Atidarykite Tinklo ryšius (ncpa.cpl) ir skaitykite abu adapterius greta. Ethernet adapteris rodo 192.168.1.50/24 su tinklų sietuvu 192.168.1.1. VPN adapteris rodo 192.168.1.201/24, kurį atsiuntė serveris. Abu yra teisėti, abu tiki, kad priešdėlis yra on-link, o dėklas jam palaikys vieną maršrutą.
Get-NetIPAddress -AddressFamily IPv4 išvardija adresus, o Get-NetIPInterface | Sort-Object InterfaceMetric rodo tvarką, kuria dėklas juos naudos. Tas metrikos stulpelis yra sprendimas, kurį ketinate perskaityti, todėl užsirašykite skaičius, o ne bandykite juos atsiminti.
Pigiai paneigkite DNS teoriją: Resolve-DnsName printer.office.lan grąžina tą patį adresą kaip vakar. Vardas buvo išspręstas; tada paketas išėjo per netinkamą adapterį. Dvi minutės čia sutaupo popietę sprendėjo nustatymuose.
2 žingsnis: perskaitykite maršrutą, kuris tikrai laimėjo
Find-NetRoute -RemoteIPAddress 192.168.1.40 išspausdina sąsają, kitą šuolį ir šaltinį, kuriuos dėklas naudotų tam adresui. Traktuokite šią išvestį kaip atsakymą, o ne kaip užuominą. route print -4 pateikia visą lentelę, kai norite pamatyti, kuris įrašas pralaimėjo ir kiek.
Konkretumas nugali ketinimą. Stumiamas 192.168.0.0/25 nugali vietinį 192.168.0.0/24, nes priešdėlis ilgesnis, todėl 192.168.0.0–192.168.0.127 išeina per tunelį, o viršutinė pusė lieka vietinė. Kad pusė LAN dingsta be klaidos pranešimo, yra teisingas tos lentelės elgesys.
tracert -d 192.168.1.40 tai patvirtina už lentelės ribų: jei pirmas šuolis yra tunelio adresas, o ne jūsų maršrutizatorius, maršrutas yra visa istorija. Linux atveju tas pats klausimas yra ip route get 192.168.1.40, kuris išspausdina šaltinio adresą ir įrenginį vienoje eilutėje. Kai atsakyme nurodytas tun0, nustokite žiūrėti į naršyklę.
3 žingsnis: patikrinkite grįžimo kelią prieš kaltindami klientą
Teisingas maršrutas pirmyn vis tiek nepavyksta, jei tolimoji pusė negali atsakyti. Kai į kliento LAN patenkama per tunelį, tos LAN sietuvas turi žinoti, kur gyvena tunelio telkinys: ip route add 10.8.0.0/24 via 192.168.1.12 tame maršrutizatoriuje, ir push „route 192.168.1.0 255.255.255.0“ iš serverio, kad klientai žinotų grįžimo kelią.
Be pirmo įrašo atsakymas palieka tikslą link savo numatytojo sietuvo, kuris perduoda privatų adresą tiekėjui ir jį numeta. Simptomas vienkryptis ir lengvai neteisingai perskaitomas: užklausos pasirodo tun0, atsakymai niekada.
Masquerade taisyklė VPN mazge pašalina to statinio maršruto poreikį: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE. Ji taip pat slepia tikruosius šaltinio adresus, todėl kiekvienas vėlesnis žurnalo klausimas tampa sunkesnis. Tikslinis mazgas su neteisingu numatytuoju sietuvu sukuria tą pačią tylą, geriausiu atveju su ICMP peradresavimu, o įprastu atveju su juoda skylių, todėl fiksavimas priklauso abiem galams.
4 žingsnis: pasirinkite taisymą, su kuriuo galite gyventi
Tam naudojami penki taisymai, ir jie nėra keičiami. Rinkitės pagal tai, kas turi likti pasiekiama vienu metu, o ne pagal tai, kuri komanda trumpiausia.
| Repair | What it fixes | What it costs |
|---|---|---|
| Flip interface metrics | Alternating access: office now, home later, never both | Get-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 side | Every host reachable in both directions | DHCP reservations, printer queues, firewall rules and hard-coded addresses all move |
| Narrow the advertised prefix | Remote hosts really live in the upper half | Breaks the day someone adds a host below the cut |
| Translate with client-nat | Both address plans stay untouched | Stateless per-client mapping, unreadable logs, anything embedding addresses breaks |
| Publish one service with DNAT | One service on the VPN host reachable from the LAN | Both address plans stay; source addresses and reverse lookups stop being meaningful |
Metrikos yra pigus variantas ir tas, į kurį žmonės pirmiausia siekia. Pakeitimas galioja sąsajai, todėl veikia, kol tunelis pakeltas, ir jo vieta yra scenarijuje prie kliento, o ne apvalkale, kurį pamiršite. Ji negali suteikti vienalaikės prieigos prie to paties adreso dviejuose tinkluose, ir būtent ši riba siunčia visus kitus lentelės apačion.
Namų LAN pernumeravimas į 10.10.0.0/24 yra švarus sprendimas: vienas DHCP nuomos atnaujinimas plius rezervacijos, spausdinimo eilės ir kietai įrašyti adresai, kurie mini seną diapazoną. Biuro pusės pernumeravimas paprastai nėra jūsų sprendimas. IPv6 visiškai pašalina susidūrimą, kai abu tinklai jį palaiko, naudodamas unikalų vietinį priešdėlį iš fd00::/8 vietoj ko nors įsimintino, bet testuokite programą per TCP, o ne ping, nes ICMP gali veikti, kai paslauga neveikia.
Pačios OpenVPN vertimo parinktis yra paskutinė priemonė, stumiama iš serverio į klientui būdingą katalogo įrašą. Ji priima keturis parametrus po parinkties pavadinimo – kryptį, tinklą, tinklo kaukę ir slapyvardį – ir slapyvardis nėra neprivalomas: push "route 192.168.2.0 255.255.255.0" ir push "client-nat dnat 192.168.2.0 255.255.255.0 192.168.1.0". Tinklas ir kaukė yra diapazonas, kurį mato klientas (192.168.2.0/24), slapyvardis yra tikrasis biuro diapazonas serverio pusėje (192.168.1.0/24), o stumiamas maršrutas padaro tą matomą diapazoną pasiekiamą. Tada biuras tam klientui rodomas po 192.168.2.x. Dokumentuokite atvaizdavimą profilyje, kitaip kitas žmogus derins tai kaip maršrutizavimo gedimą.
Vienos paslaugos publikavimas yra siaura vertimo versija, ir jai visiškai nereikia OpenVPN parinkties. DNAT taisyklė VPN mazge iš naujo paskelbia vieną prievadą, todėl LAN išsaugo savo adresus ir pasiekia paslaugą tuo mazgo adresu, kurį jau žino. Kaina įprasta: paslauga mato VPN mazgą kaip šaltinį, todėl žurnalai pagal klientą ir atvirkštinės užklausos nebetenka prasmės. Tai apima vieną spausdinimo eilę arba vieną administravimo puslapį, o ne abiejų pusių mazgus, kurie pasiekia vienas kitą.
Kas vis tiek neveiks ir ką užsirašyti
Transliacija neperžengia maršrutizuoto tunelio. DLNA, UPnP, NetBIOS naršymas ir Wake-on-LAN priklauso nuo transliacijos ar daugiaadresės siuntos, kurios tun įrenginys neneša, todėl joks maršrutas nepataiso aptikimo. Tiltas su dev tap prailgina segmentą ir kartu DHCP transliacijas, ARP bei visus kitus aptikimo paketus; teikite pirmenybę unicast mazgo maršrutui, pavyzdžiui, route 192.168.2.1 255.255.255.255, nuotolinio maršrutizatoriaus LAN pusės adresui.
Du maršrutizatoriai, kurie abu naudoja 192.168.1.1 tame pačiame kelyje, priklauso tai pačiai problemų šeimai: vietinis adresas visada laimi, todėl tolimo maršrutizatoriaus puslapis lieka nepasiekiamas, kol vienas LAN nepersikelia. Antro adapterio pridėjimas nieko nekeičia nė vienu atveju.
Užrašykite įrodymus prieš ką nors redaguodami: ip route get arba Find-NetRoute, ping -c 3 į atitinkamą adresą, traceroute, ir tcpdump -ni tun0 icmp kliente, tada maršrutizavimo lentelę ir NAT skaitiklius serveryje. Ping, kuris veikia viena kryptimi ir miršta kita, nurodo grįžimo kelią, o ne tunelį, ir būtent šis vienintelis skirtumas nusprendžia, kurio iš aukščiau pateiktų taisymų jums iš tikrųjų reikia.