Туннельді қонақтың ішінде құру да, оны хостта құру да браузер хабарлайтын мекенжайды өзгертеді, және ұқсастық осы жерде бітеді. Қонаққа тиесілі туннель өз кілттерін, әдепкі бағытын және шешушісін қонақ ядросының ішінде ұстайды, ал хост шифрланған пакеттерді бір қашықтағы мекенжайға жібереді. Хостқа тиесілі туннель — оның айна бейнесі: хост клиенті сеансты ұстайды және бағыттар мен саясатты қолданады, ал қонақ сыртқа шыққанды қарызға алады. Қате иесін таңдасаңыз, кейінгі әрбір белгі сізді қате машинаға жібереді. Екі команда бұл сұрақты шамамен бір минутта шешеді, ал бұл нұсқаулықтың қалғаны — жауаппен не істеу керектігі.

Клиентке қол тигізбес бұрын иесін анықтаңыз

Ереже шифрланған мәтіннің қайда өндірілетіні туралы, қай машина VPN белгішесін көрсететіні туралы емес. Егер оны қонақ өндірсе, қонаққа VPN серверіне жұмыс істейтін бағыт қажет және хосттан басқа ештеңе қажет емес. Егер оны хост өндірсе, қонақтың хост арқылы өтетін жолы хост клиенті жергілікті трафикке жүктейтін кез келген саясатқа төтеп беруі керек.

Әдетте үш сұрақ орналасуды сіз үшін таңдайды. Қонақтың трафигі хосттағы корпоративтік клиенттен өтуі керек пе? Онда туннель қонақтың ішінде. Бірнеше қонаққа бір тіркелгі дерегі мен бір шығыс мекенжайы керек пе? Онда ол хостта, қасақана реттелген қайта бағыттаумен. Қонақтың трафигі хосттың VPN-інен толығымен тыс қалуы керек пе? Онда қонақ туннелі ғана мұны құрылымы бойынша береді.

Жауапты VM атауының жанына бір жолға жазып қойыңыз: guest-owned немесе host-owned. Алты машинадан тұратын зертханада бұл жазба төмендегі кез келген қадамнан көбірек уақыт үнемдейді, өйткені ол сізді кірген машинада ешқашан болмаған туннельді тексеруден сақтайды.

WSL1 мен WSL2 — қарама-қарсы жағдайлар

WSL1 виртуалды машина емес, сондықтан орналасу сұрағы көбіне буланып кетеді. Оның Linux бинарлық файлдары аударма қабаты арқылы Windows желілік стекіне қарсы жұмыс істейді, ал Linux VPN клиентінің конфигурациялайтын дербес интерфейстері жоқ. Жұмыс істейтін нұсқа — Windows жағындағы туннель, ал дистрибутив ештеңеге ие болмай-ақ нәтижені пайдаланады.

WSL2 — керісінше. Ол Hyper-V виртуалды коммутаторының артындағы жеңіл көмекші VM-де нақты ядроны іске қосады, ал оның мекенжай кеңістігі хост жағындағы адаптер арқылы NAT-талады. Сондықтан дистрибутив ішіндегі Linux клиенті физикалық Linux жәшігіндегідей әрекет етеді: ол tun0 немесе wg0 жасайды, өз бағыттарын орнатады және жұмыс істейді. Ақау хост жағында тұрады. Windows VPN клиенті жергілікті желілерде трафикті бөгейтін саясатпен қосылғанда, ол WSL2 ішкі желісін сенімсіз жергілікті желі деп санайды және NAT жолын кеседі. Сонда дистрибутив DNS пен сыртқы қатынасты жоғалтады, ал өз туннелі әлі сау: wg show қол алысуды хабарлайды, ip route дұрыс көрінеді, ал curl ілініп қалады.

Қандай түзетуді қолдана алатыныңыз Windows жинағына байланысты. Ескісі — WSL ішкі желісі үшін хост клиентіндегі ерекшелік, ол клиенттің жергілікті желі немесе бөлінген туннель параметрлерінің астына қосылады. Жаңасы, оны қолдайтын Windows 11 жинақтарында, айналы желілеу: %UserProfile%\.wslconfig файлының [wsl2] бөліміне networkingMode=mirrored қойыңыз, wsl --shutdown іске қосыңыз, сонда дистрибутив жеке NAT ішкі желісінің орнына хосттың интерфейстерін бөліседі. Айналы режим localhost пен кіріс порттарының әрекетін де өзгертеді, сондықтан оны ауыстырып-қосқыш емес, көшіру ретінде қарастырыңыз.

NAT, көпір және хост нені көре алады

NAT астында қонақтың туннель пакеттері VPN серверінің жария мекенжайына бағытталады және хост адаптерінен шифрланған UDP немесе TCP ретінде шығады. Хост бір ағынды және оның байт санын көреді, ішіндегі межелер туралы ештеңе көрмейді. Көпірлі адаптер астында қонақтың физикалық LAN-да өзінің 2-деңгейлік сәйкестігі бар, өз DHCP жалдауын алады және MAC негізіндегі кез келген саясатқа екінші құрылғы болып көрінеді. Екі режимнің ешқайсысы хостқа туннель жүктемесін оқуға мүмкіндік бермейді; көпірлі қонақ жай ғана айналасындағы желіге әлдеқайда көрінеді.

