Толық туннельді OpenVPN: сервер жағында интернет шығысын қосыңыз
Әдепкі маршрутты итеру — толық туннель қызметінің тек жартысы. Серверге қайта бағыттау, шектелген қайта бағыттау ережесі және пулға қайту жолы да қажет.
Клиент аутентификациядан өтеді, пулдан мекенжай алады және VPN хостындағы қызметтерге жетеді, бірақ әрбір жария тағайындау уақыт бітуімен аяқталады. Шығуы жоқ туннель осылай көрінеді және төрт бөлек нәрсе орындалмайынша солай қалады. Клиент әдепкі маршрутты қабылдауы керек, сервер қайта бағыттауы керек, фаервол өтуге рұқсат беруі керек, ал жауаптарға пулға қайту жолы қажет. Төрт ақаулықтың да белгісі бір, сондықтан әр әрекетте бір элементті өзгертіп, нәтижесін жазып отырыңыз.
Әдепкі маршрутты итеріп шығарып, клиенттің не орнатқанын тексеріңіз
Сервер жағындағы жол қысқа, және ол тек итерілген опцияларды қабылдайтын клиенттерге әсер етеді. def1 пішімі бар әдепкіні жоюдың орнына екі жарты-әдепкі маршрут орнатады, бұл ағымдағы қосылымды тірі ұстап, сонымен бірге әрбір тағайындауды ұстап қалады.
push "redirect-gateway def1"
Қайта қосылғаннан кейін профильге сенудің орнына клиенттің маршруттау кестесін оқыңыз. Linux-те екі /1 жазбасы бастапқы әдепкінің жанында пайда болады, ал Windows сол жұпты 0.0.0.0/1 және 128.0.0.0/1 түрінде көрсетеді. Итерілген опцияларды елемейтін немесе олардан бас тартуға конфигурацияланған клиент өзінің ескі әдепкісін сақтайды және интернет трафигін туннельге ешқашан жібермейді. Серверде бірдеңе өзгертудің алдында осы мәселені шешіңіз, өйткені сервер жағындағы ешбір ереже оны өтей алмайды.
Қайта бағыттау — сервер параметрі, VPN параметрі емес
Маршруттауға тиіспес бұрын қайта бағыттау жалаушасын оқыңыз. Ондағы нөл ядро клиенттің пакетін қабылдап, оны әрі қарай жіберуден бас тартатынын білдіреді, бұл алыс жақтан фаервол блогына дәл ұқсайды. Мәнді жүйенің конфигурация каталогы арқылы орнатыңыз, сонда ол қайта жүктеуден кейін де сақталады.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Содан кейін хосттың өзінде интернет шығысына жұмыс істейтін маршрут бар екенін тексеріңіз. Сервердің қабығынан жасалған сұрау жоғарғы жолдың жарамды екенін дәлелдейді және клиент пакетін қайта бағыттау туралы мүлдем ештеңе айтпайды, сондықтан оларды екі бөлек сынақ ретінде қарастырыңыз. Егер сервер тағайындауға жете алмаса, қайта бағыттау конфигурациясының қандай да бір мөлшері көмектеспейді.
Тек көздеген өтуге рұқсат беріңіз, басқа ештеңеге емес
Қайта бағытталған пакеттер forward жолынан өтеді; VPN хосттың өзіне арналған трафик input жолынан өтеді. Бұлар бөлек шешімдер, ал input жолын ашу машина арқылы өтуге рұқсат бермейді. Оларды шатастыру — фаервол бәріне рұқсат беріп тұрғандай көрініп, клиенттер әлі де уақыт бітуіне тап болатын ең көп тараған себеп.
Минималды саясат пулдан шығу интерфейсіне қарай жаңа қосылымдарды қабылдайды және орнатылған ағындарға жататын жауаптарды қабылдайды. Оны әр жүктеуде қайталанатын ереже қосудың орнына, таратылымыңыз қолданатын ережелер жинағының иесіне қойыңыз; қайталанатын ережелер жинақталады және санағыштар мағынасын жояды.
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Әрбір тізбекті қабылдауға ауыстыру сынақты өткізеді және фаерволдың болу себебін жояды. Ауқымды пул мен шығу интерфейсінде ұстаңыз, ал байланыссыз қайта бағыттауды тыныш қалдырыңыз.
Жауаптарға баратын орын беріңіз
Пул мекенжайлары жеке, сондықтан жария сервер оларға жауапты тікелей жеткізе алмайды. Не VPN хост шығу кезінде бастау көзі мекенжайын аударады, не жоғарғы құрылғы пулға қайту маршрутын ұстайды.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Дәл бір аударма қабатын қосыңыз. Жоғарырақ орналасқан екінші NAT біріншісін жасырады және кейінірек бірдеңе бұзылғанда екі журналды да дерлік пайдасыз етеді. Егер жоғарғы маршрутизатор пулды әлдеқашан қайтарып отырса, хостта аударма қосу артық, ал қайту жолы сонда сол маршрутизатордың конфигурациясына тәуелді болады, сіздің конфигурацияңызға емес.
Бұлттық даналар тағы бір қақпаны қосады, өйткені кейбір платформалар бастау көзі мекенжайы дананың өзінікі емес пакеттерді сол тексеру жеңілдетілмейінше тастайды. Бұл параметр қонақтан тыс жерде және жергілікті сынақ машинасы жұмыс істеп тұрғанда ұмытылуы оңай.
Мұны сервер қабығынан емес, клиенттен дәлелдеңіз
Сандық IPv4 сұрауынан бастаңыз, содан кейін атау іздеу, содан кейін қолданба. ping қайта бағыттауды және аударманы дәлелдейді;ол атауды шешу туралы ештеңе дәлелдемейді, өйткені DNS опциялары клиент интеграциясы оларды орнатқанда ғана күшіне енеді.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
Өзгерістерді және кері қайтару қадамын барысында жазып отырыңыз, сонда сынақ сәтсіз болғанда шығу саясатын бір әрекетпен қайтаруға болады. Бұл рецепт тек IPv4-ті қамтиды; орналастыру барлық трафикті тасымалдайды деп мәлімдеу алдында IPv6-ны бөлек түгендеңіз.