TUN/TAP: жарамсыз аргумент — OpenVPN фреймингінің сәйкессіздігі
22 кодымен жазу қателері әдетте тараптардың деректер пакеттерін фреймдеу туралы келіспегенін білдіреді, драйвер ақауын емес. Екі ұштағы қысуды салыстырыңыз, содан кейін құрылғы түрін.
Клиент аутентификациядан өтеді, журнал «қосылды» дейді, және ешбір пакет туннельден өтпейді. Сервер әрекетті write to TUN/TAP: Invalid argument (code=22)-пен аяқтайды, бұл драйвер ақауына ұқсайды және әдетте олай емес. Маршрутизаторларда және шағын Linux серверлерінде бұл жол көбінесе екі тараптың деректер пакеттерін фреймдеу жолы туралы келіспегенін білдіреді, сондықтан ядро өзіне берілген дешифрленген буферді қабылдамайды. Бұл кезде маршруттау әлі тексерілмеген.
Дұрыс маршруттау кестесі мен бұзылған фреймдеу келісімі клиент жағынан бірдей көрінеді: қосылған, және ештеңе жұмыс істемейді.
Туннель көтеріледі, бірақ одан ештеңе өтпейді
Туннель құрылғысындағы жазу қателері дешифрлеуден кейін және маршруттауға дейін орын алады. Демон пакетті дешифрлейді, оны интерфейске береді, ал интерфейс оны қабылдамайды, өйткені буфер осы құрылғы күтетін нәрсеге сәйкес келмейді. 22 коды жарамсыз аргументтің жалпы жауабы, сондықтан пайдалы ақпарат — қабат: бұл деректер жолы, қол алысу емес. Егер трафик кеше жұмыс істеп, бүгін конфигурация өзгеріссіз тоқтаса, желіге күмәндан бұрын әдепкі мәнді жылжытқан пакет немесе прошивка жаңартуына күмәнданыңыз.
Бірінші қатенің орнына деректер арнасын баптау айналасындағы журналды оқыңыз. Келісілген қысу режимі, dev түрі және жіберілген параметрлер — барлығы жоғарырақ егжей-тегжейде көрінеді және үш сәйкессіздіктің қайсысы екенін айтады.
Қысу — фреймдеу, өткізу қабілеті емес
Қысу қосылғанда, әрбір деректер пакеті қалай кодталғанын сипаттайтын тақырыпты тасымалдайды, және екі ұш та осы тақырып туралы келісуі керек. Ескі үлгі конфигурациясынан әлі де comp-lzo тасымалдайтын сервер, қысу жолы жоқ клиентпен бірге дәл осы қатені тудырады: сервер клиент ешқашан жазбаған тақырыпты күтеді. comp-lzo-ті compress lz4-v2-пен араластыру да дәл солай сәтсіз аяқталады, өйткені алгоритмдер өзгеше, екеуі де қысу деп аталса да. Бұл параметр заманауи байланыстарда өткізу қабілетінің мүмкіндігі емес, фреймдеу шарты.
Нұсқалардың мінез-құлқы тұзақ қосады. 2.5 сериясы қысу параметрлері үшін ескіру ескертулерін шығара бастады, ал 2.6 қысылған пакеттерден бас тарту мен деректерді жай ғана қысылмаған күйде қалдыру арасына шек сызады. Сондықтан маршрутизатор прошивкасының жаңартуы ешкім туннельді өңдеместен-ақ нақты келісімді өзгертуі мүмкін.
Екі ұшты теңестіріңіз немесе екеуінен де алып тастаңыз
Әрбір қысу директивасын санамалаңыз: сервер файлы, кез келген жіберілген параметрлер, клиентке тән файлдар және клиент профилі. Сервердегі comp-lzo клиентте сол сөзді қажет етеді, ал adaptive ескі құрастыруларда жалаң параметр әдетте білдіретін мұралық әдепкі мән. Маршрутизатордың GUI қосқышы LZO немесе қысу деп таңбаланған болса, сол параметрді жазады, сондықтан алгоритмдерді араластырудың орнына сәйкестендіріп орнатыңыз. Ұқсас атауды үйлесімді деп есептемеңіз.
Егер қысу қажет болмаса, оны екі ұштан да әдейі алып тастаңыз. Сервердегі allow-compression no қысылған пакеттерден бас тартады, бірақ клиенттер оларды ұсынуды тоқтатқаннан кейін ғана; клиент әлі қысуды жіберіп жатқанда оны қолдану сәйкессіздікті қарсы бағытта қайта жасайды.
Жіберуді және құрылғы түрін тексеріңіз
Сервер қысу директивасын негізгі файлынан немесе клиентке тән файлдан жібере алады, ал клиент жіберілген параметрлерді pull-filter арқылы алып тастай алады. Бір клиентті 4 егжей-тегжейде қосыңыз, сервер жариялағанды клиент қабылдағанмен салыстырып оқыңыз, содан кейін ешбір сүзгі оны алып тастамағанын растаңыз. Егер екі жақ қазір келіссе де қате қалса, құрылғы түрін қараңыз: бір ұштағы dev tap мен екінші ұштағы dev tun фреймдермен алмаса алмайды, және ядро жазуды дәл солай қабылдамайды.
Көпірлі TAP орналастыру серверде нақты көпірді қажет етеді, тек басқа құрылғы атауын емес. Интерфейсті көпірге қоспай tap0 деп қайта атау жазуды қабылдайтын, бірақ ешқайда бармайтын құрылғы жасайды.
Содан кейін бір клиент пен бір мақсатпен тексеріңіз: сервердің туннель мекенжайына, содан кейін оның LAN-ындағы хостқа ping жасаңыз. Біріншісі деректер арнасын, екіншісі қайта жіберуді дәлелдейді.