UDP арқылы VPN бос тұрғанда тоқтайды: firewall ағыныңызды ұмытып кетті
Firewall бос UDP сәйкестендіруді тастап жіберуі мүмкін, ал клиент әлі де сессияны көрсетіп тұрады. Тоқтауды өлшеңіз, ең қысқа таймерді табыңыз, содан кейін шешім таңдаңыз.
VPN қосылады, біраз уақыт жұмыс істейді, содан кейін клиент әлі де сессияны көрсетіп тұрғанда трафикті өткізуді тоқтатады. Қайта қосылу оны түзетеді, сондықтан бұл клиенттің қатесіндей көрінеді. Әдетте бұл бос UDP сәйкестендіруді тастап жіберген және туннельдің әлі бар екенін білмейтін firewall немесе NAT құрылғысы.
Симптом диагноз қоюға жеткілікті тұрақты: ол белсенділік болмағаннан кейін пайда болады, жүктеме кезінде емес.
Бос тұрудан болатын тоқтау қалай көрінеді
Оны сипаттаудың орнына өлшеңіз. Трафик тоқтағанға дейін туннель қанша уақыт бос тұрғанын, жаңа шығыс пакет оны қайта жандандыра ма, клиент интерфейсі әлі де өз мекенжайын ұстап тұр ма — соны жазып алыңыз. Клиенттен жаңа сұраныс жұмыс істесе, бірақ бар ағынға жауап істемесе, күдікті — сәйкестендіру. Қайта қосылғанша ештеңе істемесе, клиенттің сессия күйі де жоғалған.
Екеуі де бос тұруға қатысты және әртүрлі түзетуді қажет етеді.
Бірдеңені өзгертудің алдында уақыттарды жазыңыз. Оның шамамен он бос минуттан кейін тоқтайтыны туралы есеп тексеруге болады, ал кездейсоқ үзілетіні туралы есепті тексеруге болмайды. Бұл айырмашылық таймердің соңынан жүресіз бе, әлде маршрут өзгерісінің соңынан жүресіз бе — соны шешеді.
Ұмытып кеткен құрылғыны табыңыз
Бір ағын үшін бірнеше құрылғы күй сақтай алады: жергілікті маршрутизатор, жоғары жақтағы аударғыш, бұлт шекарасы және хосттың firewall-ы. Әрқайсысының өз таймері бар, ең қысқасы жеңеді. Бес минуттық үзіліс әдетте бір құрылғының басқаларынан әлдеқайда төмен конфигурацияланғанын білдіреді.
Құжатталған әдепкі мән сіздің жолыңыздағы уақыт шегі деп ойламаңыз. Бұл бір құрылғының әдепкі мәні.
- Үй маршрутизаторы: көбінесе минуттар, кейде әлдеқайда аз.
- Бұлтты NAT немесе жүктеме теңгерушісі: UDP үшін арнайы құжатталған бос тұру уақыт шегін іздеңіз.
- Хосттың firewall-ы: netfilter бақылау таймерлері әр ағынға қолданылады.
Таймерлерді нақты жолда тексеріңіз
Linux-та netfilter бақылау таймерлері көрінеді және реттеледі: sysctl net.netfilter.nf_conntrack_udp_timeout және net.netfilter.nf_conntrack_udp_timeout_stream. Екіншісі трафик екі бағытта да көрінгеннен кейін қолданылады, сондықтан орнатылған туннель қарапайым сынақтан ұзақ өмір сүре алады.
RFC 4787 UDP NAT мінез-құлқын және ұсынылатын минимумдарды айқындайды. Өндірушінің әдепкі мәні әдеттен тыс қысқа көрінгенде сілтеме жасайтын анықтама осы.
Keepalive және қайта қосылу — әртүрлі құралдар
Keepalive сәйкестендіруді тірі ұстайды; қайта қосылу өлген сессияны қайта салады. Олар әртүрлі ақауларды шешеді және өзара алмастырылатын жылдамдық параметрлері емес. WireGuard-тың PersistentKeepalive тіркесі белгіленген аралықпен пакет жіберіп, NAT байланысын ашық ұстайды. OpenVPN-нің keepalive опциясы сол жұмысты өзінше атқарады. Ортадағы құрылғы ағынды әлдеқашан ұмытып, екі бағытты да тастап жатса, екеуі де көмектеспейді.
Өте жиі сынақтар жұмыс қосады, бірақ қате шекараны түзетпейді.
Бетті қайта жүктеумен емес, жаңа сұраныспен тексеріңіз
Таймерді өзгерткеннен немесе keepalive қосқаннан кейін бос тұру сценарийін дәл бұрынғыдай қайталаңыз. Содан кейін қамтылған қолданбадан шынымен жаңа сұраныс жасаңыз. Бұрын жүктелген браузер қойындысы кэштен көрсетілуі мүмкін және сізге ештеңе айтпайды.
Тоқтау жалғасса, бір хоп сыртқа жылжып, сол құрылғының күй кестесін тексеріңіз.