Сиз кеңсе 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-кадам: чогуу жашоого боло турган оңдоону тандаңыз

Бул үчүн беш оңдоо колдонулат жана алар бири-бирин алмаштырбайт. Кайсы буйрук кыска экенине эмес, бир убакта эмне жеткиликтүү болушу керектигине карап тандаңыз.

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

Метрикалар — арзан вариант жана адамдар биринчи умтулган нерсе. Өзгөртүү интерфейске тиешелүү, ошондуктан туннель турганда иштейт, жана анын орду клиенттин жанындагы скриптте, унутуп кала турган 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 туннелди эмес, кайтуу жолун көрсөтөт, жана дал ошол айырма жогорудагы оңдоолордун кайсынысы чындап керек экенин чечет.

Тектеш макалалар