Сервердің IP мекенжайы өзгергеннен кейін SNAT ережесі әлі ескісін атайды
Туннель қосылуы мүмкін, бірақ әрбір жіберілген пакет тоқтап қалады, өйткені түрлендіру ережесі әлі хостта жоқ мекенжайға қайта жазады.
Сервер жаңа мекенжайға көшті, клиенттер әлі қосылуда, және олар жібергеннің ешбірі интернетке жетпейді. Дәл осы бөліну — белгі: тыңдаушы сокет пен портты қайта бағыттау көшуден аман қалды, сондықтан туннель көтеріледі, ал жіберілген пакеттерге қолданылатын бастау көзін түрлендіру әлі хостта жоқ мекенжайды атайды. Қайта жазылған сол пакеттерге жауаптар енді жоқ машинаға кетеді.
Қосылу мен жіберу әртүрлі жерде сәтсіз болады
Орнату клиенттер бұрыннан білетін шеткі нүктеге тәуелді: жария мекенжай, оның алдындағы портты қайта бағыттау және ішіндегі тыңдаушы. Жіберілген трафик пакет туннельге кіргеннен кейін қабылданатын екінші шешімге тәуелді, сол кезде хост өз бастауын қайта жазады, жауаптар қайту жолын табуы үшін.
Мекенжайдың өзгеруі тек екінші шешімді бұзады, сондықтан симптом "қосылған, бірақ интернет жоқ" деп оқылады. Бұл сонымен қатар клиент жағындағы әдеттегі тексерулердің неге сау көрінетінін түсіндіреді: қол алысу аяқталады, клиент мекенжай алады, тіпті сервердің туннель мекенжайына ping те жауап беруі мүмкін. Ақау екінші жақта тұрса да, клиентте сағаттар кетеді, сондықтан ережелер кестесі — бірінші қарайтын жер.
Өңдеуге дейін ережені және оның санауыштарын оқыңыз
Түрлендіру ережелерін санауыштармен тізіп, конфигурацияланған бастауды хост шын мәнінде ұстайтын мекенжайлармен салыстырыңыз. Өлі мекенжайға қайта жазылған ереже әдетте кіру жолында трафикті көрсетеді, өйткені пакеттер оған жетіп, түрленеді, ал қайту жолында ештеңе көрсетпейді.
sudo iptables -t nat -L POSTROUTING -n -v --line-numbers
ip -4 addr show
Сол жерде болғанда үш өрісті тексеріңіз: бастау сәйкестігіндегі пул, ереже біреуін атаса шығу интерфейсі, және туннельаралық трафиктің қайта жазылуын болдырмайтын ерекшелік. Бұл ерекшелікті өңдеу кезінде жоғалту оңай, ал оны жоғалту серіктестер арасындағы трафик жұмыс істеп тұрғандай көрінеді, бірақ оның жауаптары біртүрлі жолмен жүреді.
Егер санауыштар нөлде тұрып қалса, пакеттер бұл ережеге ешқашан жетпейді және мекенжай ағымдағы мәселе емес. Тізбекте ертеректегі бәсекелес ережені іздеңіз, бұл біреу түпнұсқаны өңдеудің орнына алмастырғыш қосқанда болады. Ереже нөмірлерін бір минут бұрын жазып алған шығыспен салыстырыңыз. Реттілік конфигурацияның бөлігі, сән бөлшегі емес.
Бастауды алмастырыңыз, немесе оны атауды тоқтатыңыз
Хосттың тұрақты мекенжайы болса, тағы біреуін қосудың орнына ережені орнында алмастырыңыз. Ереже нөмірі бойынша алмастыру тізбектің қалған бөлігі тәуелді реттілікті сақтайды.
sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.151.0.40
Мекенжай динамикалық берілсе, ешқандай бастауды атамаңыз және ядроға шығу интерфейсінен ағымдағыны таңдауға рұқсат етіңіз. Бұл нұсқа келесі көшуден өңдеусіз аман өтеді, қайсы мекенжай пайдаланылғанын жасыру құнымен.
sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -o eth0 -j MASQUERADE
IPv4 қайта бағыттауы басқарылатын конфигурация арқылы әлі қосылғанын растаңыз, содан кейін ережені дистрибутивтің өз механизмімен тұрақты етіңіз. Тек жұмыс істеп тұрған ядрода жасалған өзгеріс келесі қайта жүктеуде қайтады, әдетте ешкім өзгеріспен байланыстырмайтын қызмет көрсету терезесінде.
Алмастыруды қате жасаудың екі жолы
Пулді сервердің LAN мекенжайының орнына оның туннель мекенжайына түрлендіру жауаптарды тура туннельге қайтарады, онда олар ешқашан сұрамаған клиентке қарай бағытталады. Қосылым бағыттау ілмегіне ұқсайтын түрде тоқтайды, өйткені ол шын мәнінде ілмек.
Ескінің үстіне екінші түрлендіруді қабаттау — екінші қате. Бірінші сәйкес келген ереже жеңеді, сондықтан ескірген жазба жойылғанша пакеттерді өңдей береді, ал жаңа ереженің санауыштары нөлде қалады, бірақ бәрі алмастырғышты кінәлайды. Жаңа нәрсе қоспас бұрын көшірмені жойыңыз. Содан кейін тізімді тағы бір рет оқып, пулге дәл бір түрлендіру сәйкес келетінін растаңыз.
Егер туннель IPv6-ны да тасымалдаса, бүкіл шолуды екінші стекте қайталаңыз. Түрлендірусіз және бағытталған префикссіз IPv6 әдепкі маршруты дәл солай үнсіз сәтсіз болады, және оны ұмыту оңай, өйткені оның үстіндегінің бәрі бірдей көрінеді.
Кіріс қызметтерге кері түрлендіру қажет
VPN клиентіндегі сырттан қолжетімді болуы керек қызметке тағайындалу түрлендіруі қажет, бастау түрлендіруі емес: жария порт кірмес бұрын клиенттің туннель мекенжайына қайта жазылады. Содан кейін жіберу жолына сол трафикке рұқсат беретін айқын ереже қажет.
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.9.8.2:8080
Туннельдің өзін тасымалдайтын портты ешқашан түрлендірмеңіз, өйткені бұл қайта жазу қызметті қолжетімді ұстап тұрған қосылымды үзеді. Туннель портын тағайындалу ережелерінен толық тыс ұстаңыз. Соңында екі жақтан тексеріңіз: жаңа ережедегі санауыштар, туннель құрылғысында қысқа жазба және жария мекенжайды сынамас бұрын туннель ішіндегі мекенжайға бір сұраныс.