pull-filter OpenVPN sepadan dengan lebih daripada laluan yang anda maksudkan
pull-filter membandingkan teks anda sebagai awalan dengan pilihan yang ditolak, jadi route turut menangkap route-gateway dan route-ipv6. Semak kata kerja dahulu, kemudian laluan.
Anda menambah satu baris untuk mengekalkan laluan lalai tempatan anda, dan selepas itu terowong tidak lagi sampai ke pelayan DNS dalaman. Baris itu ialah pull-filter ignore "route", yang bukan bermaksud "abaikan laluan ini". Ia bermaksud "buang setiap pilihan yang ditolak yang teksnya bermula dengan lima huruf tersebut", dan pada pelayan biasa ia merangkumi route-gateway, route-metric dan route-ipv6 bersama laluan itu sendiri. Senarai semak di bawah ialah apa yang saya jalankan sebelum menyentuh profil yang orang lain perlu gunakan.
Penapis hanya terpakai pada pilihan yang ditolak
pull-filter bertindak hanya pada baris pilihan yang dihantar pelayan selepas terowong dibina, dan tidak pada apa-apa lagi. Pilihan yang ditulis dalam fail tempatan anda tidak terjejas olehnya, begitu juga trafik aplikasi. Jika anda berharap untuk menghalang proses daripada menggunakan terowong, ini ialah alat yang sama sekali salah dan tiada gabungan penapis akan melakukannya.
Skop itu berguna, kerana ia bermaksud anda boleh membiarkan konfigurasi pelayan dan tetap menolak sebahagian daripadanya secara tempatan. Ia juga had yang wajar dicatat dalam tiket: penapis mengubah apa yang klien ini terima, bukan apa yang pelayan tawarkan. Ia tidak mempunyai kesan pada pengguna lain profil yang sama. Ia juga tidak kekal apabila berpindah ke klien lain yang tidak melaksanakan pilihan itu, yang wajar diketahui sebelum anda membina aliran kerja di atasnya.
Sahkan apa yang sebenarnya dihantar pelayan sebelum menulis corak. Pada verbositi tinggi klien mencetak rentetan pilihan yang ditolak yang diterimanya, dan itulah satu-satunya sumber jujur untuk teks tepat yang anda bandingkan:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
Baca baris yang ditolak sebagai senarai pilihan yang dipisahkan koma, dan perhatikan bahawa nama pilihan dan argumennya dipisahkan oleh ruang. Teks penapis anda dibandingkan dengan aliran itu, sebab itulah ruang begitu penting dalam langkah seterusnya.
Padanan ialah awalan, jadi ruang menentukan segala-galanya
Perbandingan ialah awalan rentetan, bukan nama pilihan yang dihuraikan. Oleh itu "route" sepadan dengan route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 dan route-metric 100. Satu ruang di hujung menyempitkannya kepada keluarga yang mungkin anda maksudkan, dan awalan penuh menyempitkannya lebih jauh kepada destinasi tertentu.
| Filter text | What it actually matches | Typical outcome |
|---|---|---|
"route" | Every option beginning with those letters | Routes, gateway, metric and IPv6 routes all dropped |
"route " | Route entries only, not the hyphenated siblings | The routes go, the rest survives |
"route 10.60." | A single destination range | The narrowest rule, and the easiest to audit |
"dhcp-option DNS" | Pushed DNS settings | Resolver stays local, internal names stop resolving |
Baris terakhir ialah yang menangkap orang semasa kerja terowong berpecah. Mengekalkan resolver anda sendiri ialah pilihan yang sah, dan ia bermaksud setiap nama dalaman kini bergantung pada resolver yang tidak dapat melihat zon peribadi. Itu akibat yang diterima dengan sengaja, bukan kesan sampingan yang ditemui dalam pengeluaran.
Padanan awalan juga bermaksud sesuatu peraturan boleh meluas secara senyap kemudian. Apabila pelayan menambah pilihan baharu yang bermula dengan teks anda, penapis anda mula terpakai padanya tanpa sesiapa menyunting profil anda. Itulah mod kegagalan yang perlu direka bentuk, dan mitigasinya ialah memadankan sebanyak mungkin bahagian pilihan, bukan sesedikit mungkin.
Tiga kata kerja dengan tiga hasil berbeza
accept, ignore dan reject bukan tiga ejaan idea yang sama. Mereka berbeza dalam apa yang klien lakukan dengan padanan dan sama ada sesiapa mengetahuinya.
ignore membuang pilihan yang sepadan secara senyap, yang anda mahu untuk tetapan yang anda ganti dengan sengaja. reject membuangnya dan membuat klien merungut, yang anda mahu apabila ketiadaannya patut kelihatan dalam log dan bukan ditemui kemudian. accept ialah bentuk positif, digunakan apabila anda membina senarai kebenaran dan bukan membuang pilihan individu.
Apa pun kata kerja yang anda gunakan, penapis digunakan mengikut urutan kemunculannya, jadi dua peraturan yang bertindih menghasilkan keputusan bergantung urutan yang sangat sukar disemak. Kekalkan satu peraturan bagi setiap niat dan letakkan teks paling khusus dalam setiap satu. Jika anda memerlukan senarai kebenaran, pilih beberapa peraturan accept daripada longgokan peraturan ignore yang menjumlahkan perkara yang sama. Kemudian penyemak boleh membaca fail dari atas ke bawah dan meramal keputusannya, dan itulah satu-satunya ujian yang berskala.
Sahkan laluan dan resolver yang digunakan, bukan profil
Penapis yang kelihatan betul dalam fail masih boleh meninggalkan anda dengan terowong yang tidak menghala apa-apa yang berguna. Sahkan kesannya pada sistem yang berjalan, di mana pilihan yang ditolak sudah digunakan atau dibuang:
ip route show default
ip route show | grep -c 'proto static'
resolvectl status | grep -A4 'Link.*tun0'
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://intranet.example.internal/
Dua baris pertama memberitahu anda sama ada laluan lalai yang ditolak telah tiba dan berapa banyak entri statik yang bertahan. Pertanyaan resolver menunjukkan pelayan mana yang sebenarnya digunakan antara muka terowong, dan biasanya di situlah kejutan DNS muncul. Baris terakhir menjawab satu-satunya soalan yang penting kepada pengguna.
Uji kedua-dua arah semasa anda di sana. Peraturan yang mengekalkan internet tempatan anda berfungsi tetapi memecahkan penyelesaian nama dalaman secara senyap lulus pemeriksaan cetek dan gagal pada tugasan sebenar yang pertama, jadi sertakan satu sumber dalaman dan satu tapak awam dalam ujian yang sama.
Catat pengecualian dan siapa pemiliknya
Penapis ialah pengecualian kepada reka bentuk pengendali, jadi catatkannya dengan sebab dan titik semakan. "Mengabaikan laluan yang ditolak untuk mengekalkan lalai tempatan" boleh disemak; baris kosong dalam profil tidak, dan orang seterusnya akan memadamnya atau meluaskannya dengan meneka.
Versi juga penting di sini. Tingkah laku padanan dan sintaks tepat yang diterima telah diperhalusi merentas OpenVPN 2.4, 2.5 dan 2.6, jadi sahkan corak itu dengan manual binaan yang anda hantar, bukan dengan catatan forum tentang keluaran lama. Manual OpenVPN 2.6 mendokumenkan pilihan ini dan peraturan padanannya.
Akhir sekali, persetujui pengecualian itu dengan sesiapa yang mengendalikan pelayan. Penapis sebelah klien yang bercanggah dengan dasar pelayan yang disengajakan ialah insiden sokongan yang menunggu audit seterusnya, dan jauh lebih murah menyelesaikannya sebelum profil dihantar daripada selepas seseorang menyedari laluan itu hilang.