Бір LAN қосымша желісін OpenVPN арқылы өткізіп, әдепкі маршрутты сақтау
Бір қосымша желі туннельден өтіп жатқанда LAN әдепкі маршрутын сақтаңыз. Саясат кестесін негізгі кестені өңдеумен салыстырыңыз, содан кейін NAT немесе сервер жағындағы маршрутты таңдаңыз.
LAN үшін маршруттауды жасайтын және сонымен бірге VPN-ге қосылатын құрылғылар өздерімен бірдей дауға түседі: туннель әдепкі маршрутқа ие болғысы келеді, ал LAN оны қайтарып алғысы келеді. OpenVPN қосылғанда, ол туннель арқылы әдепкі маршрутты немесе жартылай әдепкі маршруттар жұбын орнатуы мүмкін, бұл ноутбук үшін дұрыс, ал көршілері оның LAN мекенжайынан жауап күтетін қақпа үшін қате. Жауап VPN-нен бас тарту емес. Жауап екі шешімге екі бөлек кесте беру.
Бір әдепкі маршрут, екі иесі
Қайта бағытталған трафик пен жергілікті туындаған трафик бір жолмен жүруге міндетті емес. LAN клиенттеріне туннель тек сіз таңдаған тағайындалулар үшін қажет, ал хосттың өзінің басқару сессиялары мен сол клиенттерге берген жауаптарына LAN әдепкі маршруты қажет. Екеуін негізгі кестеге араластыру екі түрлі сұраққа бір жауапты күштеп таңады.
OpenVPN-де дәл осы үшін ажыратқыш бар. route-noexec клиенттің негізгі кестеге мүлдем тиісуіне жол бермейді, ал ол қолданар мәндер route-up скриптіне route_vpn_gateway, dev және интерфейс мекенжайлары ретінде экспортталады. Содан кейін қай кесте қай маршрутты алатынын өзіңіз шешесіз, кейін оқи алатын кодта.
Саясат кестесі немесе негізгі кестені қайта жазу
| Approach | What it buys | What it costs |
|---|---|---|
| Separate table plus source rule | LAN traffic and host traffic keep independent defaults | Every lookup now depends on rule order |
| Editing the main table only | Fewer moving parts on a single-purpose host | One mistake takes the gateway offline entirely |
| Two half-default routes | Works for a full-tunnel client | Ambiguous 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 клиентінен туннель арқылы өтуі тиіс тағайындалуға нақты сұраныс. Бар болса да ешқашан таңдалмайтын маршрут, санауыштарды оқығанша мүлдем маршрут жоқ сияқты әрекет етеді.