VPN маршрут кэші өзгерісіңізді жасырып тұр ма? Үш нәрсені тексеріңіз
Linux-та тазалайтын жаһандық маршрут кэші жоқ. Ескірген тест әдетте ескірген socket, NAT жазбасы немесе қайта қолданылған профиль дегенді білдіреді. Үш тексеру оларды ажыратады.
Өзгеріс күшіне енбегенде маршрут кэшін тазалау бірінші инстинкт, ал заманауи Linux-та бұл бос әуре: жаһандық IPv4 маршрут кэші жылдар бұрын жойылған, сондықтан ip route show cache ештеңе басып шығармайды және тазалайтын ештеңе жоқ. Сізді алдайтын күй бір қабат жоғарыда өмір сүреді: socket ішінде, NAT салыстыруында, resolver-де немесе ескі профильді қайта қолданған желі менеджерінде. Үш сұрақ бұл жағдайларды ажыратады: қате жол жаңа ағыннан келе ме әлде ескі қосылымнан ба, платформаңыз маршруттарды мүлде кэштейді ме, және күй маршруттауда ма әлде оның үстінде ме. Интерфейсті қайта қоспас бұрын оларға жауап беріңіз.
Бірінші тексеру: ескі жол жаңа ағыннан келе ме?
Орнатылған қосылым өзі жасалған маршрутты сақтайды. Сондықтан туннель арқылы SSH сессиясы маршруттау кестесінің өзгерісінен аман қалады, ал жаңа сессия бірден жаңа жолды алады, және сондықтан «өзгеріс ештеңе істемеді» көбінесе «ескі socket әлі де оны ұстап тұр» дегенді білдіреді. Жаңа процесспен сынаңыз, әлдеқашан ашық тұрған терезеңізбен емес.
ss -tnp | head
ip route get 1.1.1.1
curl -m 5 -sS -o /dev/null -w '%{remote_ip}
' https://example.com
Соңғы команда жаңа қосылым шын мәнінде жеткен мекенжайды басып шығарады, және бұл күй терезесіне сенбей-ақ нақты жолды көрудің ең арзан жолы. Оны namespace немесе интерфейс қолдануы тиіс болған бастау мекенжайымен салыстырыңыз.
Егер жаңа ағын дұрыс жолды алса, ал ескісі қалпына келмесе, маршруттауға қарауды тоқтатыңыз. Маршрут дұрыс еді; сессия ескі еді.
Екінші тексеру: платформаңыз маршрут кэшін мүлде ұстай ма?
Linux-та жауап жоқ, көптеген нұсқаулықтар меңзеген мағынада. Лақтыратын жаһандық тағайындалу кэші жоқ, ал таңдалған маршрутты ұстайтын socket деңгейіндегі жазба socket-пен бірге босатылады. ip-route нұсқаулығының кэш бөлімі тарихи мінез-құлықты сипаттайды, ағымдағы ядрода тазалай алатын нәрсені емес.
Басқа платформалар өзгеше, және кеңестерді көшіру дәл осы жерде қателеседі. Windows мақсат кэшін ұстайды, оны netsh interface ip delete destinationcache арқылы тазалауға болады. BSD мен macOS route -n get арқылы әр мақсат бойынша іздеулерді көрсетеді, және олардың кэштері өз кестесі бойынша мерзімі бітеді. Осылардың бірінде жұмыс істейтін команда Linux-та ештеңе істемейді, сондықтан сол шешім сынағандардың жартысына сәтсіз көрінеді.
NAT немесе conntrack кестесі маршрут кэші емес, бірақ сол симптомды тудырады. Өзгерісіңізге дейін аударылған ағын өз аудармасын сақтайды, және conntrack -L оны маршруттау саясаты әлдеқайда ілгерілегеннен кейін де көрсетеді. Бұл ескірген күй, бірақ маршруттарды тазалау оған тимейді.
Үшінші тексеру: күй маршруттауда ма, әлде оның үстінде ме?
Басқа нәрсені оқымас бұрын ағымдағы іздеуді оқыңыз: тағайындалу үшін ip route get, содан кейін from және бастау мекенжайымен сол команда, содан кейін ip rule show. Егер осы үшеуі ниетіңізге сәйкес келсе, маршруттау түзетілетін қабат емес, және ескірген байқау басқа жерден келген.
Үш әдеттегі күдікті маршруттаудың үстінде отырады. Желі менеджері жойғаныңыздан кейін бірнеше секундтан соң сақталған профильден маршрутты қайта орнатуы мүмкін, сондықтан өзгерісіңіз қайта оралғандай көрінеді; кестені қайта өңдеу алдында nmcli connection show --active мен unit күйін тексеріңіз. Resolver кэші ескі мекенжайды қайтарады, бұл кэшті айналып өтетін құралмен сол атауды сұрағанша маршруттау ақауы сияқты көрінеді. Қолданбаның қосылым пулі ескі тағайындалуға жұмыс істейтін socket ұстайды және ядродан ешқашан жаңа шешім сұрамайды.
Үш жауап қандай қорытынды жасауға мүмкіндік береді
Жауаптарды біріктіріңіз, түзету әдетте өзін-өзі айтады. Маршрут кэші жоқ платформада жаңа ағынның қате жолды алуы саясаттың шынымен қате екенін білдіреді, сондықтан туннель орнатқан ережелер мен кестені оқыңыз. Ескі сессия тұрып қалғанда жаңа ағынның дұрыс жолды алуы мәселе қолданбада немесе socket-те екенін білдіреді. Екі жағдайда да дұрыс маршруттармен бұзылған байқау күйдің маршруттау үстінде екенін білдіреді.
Жалпы жаңартуға қарсы тұрыңыз. Желілік стекті қайта іске қосу немесе әдепкі маршруты туннель болып табылатын машинада барлық маршрутты жою дәл осыны түзету үшін қолданып жатқан қосылымыңызды үзуі мүмкін, және қай қабаттың сәтсіз болғанын айтатын дәлелді жояды.
Егер бірдеңені тазалау қажет болса, диагнозға сәйкес келетін ең кіші нәрсені тазалаңыз: бір процестің socket-тері, бір conntrack жазбасы, resolver кэші. Содан кейін сол жаңа ағын тестін қайталап, не өзгергенін жазыңыз.
Жазбаларыңызда үш күйді бөлек ұстаңыз
Сақталған конфигурация, ағымдағы іздеу және байқалған ағын — үш түрлі факт, және оларды «кэшке» біріктіру ақауды қайта жаңғыртуды қиындататын нәрсе. Маршрутқа ие профильді немесе unit-ті, ip route get шығысын, және нақты қосылымның бастауы мен тағайындалуын жазыңыз.
Олардың қасына платформа мен клиент нұсқасын жазыңыз, өйткені Windows мақсат кэшін тазалайтын түзету Linux хостына қолданылатын түзету емес, және екеуінің арасында көшірілген процедура дұрыс емес сабақ үйретеді. Мәселені басқа біреуге тапсырғанда, сол үш жол оған болжам жасаудың орнына сәтсіз күйді қайта жаңғыртуға мүмкіндік береді.