TUN/TAP etibarsız arqument: OpenVPN çərçivə uyğunsuzluğu
Kod 22 yazma xətaları adətən tərəflərin məlumat paketlərinin çərçivəsi barədə razılaşmadığını bildirir, sürücü nasazlığını deyil. Hər iki tərəfdə sıxılmanı, sonra cihaz növünü müqayisə edin.
Müştəri autentifikasiyadan keçir, jurnal «qoşuldu» deyir və heç bir paket tuneldən keçmir. Server cəhdi write to TUN/TAP: Invalid argument (code=22) ilə bitirir, bu sürücü nasazlığı kimi görünür və adətən elə deyil. Marşrutlaşdırıcılarda və kiçik Linux serverlərində bu sətir çox vaxt iki tərəfin məlumat paketlərinin necə çərçivələnməsi barədə razılaşmadığını bildirir, ona görə nüvə ona verilən deşifrə edilmiş buferi rədd edir. Marşrutlaşdırma həmin anda hələ yoxlanmayıb.
Düzgün marşrut cədvəli və pozulmuş çərçivə razılaşması müştəri tərəfindən eyni görünür: qoşulub, heç nə işləmir.
Tunel qalxır və heç nə ondan keçmir
Tunel cihazında yazma xətaları deşifrədən sonra və marşrutlaşdırmadan əvvəl baş verir. Demon paketi deşifrə edir, onu interfeysə verir və interfeys onu rədd edir, çünki bufer həmin cihazın gözlədiyinə uyğun deyil. Kod 22 etibarsız arqument üçün ümumi cavabdır, ona görə faydalı məlumat təbəqədir: bu, əl sıxışması deyil, məlumat yoludur. Dünən trafik gedib bu gün konfiqurasiya dəyişmədən dayanıbsa, şəbəkədən əvvəl defolt dəyəri dəyişdirən paket və ya proqram təminatı yeniləməsindən şübhələnin.
İlk xəta yerinə məlumat kanalının quraşdırılması ətrafındakı jurnalı oxuyun. Razılaşdırılmış sıxılma rejimi, dev tipi və göndərilən seçimlər hamısı daha yüksək sözçoxluğunda görünür və onlar sizə üç uyğunsuzluqdan hansının olduğunu deyir.
Sıxılma çərçivədir, buraxılış zolağı deyil
Sıxılma aktiv olduqda hər məlumat paketi necə kodlandığını təsvir edən başlıq daşıyır və hər iki tərəf bu başlıq barədə razılaşmalıdır. Köhnə nümunə konfiqurasiyadan hələ də comp-lzo daşıyan server, sıxılma sətri olmayan müştəri ilə birlikdə məhz bu xətanı verir: server müştərinin heç vaxt yazmadığı başlığı gözləyir. comp-lzo ilə compress lz4-v2 qarışdırmaq eyni şəkildə uğursuz olur, çünki hər ikisi sıxılma adlansa da alqoritmlər fərqlidir. Seçim müasir keçidlərdə buraxılış zolağı funksiyası deyil, çərçivə müqaviləsidir.
Versiya davranışı bir tələ əlavə edir. 2.5 seriyası sıxılma seçimləri üçün köhnəlmə xəbərdarlıqları verməyə başladı və 2.6 sıxılmış paketləri rədd etməklə məlumatı sadəcə sıxılmamış qoymaq arasında xətt çəkir. Beləliklə, marşrutlaşdırıcı proqram təminatının yenilənməsi heç kim tuneli redaktə etmədən faktiki razılaşmanı dəyişə bilər.
Hər iki tərəfi uyğunlaşdırın və ya hər ikisindən silin
Hər sıxılma direktivini sadalayın: server faylı, göndərilən istənilən seçimlər, müştəriyə xas fayllar və müştəri profili. Serverdə comp-lzo müştəridə eyni sözü tələb edir və adaptive köhnə quruluşlarda çılpaq seçimin adətən mənasını verən köhnə defolt dəyərdir. Marşrutlaşdırıcının LZO və ya sıxılma etiketli GUI açarı həmin seçimi yazır, ona görə alqoritmləri qarışdırmaq əvəzinə uyğunlaşdırın. Bənzər görünən adın uyğun olduğunu güman etməyin.
Sıxılma istənmirsə, onu hər iki tərəfdən qəsdən silin. Serverdə allow-compression no sıxılmış paketləri rədd edir, amma yalnız müştərilər onları təklif etməyi dayandıqdan sonra; müştəri hələ sıxılma göndərərkən tətbiq etmək uyğunsuzluğu əks istiqamətdə yenidən yaradır.
Göndərməni və cihaz növünü yoxlayın
Server sıxılma direktivini əsas faylından və ya müştəriyə xas fayldan göndərə bilər, müştəri isə göndərilən seçimləri pull-filter ilə ata bilər. Bir müştərini 4 sözçoxluğunda qoşun, serverin elan etdiyini müştərinin qəbul etdiyi ilə müqayisə edərək oxuyun, sonra heç bir filtrin onu silmədiyini təsdiqləyin. Əgər hər iki tərəf indi razılaşır və xəta qalırsa, cihaz növünə baxın: bir tərəfdə dev tap, digərində dev tun çərçivə mübadiləsi edə bilmir və nüvə yazmanı eyni şəkildə rədd edir.
Körpülü TAP yerləşdirməsi serverdə sadəcə fərqli cihaz adı deyil, həqiqi körpü tələb edir. İnterfeysi körpüyə əlavə etmədən tap0 adlandırmaq yazmanı qəbul edən və heç yerə getməyən cihaz yaradır.
Sonra bir müştəri və bir təyinatla yoxlayın: əvvəlcə serverin tunel ünvanına, sonra onun LAN-dakı hostuna ping göndərin. Birincisi məlumat kanalını, ikincisi yönləndirməni sübut edir.