LAN үшін маршруттауды жасайтын және сонымен бірге VPN-ге қосылатын құрылғылар өздерімен бірдей дауға түседі: туннель әдепкі маршрутқа ие болғысы келеді, ал LAN оны қайтарып алғысы келеді. OpenVPN қосылғанда, ол туннель арқылы әдепкі маршрутты немесе жартылай әдепкі маршруттар жұбын орнатуы мүмкін, бұл ноутбук үшін дұрыс, ал көршілері оның LAN мекенжайынан жауап күтетін қақпа үшін қате. Жауап VPN-нен бас тарту емес. Жауап екі шешімге екі бөлек кесте беру.

Бір әдепкі маршрут, екі иесі

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

OpenVPN-де дәл осы үшін ажыратқыш бар. route-noexec клиенттің негізгі кестеге мүлдем тиісуіне жол бермейді, ал ол қолданар мәндер route-up скриптіне route_vpn_gateway, dev және интерфейс мекенжайлары ретінде экспортталады. Содан кейін қай кесте қай маршрутты алатынын өзіңіз шешесіз, кейін оқи алатын кодта.

Саясат кестесі немесе негізгі кестені қайта жазу

ApproachWhat it buysWhat it costs
Separate table plus source ruleLAN traffic and host traffic keep independent defaultsEvery lookup now depends on rule order
Editing the main table onlyFewer moving parts on a single-purpose hostOne mistake takes the gateway offline entirely
Two half-default routesWorks for a full-tunnel clientAmbiguous on a host that must answer on its LAN address

Жеке кесте — бір қосымша желіден асып кеңейетін жалғыз нұсқа. Оған бір рет ат беріңіз, содан кейін атпен сілтеңіз, сонда ешкім санды есте сақтауға мәжбүр болмайды:

echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

Мұндағы мекенжайлар — орынбасарлар. Бірдеңе іске қоспас бұрын LAN префиксін, туннель қақпасын және құрылғы атауын өз орналастыруыңыздан ауыстырыңыз.

Ереже хостқа да сәйкес болуы керек

Тек LAN префиксіне сәйкес келетін ереже қайта бағытталған пакеттерді қамтиды. Ол қақпаның өзі жасайтын трафикті қамтымайды және LAN клиенттеріне қайтаратын, көзі ретінде қақпаның LAN мекенжайын таситын жауаптарды да қамтымайды. Бұл іздеулер main-ге түседі және әлі де туннель арқылы шыға алады.

Қақпаның өз LAN мекенжайы үшін екінші ереже қосыңыз немесе бірінші ережені екеуін де қамтитын жиынға кеңейтіңіз. Тәртіп маңызды: нақтырақ ережені бірінші қойыңыз және нәтижені көзді анық атайтын іздеумен тексеріңіз.

ip route get 203.0.113.9 from 192.168.50.1

Егер бұл жергілікті қалуы тиіс тағайындалу үшін туннель құрылғысын көрсетсе, кестеде не бар екеніне қарамастан ережелер жиынтығы қате.

NAT немесе алыс жақтағы маршрут

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

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADE

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

Кез келген жағдайда қайта бағыттау қосулы болуы керек, ал қатаң кері жол сүзгісі main сол көз үшін туннельді таңдамаған жағдайда жауапты тастай алады. Туннельді кінәламас бұрын әрекетті мәнді тексеріңіз.

Бөлу қайта қосылудан кейін де сақталсын

Қолмен қосылған ережелер мен маршруттар интерфейс қайта жасалғанда жоғалады, ал ескірген кесте жазбасы оны ақтаған сессиядан ұзақ өмір сүруі мүмкін. Кесте ережесін, туннель маршрутын және маскировкалау жазбасын клиенттің route-up скриптіне салыңыз, ал скрипттің басында кестені тазалаңыз, сонда ескі қақпа жаңа сессияға өтіп кете алмайды.

Екі жақтан тексеріңіз: қақпада LAN көзімен іздеу және LAN клиентінен туннель арқылы өтуі тиіс тағайындалуға нақты сұраныс. Бар болса да ешқашан таңдалмайтын маршрут, санауыштарды оқығанша мүлдем маршрут жоқ сияқты әрекет етеді.

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