Anda meletakkan route-nopull dalam profil klien untuk menghentikan terowong menelan laluan lalai anda, dan kini subnet pejabat tidak dapat dicapai sedangkan klien masih mengatakan ia bersambung. Kedua-dua pemerhatian itu benar, dan tiada apa yang gagal. Bendera ini memberitahu klien supaya melangkau laluan dan entri DHCP yang ditolak pelayan, arahan yang lebih sempit daripada yang dijangka oleh kebanyakan orang apabila menambahnya. Yang tinggal ialah terowong yang berfungsi tanpa pendapat tentang destinasi mana yang harus menggunakannya.

Jurang itulah keseluruhan keputusan yang dibincangkan artikel ini. Sama ada pelayan menerangkan rangkaian, atau klien, dan bendera itu menyerahkan tugas itu kepada klien tanpa melakukan apa-apa daripadanya untuk anda.

Apa yang dimatikan bendera semasa menyambung

Klien OpenVPN yang menarik biasanya menerima berkas daripada pelayan selepas pengesahan: laluan, pengalihan semula get laluan lalai, pelayan DNS, dan beberapa arahan penalaan. Dengan route-nopull berkuat kuasa, klien masih menerima sesi, masih mengesahkan sijil, masih merundingkan sifer dan keepalive, dan masih menaikkan antara muka. Yang digugurkannya ialah penggunaan baris route yang ditolak dan baris dhcp-option yang ditolak, termasuk DNS.

Kekeliruan datang daripada penunjuk hijau di sebelah aplikasi mati. Terowong wujud; pemetaan destinasi kepada terowong itu tidak. Tiada apa dalam panel status klien membezakan «bersambung dan menghala» daripada «bersambung dan lumpuh», kerana dari sudut pandangan terowong kedua-duanya keadaan yang sama.

Mengapa terowong hidup masih boleh menghala tiada apa

Antara muka muncul dengan alamatnya sendiri dan, pada pautan titik-ke-titik, selalunya tiada apa yang lebih khusus daripada laluan hos ke rakan. Subnet peribadi hanya boleh dicapai apabila sesuatu laluan menunjuk ke antara muka itu dengan awalan yang betul, dan dengan penolakan dimatikan laluan itu tidak pernah tiba. Profil yang dimuat turun juga biasanya tidak dapat membantu, kerana ia ditulis atas andaian bahawa pelayan akan membekalkan maklumat ini dengan tepat. Itulah sebabnya antara muka boleh kelihatan sihat sedangkan subnet kekal gelap.

Membaca profil itu kerana itu membuktikan sangat sedikit. Baca keadaan yang sedang berjalan, pada mesin yang bersambung:

ip addr show tun0
ip route show dev tun0
ip route get 10.20.5.10

Alamat tanpa laluan subnet dalam arahan kedua ialah tanda tangan masalah ini. Arahan ketiga kemudian menjawab soalan yang benar-benar diambil berat oleh pengguna, kerana ia melaporkan antara muka yang akan dipilih kernel untuk destinasi tertentu dan bukannya senarai yang anda harap akan digunakan. Jika ia menjawab melalui pautan fizikal anda, terowong itu sama sekali tidak berada di laluan.

Penyelesaian nama gagal atas sebab yang berkaitan, bukan sebab yang berasingan. Entri dhcp-option DNS yang ditolak dilangkau oleh bendera yang sama, jadi pertanyaan untuk hos dalaman pergi kepada penyelesai mana pun yang disediakan oleh rangkaian tempatan. Penyelesai itu tiada zon untuk pejabat, jadi pertanyaan gagal atau mengembalikan jawapan awam, dan kegagalan itu kelihatan seperti masalah pelayan sedangkan ia masalah konfigurasi klien. Menguji alamat sebelum nama ialah yang memisahkan kedua-duanya.

Memilih antara bendera dan penapis awalan

Kedua-dua pilihan menyelesaikan bentuk berbeza bagi aduan yang sama, dan pilihan yang buruk itulah yang menghasilkan keadaan bersambung-tetapi-tidak berguna. Satu menggantikan dasar yang ditolak sepenuhnya, manakala yang lain menyuntingnya mengikut awalan. Jadual memberikan versi pendek, dan perenggan selepasnya merangkumi bahagian yang mengejutkan orang.

