VPN мен үйдегі LAN бірдей ішкі желіде: алдымен маршрутты қарап шығыңыз
Екі адаптер де 192.168.1.0/24-ке таласады және тек бір маршрут жеңеді. Қайта нөмірлеу немесе DNS-ті кінәлау алдында адаптер тізімін, жеңген маршрутты және қайтару жолын қарап шығыңыз.
Сіз кеңсе 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-да көрінеді, жауаптар ешқашан.
VPN хостындағы masquerade ережесі сол статикалық маршрутқа қажеттілікті жояды: iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE. Ол нақты көз мекенжайларын да жасырады, бұл әр кейінгі журнал сұрағын қиындатады. Әдепкі шлюзі қате мақсат хост та сол тыныштықты тудырады: ең жақсы жағдайда ICMP қайта бағыттау, қалыпты жағдайда қара құрдым, сондықтан түсірілім екі шетте де керек.
4-қадам: бірге өмір сүре алатын жөндеу таңдаңыз
Бұл үшін бес жөндеу қолданылады және олар бірін-бірі алмастырмайды. Қай команда қысқа екеніне емес, бір уақытта не қолжетімді болуы керектігіне қарап таңдаңыз.
| 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 |
Метрикалар — арзан нұсқа және адамдар бірінші ұмтылатын нәрсе. Өзгеріс интерфейске қатысты, сондықтан туннель тұрғанда жұмыс істейді, және оның орны клиенттің жанындағы скриптте, ұмытып кететін shell-де емес. Ол екі желіде бір мекенжайға бір уақытта қатынау бере алмайды, және дәл осы шек қалғандардың бәрін кестенің төменіне жібереді.
Үй LAN-ын қайта нөмірлеу 10.10.0.0/24-ке — таза шешім: DHCP жалдауын бір жаңарту плюс ескі ауқымды атайтын резервациялар, принтер кезектері және қатты кодталған мекенжайлар. Кеңсе жағын қайта нөмірлеу әдетте сіздің шешіміңіз емес. IPv6 екі желіде де болса, қақтығысты толығымен жояды, есте қаларлық нәрсенің орнына fd00::/8-ден бірегей жергілікті префикс қолданып, бірақ қолданбаны TCP арқылы тексеріңіз, ping-мен емес, өйткені 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 опциясы мүлдем қажет емес. VPN хостындағы DNAT ережесі бір портты қайта жариялайды, сондықтан LAN мекенжайларын сақтайды және өзі білетін хост мекенжайында қызметке жетеді. Құны әдеттегідей: қызмет VPN хостты көз ретінде көреді, сондықтан клиент бойынша журналдар мен кері сұраулар мағынасын жоғалтады. Бұл бір принтер кезегін немесе бір әкімшілік бетін қамтиды, екі жақтағы хосттардың бір-біріне жетуін емес.
Не әлі де істемейді және нені жазу керек
Тарату маршрутталған туннельден өтпейді. DLNA, UPnP, NetBIOS шолуы және Wake-on-LAN tun құрылғысы тасымайтын таратуға немесе көптаратуға тәуелді, сондықтан ешбір маршрут табуды түзетпейді. dev tap-пен көпірлеу сегментті кеңейтеді, онымен бірге DHCP таратуларын, ARP-ны және басқа да табу пакеттерін кеңейтеді; қашықтағы роутердің LAN жағы мекенжайы үшін route 192.168.2.1 255.255.255.255 сияқты unicast хост маршрутын таңдаңыз.
Бір жолда екеуі де 192.168.1.1-ді қолданатын екі роутер — сол мәселе отбасы: жергілікті мекенжай әрқашан жеңеді, сондықтан бір LAN көшпейінше алыс роутердің беті қолжетімсіз болып қалады. Екінші адаптер қосу екі жағдайдың ешқайсысында ештеңе өзгертпейді.
Бірдеңені өңдеу алдында дәлелдерді жазып алыңыз: ip route get немесе Find-NetRoute, тиісті мекенжайға ping -c 3, traceroute, және клиентте tcpdump -ni tun0 icmp, содан кейін серверде маршруттау кестесі мен NAT санауыштары. Бір бағытта жұмыс істеп, екіншісінде өлетін ping туннельді емес, қайтару жолын нұсқайды, және дәл осы айырма жоғарыдағы жөндеулердің қайсысы шынымен қажет екенін шешеді.