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

Бұдан былай шлюздің арғы жағындағы нәрсені тексеріңіз. Шлюздің өз мекенжайы қайта бағыттау қаншалықты бұзылса да жауап беруді жалғастырады.

Шлюз өз стегінен жауап береді

Шлюзге мекенжайланған пакет оның жергілікті кіру жолына жеткізіледі, онда ядро тыңдап тұрған сокеттің оны қабылдайтынын шешеді. Шлюздің артындағы хостқа мекенжайланған пакет оның орнына қайта бағыттау жолына жеткізіледі, онда басқа тексерулер жиынтығы қолданылады. Қайта бағыттауды толығымен өшіруге болады, немесе ядро оны қосып, содан кейін туннельді мүлде атамайтын сүзгі ережесі оны қабылдамауы мүмкін. Мұның ешқайсысы шлюздің өз жауабына әсер етпейді, сондықтан симптом соншалықты сенімді түрде адастырады.

Туннель арқылы қол жеткізілетін әкімшілік беттер де бірінші санатқа жатады. Олар туннель туралы дәлел, оның артындағы желі туралы емес.

Ағынды оны тастайтын бірінші шекараға дейін қадағалаңыз

Клиенттен бастаңыз және ағын қолданатын маршрут пен бастауыш мекенжайды растаңыз. Содан кейін шлюзде дәл осы ағынның келуін, қайтадан сол ағынның LAN жаққа кетуін бақылаңыз. Егер ол ешқашан келмесе, мәселе клиент жағында немесе туннельдің рұқсат етілген префикстерінде. Егер ол келіп, ешқашан кетпесе, мәселе қайта бағыттауда немесе алға жол сүзгісінде, ал жазу қайсысы екенін айтып қойған.

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

Қайту маршруттары мен хосттың өрт қабырғалары бөлек сәтсіздікке ұшырайды

Пакет хостқа жеткеннен кейін тағы үш нәрсе орындалуы керек. Қызмет пакет жіберілген мекенжайды тыңдауы керек, хосттың өрт қабырғасы оны қабылдауы керек, және жауаптың клиенттер пулына қарай қайту маршруты болуы керек. Соңғысы жиі сәтсіздікке ұшырайды, өйткені хосттың әдепкі маршруты туннель ауқымын ешқашан естімеген маршрутизаторға сілтейді. Нәтижесінде хост тұрғысынан орнатылатын және қарсы бағытта үнсіз өлетін қосылым пайда болады.

Қайту жолын әдейі тексеріңіз: клиенттен жіберіп, қайтуды бақылаңыз. Бірбағытты жазу бір сағаттық болжам шешпейтінді секундтарда шешеді.

Әрбір секірісті клиенттің бастауыш мекенжайымен растаңыз

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

ip route get 192.168.50.20 from 10.8.0.2
ping -I 10.8.0.2 -c 3 192.168.50.20
sudo tcpdump -ni tun0 host 192.168.50.20
sudo tcpdump -ni br0 host 192.168.50.20

Маршрут сұрауы клиенттің сол пакетті туннельге жіберетінін, ал ping хосттан бірдеңе қайтқанын көрсетеді. Екі жазуды салыстыру келуді шығудан ажыратады, өйткені туннель интерфейсіндегі жақтауға LAN интерфейсінде балама болмаса, бұл қызмет ақауы емес, қайта бағыттау шешімі. Екі жазу да сұрауды, тек біреуі жауапты көрсетсе, қалған күдікті — қайту маршруты.

Қай мекенжай жауап бергенін және қай бағытталған меже сәтсіз болғанын жазыңыз. Сол сөйлем есепті серверге қол жетпейді деген тұжырымның орнына іс-әрекетке жарамды етеді.

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