SettingWhat the client keepsReasonable when
no optionevery pushed route and DHCP entrythe server's view of the network is correct
route-nopullthe session, none of the pushed routing or DNSyou will write the full local policy yourself
pull-filtereverything except lines matching your prefixesthe push is nearly right and one or two lines are wrong

pull-filter ialah pemadan awalan dengan tiga kata kerja, jadi ia boleh menerima sekeluarga baris, mengabaikannya secara senyap, atau menolak sambungan terus apabila sesuatu awalan muncul. Tingkah laku terakhir itulah yang patut diketahui: peraturan penolakan menjadikan perselisihan dasar sebagai jabat tangan yang gagal dan bukannya peninggalan senyap. Manual OpenVPN 2.6 menyenaraikan awalan yang diterima dan makna tepat setiap kata kerja.

Jalan tengah yang biasa ialah menolak redirect-gateway sahaja dan membiarkan laluan pejabat serta DNS tiba seperti yang dimaksudkan. Itu mengekalkan penolakan berfungsi untuk bahagian yang pelayan faham lebih baik daripada anda, sambil menghalang satu-satunya baris yang akan mengambil alih laluan lalai anda.

Menambah laluan dan penyelesai secara manual

Jika anda mengekalkan bendera, profil mesti mengatakan apa yang pelayan akan katakan. Arahan route di sebelah klien digunakan selepas sambungan terjalin, jadi ia berfungsi bersama bendera dan bukannya disekat olehnya. Letakkannya dalam profil, bukan dalam baris arahan interaktif, jika tidak sambungan semula seterusnya tidak akan menghasilkan semula keadaan yang berfungsi.

route-nopull
route 10.20.0.0 255.255.0.0
dhcp-option DNS 10.20.0.53

Baris DNS berada dalam kedudukan yang janggal: ia arahan sebelah klien, tetapi sesetengah klien hanya menggunakannya melalui integrasi DNS platform, yang mungkin menimpa semula apabila pautan berubah. Pada hos systemd, menetapkan penyelesai terus pada antara muka terowong lebih boleh dijangka daripada berharap klien memenangi pertandingan keutamaan:

resolvectl dns tun0 10.20.0.53
resolvectl domain tun0 ~corp.example.com

Domain penghalaan sama pentingnya dengan alamat. Tanpanya, pertanyaan untuk nama awam juga boleh dihantar kepada penyelesai dalaman, dan mana-mana penyelesai dalaman yang menolak rekursi akan memecahkan pelayaran sambil membiarkan zon peribadi berfungsi. Dengannya, hanya nama di bawah akhiran itu dihalakan kepada penyelesai terowong dan segala-galanya mengikut pautan fizikal.

Menyemak hasil: alamat, nama dan laluan luar

Tiga ujian memisahkan kegagalan yang mungkin. Dapatkan alamat peribadi melalui IP, kemudian hos yang sama melalui nama, kemudian laman awam biasa. IP yang berfungsi dengan nama yang gagal menunjuk kepada penyelesai; IP yang gagal dengan nama yang berfungsi menunjuk kepada penghalaan; kedua-duanya gagal biasanya bermakna terowong tiada di laluan.

Kemudian lihat ke luar dan bukan ke dalam. Laluan titik akhir terowong itu sendiri mesti bertahan melalui perubahan, dan mana-mana kegagalan penyekatan mesti dihadkan kepada terowong tanpa menangkap titik akhir. Klien yang terus melayar selepas terowong jatuh ialah masalah dasar, bukan penghalaan, dan ia tidak akan muncul dalam mana-mana daripada tiga ujian di atas.

Tulis senarai akhir dalam dokumentasi profil: laluan, penyelesai, domain, dan sebab setiap satu wujud. Sambungan semula yang menghasilkan semula jadual yang sama ialah satu-satunya bukti bahawa dasar tempatan lengkap. Jika aplikasi masih gagal dengan terowong naik dan ketiga-tiga ujian lulus, tempat seterusnya untuk dilihat ialah kelas masalah bersambung-tetapi-luar talian dan bukannya sijil yang sudah disahkan.

Artikel berkaitan