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

Жұмыс істеп тұрған туннельдің сыртқа шығатын жолы неге жоқ

Ядро пакеттерді интерфейстер арасында қайта бағыттауы керек, бұл көптеген Linux таратылымдарында әдепкісінде өшірулі. Трафик сыртқы әлем жауап бере алатын мекенжайға аударылуы тиіс, егер әрбір жоғарғы маршрутизатор туннель қосалқы желісіне қайтатын жолды бұрыннан білмесе. Брандмауэрдің қайта бағыттау жолы трафикті екі бағытта да рұқсат етуі керек, жауаптарды қоса.

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

Сондықтан клиентті емес, үш қабатты тексеріңіз және нәтиженің мәні болуы үшін бір уақытта біреуін өзгертіңіз.

Қайта бағыттау — тұрақты ету керек ядро ажыратқышы

Өзгертуден бұрын ағымдағы мәнді тексеріңіз, сосын оны орнатып, өзгерістің күшіне енгенін растаңыз.

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward

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

Оны /etc/sysctl.d/ астындағы файлда тұрақты етіп жасаңыз, сосын білу үшін қайта жүктеудің орнына сол файлды қолданыңыз. FreeBSD-де баламасы — net.inet.ip.forwarding, ал тұрақтылық үшін rc.conf ішіндегі gateway_enable=YES. Қайта бағыттау өшірулі деп хабарлайтын құрылғы «пакеттер келеді, бірақ ештеңе қайтпайды» деген есептердің бүкіл тобын түсіндіреді. Әрбір жаңартудан кейін де параметрді тексеріңіз, өйткені қайта құрылған ядро немесе ауыстырылған құрылғы бейнесі оны ешкімге айтпай-ақ қалпына келтіруі мүмкін.

masquerade немесе бір бекітілген аудару мекенжайын таңдаңыз

Динамикалық сыртқы мекенжаймен masquerading — ең қарапайым дұрыс нысан. Туннель қосалқы желісін көз, сыртқы интерфейсті шығу деп атаңыз.

iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE

Статикалық жария мекенжаймен көзді дәл сол мекенжайға аудару болжамдырақ және тексеруге оңайырақ.

iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -j SNAT --to-source 198.51.100.10

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

Сүзгі кестесі — үшінші қақпа

Қайта бағыттау мен аудару екеуі де дұрыс болуы мүмкін, бірақ пакет сүзгі кестесінде өледі. ufw жиі кінәлі: оның қайта бағыттау саясаты DROP ретінде жеткізіледі, ал қалған конфигурация мүлдем дұрыс көрінуі мүмкін, сол бір параметр трафикті өлтіреді. Оны көтеру — құсбелгі емес, саналы қауіпсіздік шешімі.

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

Көпірленген туннель басқа жауапты талап етеді. Мекенжай физикалық портқа емес, көпірге тиесілі, сондықтан интерфейсті бағындыру оның бұрынғы мекенжайын алып тастайды және көпірдің өзі мекенжай алғанша хост жетімсіз көрінеді, оны dhclient br0 бере алады. Бұл ақау VPN мәселесіне ұқсайды, бірақ екінші деңгей мәселесі. Брандмауэрге қол тигізбес бұрын көпірдің өз мекенжайын тексеріңіз, өйткені сүзгі өзгерісі жіберетін мекенжайы жоқ хостты түзей алмайды.

Бет ешқашан жүктелмесе, қайда қарау керек

Туннель бар екенін дәлелдеу үшін сервердің туннель мекенжайына ping жіберіңіз. Сосын клиенттен жария мекенжайға traceroute іске қосып, қай жерде тоқтайтынын оқыңыз: серверде пакет жетеді, бірақ қайта бағытталмайды немесе аударылмайды; серверден әрі қарай мәселе жоғарғы жақта және сіздің қолыңызда емес.

ping -c 3 10.9.0.1
traceroute -n 198.51.100.10

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

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

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

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