Dua makmal boleh memodelkan topologi VPN yang sama dan gagal dengan cara yang sama sekali berbeza: satu hidup dalam ruang nama rangkaian, satu lagi pada laluan hos itu sendiri. Versi ruang nama menyimpan setiap antara muka, laluan dan soket dalam konteks yang boleh anda padamkan, manakala versi hos bermula lebih pantas dan meninggalkan keadaan di belakang. Keadaan sisa itulah sebabnya makmal kedua sukar diulang sebulan kemudian. Bandingkan pembersihan dahulu, kerana ia menentukan sama ada anda boleh menjalankan eksperimen dua kali.

Dua cara membina makmal yang sama, dan bila setiap satu menang

Dalam makmal laluan hos anda menambah antara muka terowong dan laluan pada mesin yang anda gunakan, jadi eksperimen berkongsi nasib dengan shell anda, pengurus pakej anda dan setiap sambungan lain. Dalam makmal ruang nama setiap peranan mendapat tindanan sendiri antara muka, alamat, laluan dan soket, dan memadam ruang nama menghapuskan semuanya. Tiada model yang lebih betul, kerana ia menjawab soalan yang berbeza. Pilih ruang nama apabila subjeknya penghalaan dan penghantaran, dan makmal hos apabila subjeknya ialah bagaimana satu klien desktop berintegrasi.

AspectNamespace labHost-route lab
IsolationFull stack per roleShares the host stack
CleanupDelete named namespacesManual route and rule removal
RealismStrong for routingNeeded for GUI clients

Mencampurkan kedua-duanya ialah kesilapan biasa: makmal ruang nama yang diuji terhadap klien yang hanya ada pada hos tidak membuktikan apa-apa tentang mana-mana satu susunan. Tentukan soalan yang anda tanyakan sebelum mencipta pautan pertama.

Satu konteks setiap peranan, disambung dengan sengaja

Cipta satu ruang nama setiap peranan dan pindahkan setiap hujung setiap pasangan veth ke konteks yang memilikinya. Empat arahan pertama sudah cukup untuk melihat bentuknya:

ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns client

Berikan makmal julat yang tidak bertindih dengan apa-apa pada hos, dan catat sebelum bermula ruang nama mana yang memiliki alamat mana. Makmal yang berfungsi memerlukan dua laluan berasingan: laluan luar supaya titik akhir VPN sampai ke pasangannya, dan laluan balik untuk sumber yang dilindungi. Modelkan kedua-duanya sebagai dua keputusan, kerana makmal yang hanya membina separuh keluar lulus ujian jabat tangan dan gagal ujian aplikasi.

Peranan penghantaran ialah tempat makmal menjadi menarik

Satu peranan mesti menghantar, yang bermaksud mengaktifkan penghantaran di dalam ruang nama itu dan menambah peraturan yang diperlukan oleh reka bentuk. Keadaan penghantaran adalah setiap ruang nama, jadi tetapan hos tidak relevan kepada makmal dan tetapan makmal tidak bocor keluar, seperti yang diterangkan oleh dokumentasi ruang nama rangkaian. WireGuard mendokumentasikan bahawa antara muka dan soket luarnya boleh hidup dalam ruang nama yang berbeza, yang merupakan helah berguna dan cara terbaik untuk mengelirukan diri sendiri. Jangan anggap memindahkan antara muka memindahkan setiap bahagian sambungan dengan cara yang sama.

Periksa pembilang penghantaran selepas paket ujian, kerana peraturan yang tidak pernah sepadan dan peraturan yang menggugurkan kelihatan sama dalam jadual laluan. Hanya pembilang yang memisahkan mereka.

Catat garis dasar, kemudian pecahkan satu laluan

Mulakan dengan mencatat apa yang wujud, dengan konteks ditulis di sebelah setiap baris. Baca ruang nama, kemudian laluan yang akan diambil oleh destinasi ujian di dalam salah satunya, kemudian pembilang pada pautan yang membawanya:

ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-g

Arahan ketiga ialah yang orang langkau, dan di situlah buktinya: pembilang digugurkan dan ralat memberitahu anda sama ada paket itu sampai ke peranan penghantaran. Catat tiga paparan yang sama selepas perubahan, dan biarkan diff menjadi bukti dan bukan ingatan anda. Kemudian pecahkan tepat satu perkara, sama ada dengan memadam laluan atau menambah peraturan penolakan pada laluan penghantaran, dan sahkan simptom yang anda ramalkan: jabat tangan selesai tanpa balasan, atau kegagalan penyelesaian nama dan bukan tamat masa. Makmal yang hanya menunjukkan kejayaan mengajar sangat sedikit.

Pembersihan ialah apa yang menjadikan larian seterusnya boleh diulang

Kekalkan pembersihan dalam skop sumber yang anda namakan, kerana set semula tembok api menyeluruh atau pembuangan laluan hos bukan kebolehulangan, ia insiden kedua. Simpan topologi, arahan tepat dan pemerhatian yang anda jangkakan, supaya larian seterusnya menghasilkan semula kegagalan yang sama dan bukan meneka konteks mana yang memegang keadaan sebelumnya. Tanpa rekod itu makmal ialah cerita, bukan prosedur.

Gunakan kelayakan yang dijana secara setempat untuk makmal, dan jauhkan akaun pengeluaran daripada contoh yang dikongsi. Kemudian padam setiap ruang nama dan sahkan paparan hos tidak berubah, yang merupakan seluruh sebab memilih model ini. Makmal yang tidak boleh anda buang dengan bersih ialah perubahan hos dengan langkah tambahan.

Artikel berkaitan