Dua Klien VPN pada Satu Desktop: Apa yang Berlanggar dan Apa yang Berfungsi
Dua klien berebut laluan lalai, penyelesai dan pemacu penapis. Catat siapa yang memiliki egress, kemudian asingkan terowong kedua dengan VM atau netns.
Klien kedua anda bersambung, sumber klien pertama berhenti diselesaikan, dan tiket berkata VPN kerja merosakkan yang peribadi. Tiada apa yang rosak dalam erti kata kerosakan: kedua-dua klien melakukan apa yang direka untuknya, dan mesin hanya mempunyai satu jadual penghalaan. Perlanggaran berlaku pada empat sumber yang setiap klien anggap miliknya. Selesaikan mengikut urutan, dan pembaikan biasanya menjadi pilihan reka bentuk dan bukan pembaikan.
Langkah 1: kenal pasti klien yang memiliki egress
Baca keputusan egress semasa sebelum menukar apa pun. Carian laluan untuk alamat awam memberitahu antara muka dan hop seterusnya yang akan digunakan paket sekarang, dan itulah jawapan kepada siapa yang menang. Bandingkan dengan nama antara muka yang dicipta klien, yang biasanya membawa nama produk atau protokol. Jika carian menunjuk kepada terowong yang tidak anda jangkakan, anda sudah menemui perlanggaran itu.
ip route get 1.1.1.1
ip route show default
route print
Sesetengah klien tidak menggantikan laluan lalai langsung; mereka menambah dua separuh, satu untuk separuh bawah ruang alamat dan satu untuk separuh atas, yang bersama-sama meliputi segala-galanya. Ini membiarkan laluan lalai asal kelihatan dan membuat pembaikan manual kelihatan betul sedangkan trafik masih keluar melalui terowong. Baca metrik dan panjang awalan, bukan sekadar kewujudan entri lalai.
Berhenti jika kedua-dua klien menuntut awalan yang sama dengan metrik yang sama. Kernel akan memilih satu, dan yang lain akan kelihatan bersambung tanpa membawa apa-apa.
Langkah 2: periksa penyelesai dan awalan yang bertindih
DNS ialah perlanggaran kedua, dan ia menghasilkan gejala tersendiri: nama gagal sementara alamat berfungsi. Setiap klien menolak penyelesainya sendiri, dan penulis terakhir menang untuk pertanyaan seterusnya. Tanya perkhidmatan penyelesai apa yang digunakannya bagi setiap pautan daripada membaca halaman tetapan klien.
resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example
Kemudian bandingkan awalan persendirian yang digunakan oleh kedua-dua rangkaian. Jika kedua-dua pihak memperuntukkan daripada julat yang sama, tiada susunan di pihak klien akan membaikinya, kerana mesin tidak dapat memberitahu destinasi 10.0.0.0/8 mana milik terowong mana. Satu pihak mesti dinomborkan semula atau diterjemah, dan itu perbualan dengan pemilik rangkaian, bukan perubahan konfigurasi. Pertindihan ialah satu-satunya perlanggaran yang jawapan jujurnya ialah reka bentuk mesti berubah.
Berhenti di sini jika awalan bertindih. Semua yang berikutnya dalam senarai ini menganggap ia tidak bertindih.
Langkah 3: pilih corak pengasingan yang bertahan
Corak yang boleh dipercayai mengelakkan menjalankan dua klien terhadap jadual penghalaan yang sama. Satu klien dengan dasar terowong berpecah yang mencapai kedua-dua rangkaian persendirian ialah yang paling mudah, dengan syarat destinasi tidak bertindih dan pemilik dasar bersetuju. Mesin maya atau ruang nama rangkaian ialah langkah seterusnya, kerana setiap satu mendapat jadual dan penyelesainya sendiri.
sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/
Ruang nama memberikan pengasingan yang sama seperti mesin maya tanpa sistem pengendalian kedua, tetapi ia mempunyai tepi kasar: peranti terowong mesti dipindahkan ke dalamnya, dan aplikasi mesti dimulakan di dalamnya. Peranti fizikal berasingan selalunya pilihan paling tidak mengejutkan untuk VPN peribadi di samping klien kerja yang diurus. Menyusun satu terowong di dalam yang lain bukan corak pengasingan; titik akhir dalaman mesti kekal boleh dicapai melalui terowong luaran, dan susunan itu menambah masalah MTU dan kependaman di atasnya.
Pilih satu corak dan tulis sebabnya. Mencampurkan ruang nama untuk satu aplikasi dengan terowong berpecah untuk yang lain mencipta semula perlanggaran asal dalam bentuk yang lebih sukar untuk dinyahpepijat.
Langkah 4: sahkan kedua-dua rangkaian daripada sesi yang sama
Uji satu sumber pada setiap rangkaian persendirian daripada persekitaran tempat aplikasi benar-benar berjalan, bukan daripada shell anda jika aplikasi berjalan di dalam ruang nama. Periksa antara muka egress, alamat yang diselesaikan dan kod respons bersama-sama, kerana kejayaan dalam satu daripada tiga boleh menyembunyikan kegagalan dalam yang lain. Ulangi selepas but semula, kerana urutan klien bermula menentukan siapa yang menang. Urutan itulah yang orang lupa catat.
curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40
Catat versi klien, antara muka, keadaan penyelesai dan awalan bagi setiap rangkaian. Apabila klien dikemas kini dan menukar tingkah laku laluannya, catatan itu ialah perbezaan antara pembaikan lima minit dan pembinaan semula. Orang seterusnya tidak akan berkongsi ingatan anda tentang terowong mana yang naik dahulu.
Senarai ini lengkap apabila anda boleh menamakan antara muka yang memiliki laluan lalai, penyelesai yang digunakan setiap nama, corak yang mengasingkan terowong kedua, dan hasil satu permintaan bagi setiap rangkaian selepas but semula. Apa-apa yang kurang ialah konfigurasi yang kebetulan berfungsi hari ini.