Matikan NAT sumber pada penghala subnet Tailscale dan terowong terus berfungsi manakala sambungan melaluinya berhenti. Permintaan tiba di destinasi dengan alamat overlay klien jauh sendiri, yang menjadi inti perubahan ini, dan balasan kini memerlukan laluan yang tidak pernah perlu diketahui LAN. Tanpa laluan itu paket mendarat, balasan keluar melalui gateway biasa, dan kegagalan kelihatan seperti masalah firewall yang tiada peraturan firewall dapat menjelaskannya. Terowong sihat; bahagian balik hilang.

Apa yang SNAT sembunyikan

Apabila SNAT diaktifkan, penghala menulis semula alamat sumber kepada alamat LAN sendiri sebelum meneruskan ke subnet, jadi destinasi membalas kepada hos yang sudah tahu cara mencapainya dan tiada apa lagi yang perlu dikonfigurasikan. Mematikannya mengekalkan sumber asal, dan destinasi kemudian melihat alamat dalam julat overlay dan bukannya jiran pada wayarnya sendiri. Alamat itu nyata dan boleh dilalui di seluruh tailnet, tetapi ia tidak dapat dicapai dari LAN melalui gateway lalai. Suis yang didokumenkan ialah --snat-subnet-routes=false, digunakan pada penghala subnet Linux itu sendiri.

Ini tetapan kekal dan bukan suis bagi setiap paket, jadi laluan balik mesti wujud untuk setiap rangkaian destinasi yang dilayani oleh penghala itu. Itulah yang menjadikan perubahan ini keputusan penggunaan dan bukan kotak semak. Apa sahaja yang dilayani oleh penghala itu mewarisi keperluan itu pada saat yang sama.

Di mana laluan balik boleh berada

Tiga penempatan lazim, dan ia berbeza dari segi jangkauan, bukan dari segi ketepatan. Laluan statik pada hos destinasi paling langsung dan paling kurang berskala, kerana setiap peranti memerlukan salinannya sendiri. Jadual laluan dalam VPC atau dalam penghala tapak meliputi seluruh rangkaian sekali gus, dan pilihan DHCP yang membawa laluan statik tanpa kelas sampai kepada klien secara automatik tetapi gagal secara senyap pada peranti yang mengabaikannya.

ip route add 100.64.0.0/10 via 192.168.1.10
ip route get 100.64.0.5

Walau apa penempatan yang anda pilih, hop seterusnya ialah alamat LAN penghala dan tidak sekali-kali alamat tailnetnya. Hos LAN tidak dapat mencapai overlay sehingga ia mempunyai laluan ini, jadi hop seterusnya di dalam overlay berbentuk bulat dan tidak menghantar paket ke mana-mana. Kesilapan tunggal itu menjelaskan kebanyakan konfigurasi yang kelihatan betul tetapi masih gagal, dan ia bertahan dalam setiap pemeriksaan yang hanya membaca jadual penghala itu sendiri. Catat penempatan mana yang anda gunakan, kerana jika tidak orang seterusnya akan menguji yang salah.

Membaca kegagalan sebagai trafik sehala

Gejala lebih mudah dikenali daripada puncanya: perkhidmatan menjawab pada penghala itu sendiri dan kekal senyap daripada klien jauh. Tangkapan pada destinasi menunjukkan permintaan tiba dan balasan pergi, yang kelihatan seperti kejayaan sehingga anda perhatikan ke mana balasan itu menuju. Ia menuju ke gateway lalai, yang bermaksud bahagian masuk berfungsi dan bahagian balik tidak.

Tangkap pada penghala sebaliknya, kerana ia melihat kedua-dua arah satu pertukaran dan menunjukkan sama ada balasan pernah tiba. Jika balasan muncul pada destinasi tetapi tidak pernah pada penghala, laluan itu hilang atau salah di sisi destinasi. Jika ia muncul pada penghala dan berhenti di situ, masalahnya lebih jauh dan tergolong dalam siasatan lain.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Adakah alamat sebenar berbaloi dengan laluan

Mengekalkan SNAT kekal sebagai jawapan yang lebih mudah apabila rangkaian destinasi tidak boleh dikonfigurasikan semula, dan kosnya ialah setiap klien kelihatan seperti penghala dalam log dan dasar destinasi. Mematikannya wajar apabila aplikasi memerlukan alamat sumber sebenar atau apabila dasar rangkaian perlu membezakan klien yang berkongsi penghala. Kedua-duanya sebab yang sah dan tiada satu pun percuma. Manfaatnya mesti berbaloi dengan penyelenggaraan laluan pada setiap rangkaian destinasi, serta semakan firewall yang diterangkan di bawah.

Bagi satu LAN kecil pertukaran itu biasanya berbaloi, manakala bagi lambakan peranti yang tidak dapat menerima laluan statik biasanya tidak. Catat keputusan dan sebabnya di sebelah konfigurasi penghala, supaya pentadbir seterusnya tahu tingkah laku mana yang disengajakan. Nilai lalai yang tiada siapa tulis tidak dapat dibezakan daripada kecuaian.

Firewall, pengelogan dan peranan berganda

Setiap peraturan yang sepadan dengan alamat LAN penghala kini sepadan dengan sumber yang berbeza, termasuk peraturan benarkan dan mana-mana medan log yang merekodkan penghala sebagai klien. Baca peraturan itu sebelum ujian pertama, bukan selepas kegagalan pertama, kerana peraturan yang hanya membenarkan alamat penghala menyekat sumber baharu sepenuhnya. Sempitkan penggantian kepada klien dan port yang memerlukannya, kemudian pastikan ia tidak menerima seluruh tailnet secara senyap.

sudo nft list ruleset | grep -n '100\.64'
sudo iptables-save | grep -n '100\.64'

Satu nod yang berfungsi sebagai nod keluar dan penghala subnet sekali gus ialah gabungan yang didokumenkan yang boleh menggugurkan trafik huluan selepas SNAT subnet dimatikan. Memisahkan peranan itu kepada nod yang berbeza menghapuskan kaveat itu dan memberi setiap laluan dan dasar firewall satu pemilik. Jika peranan itu mesti kekal bersama, jangkakan tingkah laku itu dan ujinya sebelum menyalahkan klien. Simpan laluan, tetapan suis dan peruntukan peranan dalam satu nota, kerana ia dibaca bersama apabila sambungan seterusnya gagal.

Artikel berkaitan