Неліктен бірдей құнды маршруттар VPN ақауларын байқауды қиындатады
Бірнеше туннель бірдей құнды бөліскенде, әр ағын басқасын таңдай алады. Сәтті ping қосымшаңыз шын мәнінде қолданатын жол туралы ештеңе айтпайды.
Пайдаланушы ішкі қосымшаның бір машинадан жұмыс істеп, екіншісінен істемейтінін хабарлайды, ал қақпадан іске қосқан ping екі жағдайда да сәтті. Бірдей құнды бірнеше туннель болғанда бұл қайшылық емес. Әр ағын өзінің келесі секірісіне орналастырылады, сондықтан сіздің тексеруіңіз бен пайдаланушы сессиясы жай ғана әртүрлі жолдарды қолдануы мүмкін. Төмендегі шолу бірдеңені өзгертуден бұрын осы таңдауды қайта шығарады.
Бір ping, бірнеше ықтимал жол
Маршрутта бірдей құнмен бірнеше келесі секіріс болса, маршрутизатор әр пакет үшін біреуін таңдауы керек. Көптеген іске асырулар пакет өрістерін хэштейді, әдетте көз бен тағайындалу мекенжайларын протоколмен және порттармен бірге, жауаптар сол жолда қалуы үшін. Әртүрлі қосымшалар, тіпті бір қосымшаның әртүрлі қосылымдары әртүрлі хэштер шығарады.
Сондықтан қақпадан жасалған диагностика соншалықты аз дәлелдейді. Қақпаның өз тексеруінің өз мекенжайлары мен порттары, демек өз хэші бар. Ол сау туннельге қонуы мүмкін, ал пайдаланушы сынған туннельге қона береді.
Платформа келесі секірісті қалай таңдайды
Таңдауды болжаудың орнына қайта шығарыңыз. Ядродан сәтсіз сессиядағыдай көз бен тағайындалу үшін қай маршрутты қолданатынын сұраңыз. Бұл іздеу қарапайым тағайындалу іздеуі елемейтін өрістерді қамтиды. Оны жұмыс істеп тұрған клиенттен де іске қосып, екі жауапты салыстырыңыз:
ip route get 10.20.5.7 from 10.20.0.14
iproute2-нің жаңа шығарылымдары протокол мен тағайындалу портын да қабылдайды, бұл хэш оларды қамтығанда маңызды. Сол шығысты жұмыс істеп тұрған клиенттен жасалған дәл сол іздеумен салыстырыңыз, ал айырмашылық — сізге жетпеген дәлел.
| Observation | Likely cause | First check |
|---|---|---|
| Ping works, application fails | A different flow hash selects another tunnel | Per-flow lookup from the client's address |
| Some users fail, others do not | One tunnel lacks a prefix or selector | Compare both tunnels' installed routes |
| Fails only at larger sizes | Tunnels have different effective MTU | Probe the same size over each path |
| Fails after a reconnect | Stateful asymmetry between paths | Session state on both gateways |
Сәтсіз ағынды бақылаңыз, маршрут кестесін емес
Маршрут кестесі екі туннельді де тізіп, анықтама бойынша дұрыс көрінеді. Сұрақ — таңдалғаннан кейін әр туннель пакетпен не істейді. Екеуі де бірдей қорғалған префикстерді, бірдей жіберу рұқсатын және сол клиентке жететін қайтару жолын алып жүретінін тексеріңіз.
Ортадағы күйі бар құрылғыларға назар аударыңыз. Егер сұраныс бір туннельден шығып, жауап екіншісінен қайтса, онда бастапқы ағынды ешқашан көрмеген firewall немесе NAT оны тастайды. Екі туннель де трафикті дұрыс жібереді, ал қосылым әлі де сәтсіз аяқталады.
Әр жол үшін MTU-ды да тексеріңіз. Қосымша инкапсуляциясы бар жол пайдалануға болатын өлшемді кішірейтеді, ал бір туннельде сәтті өтетін тасымалдау екіншісінде кішірек туннель сынатын дәл сол өлшемде тоқтайды.
Бір жолды бір уақытта салыстырыңыз
Дизайн техникалық қызмет көрсетуге рұқсат берген жерде бір туннельді қызметтен шығарып, пайдаланушының тапсырмасын қайталаңыз. Егер ақау жоғалса, мәселе сіз алып тастаған жолға тиесілі, келесі қадам — маршруттау кестесін қайта қараудың орнына оның конфигурациясын көршісімен салыстыру.
Қайталанатын ping-дерді емес, нақты қосымшаны салыстырыңыз. Ақау белгілі бір келесі секіріске, пакет өлшеміне немесе қайта қосылғаннан кейінгі ауысуға сүйенетінін жазып алыңыз, өйткені бұл үш үлгі әртүрлі жөндеуге нұсқайды.
Соңында жолдар неліктен эквивалентті саналатынын және ақау олардың бірін қызметтен қалай шығаруы керектігін жазыңыз. Көпжолдылық жолдар шынымен алмастырылатын болғанда ғана қауіпсіз, және бұл болжауға емес, тексеруге тұрарлық дизайндық тұжырым.