VPN шлюзі қайта іске қосылғаннан кейін де IPv4 қайта бағыттауын тұрақты етіңіз
ip_forward мәнін клиент пакеттерін тасымалдайтын аттар кеңістігінде орнатыңыз, параметрге бір ие беріңіз және оның файлды өңдеумен шектелмей, қайта іске қосудан кейін де сақталатынын дәлелдеңіз.
Шлюзге ping жұмыс істейді, ал оның артындағы кез келген нәрсеге жету жұмыс істемейді, және бұл туннель емес, қайта бағыттау мәселесінің пішіні. Шлюзге жергілікті жеткізу туннель көтерілгенін және мекенжай беру жұмыс істегенін дәлелдейді; ол ядро пакетті бір интерфейстен екіншісіне өткізе ме, жоқ па, ол туралы ештеңе айтпайды. Кез келген sysctl-ге қол тигізбес бұрын, машина осы трафикті маршруттауға арналғанын растаңыз және клиентке қараған интерфейсті ұстайтын желілік контексті табыңыз. Содан кейін мәнді сол жерде оқыңыз, соңғы оқыған нұсқаулық кездейсоқ қараған жерде емес.
Шлюзге жету қайта бағыттаумен бірдей емес
Ядроның ішінде екі бөлек шешім қабылданады. Жергілікті мекенжайға жеткізу пакеттің жолын аяқтайды; қайта бағыттау оны басқа интерфейс арқылы қайтадан сыртқа шығарады, және бұл екінші шешім әр желілік аттар кеңістігі бойынша басқарылады. Шлюз толығымен қолжетімді бола алады, ал қайта бағыттау өшірулі тұрады, және ping пәрменінің жолынан бұл екі ақау бірдей көрінеді.
Клиент пакеті қай интерфейске келетінін және әрі қарайғы жол қай интерфейстен шығатынын жазып алыңыз. Екеуі де бір аттар кеңістігіне жатады, және маңызды параметр сол кеңістікте.
Мәнді пакеттер шын мәнінде бар жерде оқыңыз
Хосттың аттар кеңістігінде маршруттайтын шлюзде бір пәрмен сұраққа жауап береді: sysctl net.ipv4.ip_forward. Кіретін және әрі қарайғы жол аталған аттар кеңістігінде болса, сол кеңістіктен сұраңыз: ip netns exec vpn-gw sysctl net.ipv4.ip_forward. Хост мәні аттар кеңістігі мәнінің орнын баспайды, және хосттағы бірлік ештеңенің дәлелі емес.
Әр маршруттау контекстінде ip netns пәрменіне беруге болатын белгі бола бермейді. Контейнер орындау орталары мен қызметтер достық атпен ешқашан тіркелмейтін аттар кеңістіктерін жасайды, және олар үшін ортаны тексеру құралдарын қолданасыз. vpn-gw орнына нақты атауды немесе сол контекстке жететін орта механизмін қойыңыз, және хост деңгейінде болжауды тоқтатыңыз.
Параметрге бір ие беріңіз
Кәдімгі systemd хост-шлюзінде тұрақты нысан — әкімші таңдаған атауы бар drop-in файлы, мысалы /etc/sysctl.d/60-vpn-forwarding.conf, оның ішінде net.ipv4.ip_forward = 1 болады. Файлды жазыңыз, содан кейін тірі күй де өзгеруі үшін дәл сол файлды жүктеңіз: sudo sysctl -p /etc/sysctl.d/60-vpn-forwarding.conf, содан кейін кері оқу. Файл атауы мысал, резервтелген VPN жолы емес, және бастапқы сан маңызды, өйткені кейінірек сұрыпталған файлдар жеңеді.
Басымдық — тұрақтылық тыныш бұзылатын жер. Тарату жүктеушісін де, өз drop-in файлыңызды да тексеріңіз, өйткені procps sysctl --system соңында /etc/sysctl.conf файлын да оқиды, ал systemd-тің sysctl.d реті мүлдем басқа тізбек. Кейінгі меншіктеу сол кілтті бірден қайтара алады, сонда файлыңыз дұрыс, ал әсерлі мән қате болып қалады. Осы дауды жеңу үшін бар әкімші файлын қайта жазбаңыз; иесін тауып, сол жерде өзгертіңіз.
Жүктелуден кейін жасалған аттар кеңістігі хосттың drop-in файлымен мүлдем басқарылмайды. Оның параметрі оны жасаған нәрсеге тиесілі, ол контейнер орындау ортасы болсын немесе аттар кеңістігін дайындау бірлігі болсын. Сұрақтан жалтару үшін контейнерге кең хост артықшылықтарын беру дұрыс иесін анықтауға он минут жұмсағаннан да нашар мәміле.
Ажыратқышты бұрмас бұрын оның құнын біліңіз
ip_forward зиянсыз логикалық мән емес. Ядро құжаттамасы оны өзгерту бірнеше басқа IPv4 параметрін хосттың немесе маршруттаушының әдепкі мәндеріне қайтаратынын атап өтеді, сондықтан диагностикалық бұру басқа жерде жасалған реттеуді тастап кетуі мүмкін және оны ешқашан атамайды. Оған абайсыз жүргізуге болатын тексеріс ретінде емес, жанама әсерлері бар конфигурация өзгерісі ретінде қараңыз.
Бұл сондай-ақ клиент хостқа жете алмаған сайын оны өшіріп-қосуды жоққа шығарады. Егер мән әлдеқашан бір болса, ақау жолдың басқа жерінде, және сол кілтті үшінші рет қайта жазу оны қозғалтпайды.
Тұрақтылықты дәлелдеңіз, содан кейін жолдың қалғанын тексеріңіз
Мәнді төрт сәтте кері оқыңыз: өзгерістерден кейін бірден, VPN интерфейсі пайда болғаннан кейін, қайта қосылғаннан кейін және жоспарланған қайта жүктеуден кейін. Осы нүктелердің кез келгенінде кейін шегінетін мәннің екінші иесі бар, және тағы бір реттік жазу оны тек келесі қайта жүктеуге дейін жасырады.
Қосылған қайта бағыттау әлі де үш нәрсені тексеруді қалдырады. Клиентке межелі жерге маршрут керек, шлюзге әрі қарайғы маршрут және оны пайдалану рұқсаты керек, ал межелі жерге клиенттің туннель мекенжайына қайту жолы керек. Жеке маршрутталған LAN автоматты түрде NAT қажет етпейді, сондықтан үшеуінің қайсысы жетіспейтінін білмейінше masquerading қоспаңыз, және шлюздің өзінен емес, көзделген клиенттен тексеріңіз, өйткені шлюзде басталған сұраныс жаңа қосқан қайта бағыттау жолына ешқашан тимейді. IPv6 өзінің қайта бағыттау және маршруттау саясатын алып жүреді, сондықтан жұмыс істейтін IPv4 тесті ол туралы ештеңе айтпайды.
Runbook-та drop-in жолын, аттар кеңістігінің иесін және кері оқу пәрменін бірге ұстаңыз. Мұны келесі алатын адам мәнді оқи алуы, оның кімге тиесілі екенін көре алуы және бір минут ішінде мәселе тұрақтылықта ма әлде жолдың қалған бөлігінде ме екенін шеше алуы керек.