Tiga perkara mesti sepadan sebelum terowong Kerio membawa trafik: alamat pada antara muka kvnet, nilai yang direkodkan oleh klien, dan apa yang dijangka oleh dasar pelayan atau DHCP. Apabila ia tidak sepadan, terowong itu tetap mengesahkan dan tetap naik, dan itulah yang menjadikan kegagalan itu mengelirukan. Antara muka dicipta bagi setiap sambungan, jadi alamat yang ditetapkan dengan tangan hanya milik sesi itu dan bukan yang lain. Itulah bentuk masalahnya, dan penyelesaiannya ialah cangkuk, bukan fail konfigurasi. Selebihnya ialah dari mana membaca nilai itu dan di mana menerapkannya.

Mengapa alamat itu terus kembali

kvnet ialah penyesuai maya yang dicipta oleh klien apabila sambungan bermula dan dibuang apabila ia berakhir. Jadi ip link set manual kekal tepat selama sesi tempat ia digunakan, dan sambungan seterusnya bermula dengan apa yang diperuntukkan oleh klien. Pada mesin yang klien gagal menerapkan alamat yang dijangka, setiap sambungan semula memperkenalkan semula ketakpadanan yang sama, dan peraturan pajakan atau akses menolak peranti itu lagi.

Corak itu sendiri sudah diagnostik. Terowong yang berfungsi untuk satu sesi dan gagal pada sesi berikutnya bukan masalah kelayakan, kerana kelayakan tidak berubah antara sambungan.

Baca nilai itu daripada klien, bukan daripada antara muka

Klien Linux menulis butiran rundingan ke log nyahpepijatnya, dan alamat yang hendak digunakannya muncul di sana sebagai token berbentuk alamat terakhir dalam jujukan sambungan. Bandingkan dengan apa yang sebenarnya dipegang oleh kernel, yang hanya satu readlink jauhnya: cat /sys/class/net/kvnet/address.

Jika kedua-duanya berbeza, klien tahu nilai yang betul dan gagal menerapkannya, dan cangkuk yang menerapkannya selepas antara muka wujud menutup jurang itu. Jika log tidak mengandungi alamat sama sekali, masalahnya lebih awal dan tergolong pada versi klien atau profil pelayan, bukan pada skrip.

Terapkannya selepas antara muka wujud

Pengguna NetworkManager boleh meletakkan skrip dalam direktori penghantarnya dan bertindak hanya apabila antara muka VPN naik. Klien yang diuruskan oleh systemd memerlukan lebih kehati-hatian: drop-in yang berjalan semasa perkhidmatan bermula biasanya aktif sebelum penyesuai wujud, jadi cangkuk mesti menunggu antara muka dan bukannya menganggapnya. Tetapkan alamat itu kemudian, dan jika kernel menolak semasa pautan naik, turunkannya, tetapkan alamat dan naikkannya semula. Baca semula token yang diekstrak melalui corak MAC sebelum menyerahkannya kepada ip link, supaya baris log yang tidak dijangka tidak boleh menjadi hujah.

Apa-apa yang berjalan sebagai root daripada log klien layak mendapat pemilikan yang sempit: fail milik root, tidak boleh ditulis oleh orang lain, dan tiada interpolasi shell melebihi alamat yang disahkan. Simpan pemeriksaan corak di dalam skrip. Jangan biarkan kandungan log menentukan arahan mana yang berjalan.

Sahkan pajakan, bukan pautan

ip -4 -o addr show dev kvnet sepatutnya menunjukkan alamat dalam julat yang dijangka, ip neigh show dev kvnet sepatutnya menunjukkan get laluan, dan satu perkhidmatan di belakang VPN sepatutnya menjawab. Kemudian putuskan sambungan dan sambung semula sekali; jika alamat kembali, cangkuk itu tercetus pada peristiwa yang salah atau tidak tercetus langsung.

Antara muka yang muncul dengan alamat betul dan tidak pernah mendapat pajakan menunjuk ke sebelah pelayan. Itu pemeriksaan lain dan biasanya pasukan lain. Sahkan bahawa akaun dibenarkan dan kumpulan itu masih mempunyai alamat sebelum menyunting cangkuk lagi.

Semak semula jalan pintas selepas peningkatan

Binaan klien yang menetapkan alamat dengan betul membiarkan cangkuk anda menerapkan nilai yang lapuk, yang merupakan kerosakan baharu yang diperkenalkan oleh pembetulan. Jangan sekali-kali menyalin MAC daripada mesin lain atau kiriman forum juga; gunakan nilai yang direkodkan oleh klien ini untuk akaun ini, dan catat tarikh anda mengesahkannya.

Pastikan skrip cukup pendek untuk dibaca dalam satu sesi duduk. Jalan pintas yang menghuraikan log bersifat sementara. Yang bertahan ialah yang dapat difahami pembaca masa depan tanpa benang asal.

Artikel berkaitan