Dua ikon sambungan hijau kelihatan seperti perbandingan dan biasanya hanya kebetulan. Jika permintaan ujian boleh menggunakan mana-mana satu daripada dua terowong itu, hasilnya paling baik menerangkan salah satunya dan paling buruk tidak kedua-duanya. Berikan setiap pemerhatian konteks rangkaian, destinasi yang dimaksudkan dan jangkaan yang ditulis sebelum ujian dijalankan. Pada mesin Linux yang anda urus sendiri, ruang nama rangkaian bernama ialah cara paling murah untuk membeli pemisahan itu.

Dua lampu hijau bukan perbandingan

Ruang nama memisahkan jadual penghalaan, antara muka dan keadaan tindanan rangkaian, jadi permintaan yang bermula di dalam satu tidak boleh meminjam terowong yang lain secara senyap. Apa yang tidak dipisahkannya ialah CPU, pautan atas fizikal atau daemon penyelesai nama yang berjalan pada hos. Di celah terakhir itulah kebanyakan ujian ini gagal tanpa disedari sesiapa. Carian yang meninggalkan ruang nama dan bertanya kepada penyelesai hos mengembalikan jawapan yang tiada kaitan dengan terowong yang diuji.

Prosedur ini menganggap dua ruang nama ujian yang telah disediakan dan diluluskan, dengan sambungan luar yang berfungsi dan klien yang disokong. Ia tidak mencipta apa-apa, tidak mendaftar apa-apa dan tidak menggantikan sebarang konfigurasi. Mesin maya berasingan kekal sebagai pilihan jujur apabila klien memerlukan sesi desktop penuh atau enggan berjalan di luarnya.

Tetapkan jangkaan sebelum larian pertama

Tentukan bagi setiap konteks bagaimana kejayaan kelihatan: penyelesai, nama perkhidmatan, alamat yang dijangka dan tingkah laku yang diperlukan apabila terowong gagal. Simpan nilai terancang itu dalam lajurnya sendiri, kerana rekod yang mencampur rancangan dan pemerhatian ialah fiksyen dengan cap masa. Senarai semak di bawah ialah bentuk yang diperlukan oleh rekod, dan setiap baris mesti boleh diisi sebelum sambungan pertama.

TunnelOwnerClient interface inside the namespaceProof commandRequired on disconnect
vpn-athe identity that owns profile A, recorded by nameits own tun device, never the host'sip -n vpn-a -4 route get 10.55.10.20traffic stops; no host-side fallback
vpn-ba separate owner, even when both run on one boxits own tun device in its own namespaceip -n vpn-b -4 route get 10.55.20.20verified separately, never inferred from A

Pendawaian penyelesai memerlukan barisnya sendiri dalam rekod itu, kerana itulah medan yang paling mungkin berbohong. Fail yang terikat pada ruang nama, seperti /etc/netns/vpn-a/resolv.conf muncul di laluan biasa mereka apabila arahan dijalankan di dalam ruang nama, seperti yang diterangkan oleh rujukan iproute2 tentang ruang nama, tetapi konfigurasi pensuisan perkhidmatan nama dan mana-mana penyelesai tempatan yang dilancarkannya masih boleh menarik carian kembali ke hos.

Satu terowong pada satu masa, yang lain terputus

Sambungkan A melalui pemiliknya yang sedia ada sementara B kekal turun, kemudian periksa dasar, laluan dan laluan yang dipilih daripada konteks pentadbiran. Tiga daripada arahan di bawah membaca keadaan; hanya yang terakhir menghubungi perkhidmatan nama, dan tiada satu pun menghantar permintaan aplikasi.

sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internal

Carian laluan menjawab soalan hipotetikal tentang destinasi, jadi ia tidak boleh menunjukkan bahawa perkhidmatan menerima trafik. Simpan dua jenis bukti itu dalam lajur berasingan, kerana laluan sihat di sebelah sambungan yang ditolak ialah hasil yang nyata dan biasa. Kemudian hantar satu permintaan dibenarkan yang tidak berbahaya dengan aplikasi sebenar, dilancarkan dalam konteks A sebagai pengguna biasa tanpa keistimewaannya dengan pengesahan sijil dan pengesahan aplikasi tidak terjejas, dan catat hasilnya bersama alamat sumber yang dilihat oleh perkhidmatan. Putuskan A melalui pemiliknya dan ulangi seluruh garis dasar untuk B, sambil mencatat setiap perubahan konfigurasi yang anda buat, jika tidak kedua-dua garis dasar tidak lagi setanding.

Kedua-duanya naik, kemudian satu turun pada satu masa

Keadaan mantap ialah bahagian yang mudah. Dengan kedua-dua terowong bersambung, ulangi carian dan permintaan aplikasi setiap konteks, kemudian putuskan satu terowong dan periksa yang lain. Sambung semula dalam urutan terbalik apabila urutan sambungan itu sendiri menjadi persoalan.

sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20

Tangkapan menyelesaikan perdebatan yang tidak dapat diselesaikan oleh hasil aplikasi: ia menunjukkan sama ada permintaan keluar melalui antara muka yang anda jangkakan atau melalui sesuatu yang sama sekali lain. Bagi setiap peralihan catat tindakan pemilik, cap masa, hasil laluan, hasil nama dan hasil aplikasi. Kemudian periksa syarat penutupan selamat di dalam ruang nama yang terjejas, kerana pengasingan bukan suis pembunuh. Ruang nama memisahkan dua terowong; ia tidak menghalang mana-mana satu daripada membawa trafik apabila profilnya menyatakan trafik mesti berhenti.

Apa yang boleh dan tidak boleh didakwa oleh rekod ini

Satu lulus membuktikan pemerhatian itu untuk susunan ini, pada hos ini, pada masa itu. Ia tidak mengatakan apa-apa tentang dua klien yang berkongsi satu jadual penghalaan desktop, dan tidak juga tentang daya pemprosesan semasa kedua-dua terowong membawa beban. Itu soalan berasingan dengan ujian berasingan, dan perbandingan hanya sebaik konteks yang dilampirkan pada setiap baris.

Simpan kegagalan dalam rekod di sebelah kejayaan, berlabel terowong mana yang naik pada masa itu. Halaman bersih yang menyembunyikan keadaan pada saat pengukuran lebih buruk daripada halaman hodoh yang menunjukkannya. Yang menjadikan rekod itu boleh diguna semula kemudian ialah konteksnya, bukan skornya.

Dua terowong pada satu mesin boleh dibandingkan dengan jujur, tetapi hanya dalam seberapa banyak konteks yang benar-benar anda kawal. Apa-apa di luar itu ialah hasrat dengan ikon hijau di sebelahnya.

Artikel berkaitan