Повезујете се на канцеларијски VPN, икона у траци постане зелена, интранет се учита, а штампач два метра даље престане да одговара. Дељена фасцикла која је радила ујутру истекне на истом рачунару, а ниједан дневник не помиње штампач. Први рефлекс је DNS, јер име које се не разрешава изгледа као име које не постоји, али проблем је у адреси: два адаптера сада траже 192.168.1.0/24 и само једна рута може да победи тај префикс. Прођите то овим редом и видећете који је адаптер узео пре него што било шта промените.

Почните од симптома, не од тунела

Знак је обим. Ако интранет ради, а сваки локални уређај отказује, тунел је здрав, а локални пут није. Ако локални уређаји раде, а интранет отказује, обрнуто. Ако све ради осим једног хоста, гледате једну адресу која постоји на обе стране.

Запишите једну локалну и једну удаљену адресу пре него што додирнете подешавање. „Штампач“ не може да се тестира; 192.168.1.40 може. Тај један корак спречава најчешће изгубљен сат на овом проблему, а то је преписивање DNS подешавања због одлуке о рутирању.

Корак 1: видите оба адаптера која траже префикс

Отворите Мрежне везе (ncpa.cpl) и читајте два адаптера један поред другог. Ethernet адаптер показује 192.168.1.50/24 са гејтвејем 192.168.1.1. VPN адаптер показује 192.168.1.201/24, који је послао сервер. Оба су легитимна, оба верују да је префикс on-link, и стек ће задржати једну руту за њега.

Get-NetIPAddress -AddressFamily IPv4 наводи адресе, а Get-NetIPInterface | Sort-Object InterfaceMetric показује редослед којим ће их стек користити. Та колона метрике је одлука коју управо читате, зато запишите бројеве уместо да покушавате да их запамтите.

Оповргните теорију DNS-а јефтино: Resolve-DnsName printer.office.lan враћа исту адресу као јуче. Име се разрешило; затим је пакет отишао кроз погрешан адаптер. Два минута овде штеде поподне у подешавањима резолвера.

Корак 2: прочитајте руту која је стварно победила

Find-NetRoute -RemoteIPAddress 192.168.1.40 исписује интерфејс, следећи скок и извор које би стек користио за ту адресу. Третирајте тај излаз као одговор, не као наговештај. route print -4 даје целу табелу када желите да видите који је унос изгубио и за колико.

Конкретност побеђује намеру. Послати 192.168.0.0/25 побеђује локални 192.168.0.0/24 јер је префикс дужи, па 192.168.0.0 до 192.168.0.127 излазе кроз тунел, док горња половина остаје локална. Нестанак пола LAN-а без поруке о грешци је исправно понашање те табеле.

tracert -d 192.168.1.40 потврђује то ван табеле: ако је први скок адреса тунела, а не ваш сопствени рутер, рута је цела прича. На Linux-у исто питање је ip route get 192.168.1.40, који исписује изворну адресу и уређај у једном реду. Када одговор назове tun0, престаните да гледате у прегледач.

Корак 3: проверите повратни пут пре него што окривите клијента

Исправна рута напред ипак отказује ако далека страна не може да одговори. Када се до LAN-а клијента долази кроз тунел, гејтвеј тог LAN-а мора да зна где живи базен тунела: ip route add 10.8.0.0/24 via 192.168.1.12 на том рутеру, и push „route 192.168.1.0 255.255.255.0“ са сервера да би клијенти знали повратни пут.

Без првог уноса одговор напушта циљ ка својој подразумеваној гејтвеју, која прослеђује приватну адресу провајдеру и одбацује је. Симптом је једносмеран и лако се погрешно прочита: захтеви се појављују на tun0, одговори никада.

Правило masquerade на VPN хосту уклања потребу за том статичком рутом: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE. Оно такође скрива праве изворне адресе, што свако касније питање о дневницима чини тежим. Циљни хост са погрешном подразумеваном гејтвејем ствара исту тишину, са ICMP преусмеравањем у најбољем случају и црном рупом у уобичајеном, зато снимак припада оба краја.

Корак 4: изаберите поправку са којом можете да живите

За ово се користе пет поправки и оне нису заменљиве. Бирајте према томе шта мора да остане доступно истовремено, а не према томе која је команда најкраћа.

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

Метрике су јефтина опција и она по коју људи прво посежу. Промена се односи на интерфејс, па ради док је тунел подигнут, и припада скрипти поред клијента, а не шкољци коју ћете заборавити. Не може да пружи истовремени приступ истој адреси у две мреже, и управо то ограничење шаље све остале низ табелу.

Пренумерација кућне LAN мреже на 10.10.0.0/24 је чисто решење: једно обнављање DHCP закупа плус резервације, редови за штампу и чврсто кодиране адресе које помињу стари опсег. Пренумерација канцеларијске стране обично није ваша одлука. IPv6 потпуно уклања сукоб када га носе обе мреже, користећи јединствени локални префикс из fd00::/8 уместо нечега што се памти, али тестирајте апликацију преко TCP-а, не пингом, јер ICMP може да ради док услуга не ради.

Сопствена опција превода OpenVPN-а је последње средство, шаље се са сервера у запис директоријума специфичан за клијента. После имена опције узима четири параметра — смер, мрежу, маску и алијас — и алијас није опцион: push "route 192.168.2.0 255.255.255.0" и push "client-nat dnat 192.168.2.0 255.255.255.0 192.168.1.0". Мрежа и маска су опсег који клијент види (192.168.2.0/24), алијас је стварни канцеларијски опсег на страни сервера (192.168.1.0/24), а послата рута чини тај видљиви опсег доступним. Канцеларија се тада том клијенту приказује под 192.168.2.x. Документујте мапирање у профилу, иначе ће следећа особа то дебаговати као грешку рутирања.

Објављивање једне услуге је уска верзија превода и уопште не захтева опцију OpenVPN-а. DNAT правило на VPN хосту поново објављује један порт, па LAN задржава своје адресе и достиже услугу на адреси хоста коју већ зна. Цена је уобичајена: услуга види VPN хост као извор, па дневници по клијенту и обрнуте претраге престају да значе било шта. То покрива један ред за штампу или једну административну страну, не хостове са обе стране који се међусобно достижу.

Шта ипак неће радити и шта да запишете

Емитовање не прелази рутирани тунел. DLNA, UPnP, прегледање NetBIOS-а и Wake-on-LAN зависе од емитовања или мултикаста који tun уређај не носи, па ниједна рута не поправља откривање. Мост са dev tap проширује сегмент, а с њим DHCP емитовања, ARP и сваки други пакет откривања; претпоставите unicast руту до хоста, на пример route 192.168.2.1 255.255.255.255, за адресу са LAN стране удаљеног рутера.

Два рутера која оба користе 192.168.1.1 на истом путу припадају истој породици проблема: локална адреса увек побеђује, па страна удаљеног рутера остаје недоступна док се једна LAN не пресели. Додавање другог адаптера ништа не мења ни у једном од два случаја.

Запишите доказе пре него што било шта уредите: ip route get или Find-NetRoute, ping -c 3 до дотичне адресе, traceroute, и tcpdump -ni tun0 icmp на клијенту, затим табелу рутирања и NAT бројаче на серверу. Ping који ради у једном смеру и умире у другом указује на повратни пут, не на тунел, и управо та разлика одлучује која од горњих поправки вам је заиста потребна.

Повезани чланци