Оқшаулаудың да төменгі шегі бар. Қонақ өз жадысына ие машинадан жасырына алмайды, ал хостты басқаратын адам қонақтың RAM-ынан кілттерді оқи алады. Қонақ туннелі сізге бағыттау шекарасы мен зиянды бағдарлама шекарасын береді, ноутбукті ұстап отырған адамнан қорғанысты емес. Құжатталған адаптер режимдерін таңдау кезінде ашық ұстаған жөн, өйткені режим хост көретін де, LAN көретін де нәрсені өзгертеді.

Нұсқаулық: орналастыру, конфигурациялау, дәлелдеу

Осы төрт тексеруді жаңа қонақ қабығында ретімен орындап, жазған иесіне сәйкес келмейтін біріншісінде тоқтаңыз.

  1. ip route get 1.1.1.1 tun0 немесе wg0 қайтарса — қонақтың меншігі, ал жеке келесі секіріспен eth0 қайтарса — хосттың меншігі.
  2. resolvectl query example.com, немесе қонақ шешуші қызметті іске қоспайтын жерде /etc/resolv.conf оқыңыз. Трафикті таситын, бірақ DNS-ті тасымайтын туннель — ең көп кездесетін жартылай конфигурацияланған күй.
  3. Шығыстарды салыстырыңыз: қонақта curl -4 -s https://ifconfig.me және хостта curl.exe -4 -s https://ifconfig.me. Әртүрлі мекенжайлар қонақ туннельге ие дегенді білдіреді, ал VPN-дегі хост үй провайдерін көрсететін қонақпен бірге — «ештеңе мұраға алынбады» жағдайы.
  4. Екеуін де -6-мен қайталаңыз. Тек v4 туннелі v6-ны ағызады, егер клиент оны бөгемесе немесе бағыттамаса, ал көп клиент әдепкі бойынша v6-ны физикалық интерфейсте қалдырады.

Бірнеше қонақ бір туннельді бөлісетін хост-шлюз дизайнында хост қайта бағыттап, аударуы керек. Linux хостта бұл үш бөлік, және олардың бірі жоқ болса, қонақ үнсіз әдеттегі бағытына қайтады:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
iptables -A FORWARD -i virbr0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT

WireGuard жағында хост серіктесінің AllowedIPs мәні қонақтардың ішкі желісін қамтуы керек, мысалы 192.168.122.0/24, әйтпесе қайтарым пакеттер ешқашан жетпейді және конфигурация өрт қабырғасының мәселесіне ұқсайды. Windows хост Интернет қосылысын бөлісу немесе Hyper-V коммутаторындағы NAT ережесі арқылы сол нәтижеге жетеді және сол қайтарым жолын тексеруді қажет етеді.

Орналасу әлі ашық болса, бұл кесте ең жиі кездесетін нұсқаларды қамтиды:

SituationOwnerCheck first
One VM, host also on a corporate VPNGuestDoes the host client block local networks?
Six lab VMs, one exit addressHost plus forwardingip_forward, NAT rule, server AllowedIPs
Malware or research VMGuest, NATSnapshot age and resolver state
Bridged VM on an office LANGuestDHCP lease and port security

Екі туннель, екі қонақ және олардың арасындағы қайшылықтар

Бір уақытта екі шығыс қажет болса, төтеп беретін үлгі — әр қонаққа бір туннель. Әр VM өз әдепкі бағыты мен шешушісін сақтайды, хост кәдімгі желіде қалады, ал екі туннель бір бағыттау кестесі үшін ешқашан таласпайды. Екі қонақты көпірмен қосу олардың бағыттарын да біріктірмейді: виртуалды желі жол береді, ал әр клиентке бұл жергілікті трафиктің туннельді айналып өтуі мүмкін екенін әлі де айту керек.

Хост туннелі мен қонақ туннелін бірге іске қосу заңды, және әдейі біріктіру кейде дәл керек нәрсе: қонақ өз туннелінен шығады, ал ол туннель хосттың туннелінен шығады. Мұны үзіліске айналдыратын нәрсе — қай соңғы нүктеге қай қабаттан жету керектігін ешкім жазып қоймаған. Меже мен иесінен тұратын екі бағанды тізім ұстаңыз, сонда бағыт қайшылығы түстен кейінгі іздеудің орнына бір сұрауға айналады.

Тексеріңіз, содан кейін қалпына келтіруді иесінде қалдырыңыз

Қонақтың ішінен сынаңыз жаңа қолданба процесімен: трафик, атауды шешу, екі мекенжай тұқымдасы және туннель құлағанда не болады. Хосттың VPN белгішесі қонақтың қамтуы туралы ештеңе айтпайды, және бұл осы саланың барлығында ең жиі кездесетін жалған растау.

Қалпына келтіру де иесіне тиесілі. Қонаққа тиесілі туннель қонақтың өз клиентімен және оның жазған бағыттарымен қалпына келеді. Хостқа тиесілі дизайн хосттың жүктелу ретімен қалпына келеді, ал қайта бағыттау ережелері unit немесе іске қосу тапсырмасы оларды қайта қолданбаса, қайта жүктеуден кейін қалмайды. Қалпына келтірілген сурет — орналастыру, болдырмау емес, өйткені ол дискімен бірге ескі тіркелгі деректері мен ескі бағыттарды қайтарады. Жұмысты аяқталды деп жарияламас бұрын иесінің жазған жолыңызға әлі сәйкес келетінін, DNS пен екі мекенжай тұқымдасының қонақтың ішінде шешілетінін, өлі туннельдің қара құрдымның орнына пайдалануға жарамды желі қалдыратынын және қайта жүктеу немесе суретті қалпына келтіру сол күйді қайталайтынын растаңыз.

Қатысты мақалалар