Meletakkan seluruh LAN di belakang tunnel VPN ialah bahagian yang mudah; memutuskan bagaimana bahagian jauh melihat klien itu bukan. Masquerade menulis semula setiap sumber LAN ke alamat tunnel gateway, jadi hujung jauh membalas kepada satu rakan. Penghalaan dasar mengekalkan alamat asal dan menuntut hujung jauh tahu cara mencapainya. Kedua-duanya bukan lalai; pilihan mengikut siapa memiliki bahagian jauh dan sama ada identiti setiap peranti penting.

Kedua-dua reka bentuk menjanjikan perkara berbeza

Masquerade mengurangkan LAN kepada satu hos yang kelihatan: gateway. Rangkaian jauh membalas alamat tunggal itu, dan gateway menterjemah balasan kembali kepada klien yang memulakan aliran. Tiada laluan ke awalan peribadi anda diperlukan di bahagian jauh, sebab itu reka bentuk ini bertahan dengan penyedia yang enggan membawanya. Gateway juga menjadi sumber setiap sambungan, jadi bahagian jauh tidak dapat membezakan dua klien.

Penghalaan dasar mengekalkan setiap alamat klien tanpa cedera. Rangkaian jauh melihat sumber sebenar dan boleh merekodkannya, menggunakan peraturan setiap hos atau menghantar balasan terus ke alamat itu. Keterlihatan itulah intinya, dan ia datang dengan kewajipan: bahagian jauh mesti mempunyai laluan untuk awalan LAN yang menunjuk kembali melalui tunnel. Rancang laluan itu sebelum anda mengaktifkan peraturan, kerana tunnel akan naik juga dan hanya balasan yang akan hilang.

Mod kegagalan berbeza sebanyak janji. Peraturan masquerade yang tiada menghasilkan paket yang keluar dengan sumber peribadi dan tidak pernah kembali. Laluan pulang yang tiada menghasilkan gejala yang sama dalam penghalaan dasar, tetapi pembaikan terletak pada penghala jauh, bukan gateway.

Masquerade: satu rakan di bahagian jauh

Laluan masquerade mempunyai susunan yang penting. Pemajuan mesti diaktifkan sebelum mana-mana peraturan NAT berguna, jadual penapis mesti membenarkan laluan dalam kedua-dua arah, dan hanya selepas itu terjemahan terpakai pada antara muka tunnel.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Klien masih memerlukan laluan ke gateway. Sama ada gateway ialah penghala lalai mereka, atau mereka membawa laluan khusus untuk awalan jauh; jika penghala berasingan kekal sebagai lalai, penghala itu memerlukan laluan statik untuk destinasi tunnel, jika tidak paket pergi ke hop yang salah sebelum gateway melihatnya.

DNS ialah keputusan berasingan. Penyelesai di bahagian jauh hanya membalas jika balasannya boleh kembali kepada klien. Di bawah masquerade pertanyaan kelihatan datang dari gateway, jadi laluan pulang penyelesai sudah dipenuhi; di bawah penghalaan dasar penyelesai memerlukan laluan pulang yang sama seperti mana-mana perkhidmatan jauh lain.

Penghalaan dasar: kekalkan sumber, tambah laluan pulang

Penghalaan dasar bermula dengan jadual dan peraturan yang memilihnya. Trafik yang masuk dari antara muka LAN dihantar ke jadual khusus, dan jadual itu membawa laluan lalai melalui tunnel. Jadual utama kekal tidak disentuh, jadi trafik yang dihasilkan oleh gateway sendiri boleh mengikut laluan lain.

ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn

Bahagian jauh kemudian mesti menghalakan awalan LAN kembali melalui tunnel. Itu konfigurasi pada penghala jauh, bukan pada gateway ini. Gateway juga mesti menerima balasan yang tiba pada antara muka berbeza daripada yang dijangka jadual utama; penapisan laluan belakang longgar (rp_filter ditetapkan kepada 2) ialah pelarasan biasa apabila mod ketat menggugurkan paket itu.

Apabila dua tunnel aktif, tag setiap aliran semasa masuk dan biarkan tag memilih jadual. Peraturan yang hanya melihat antara muka input menghantar trafik kedua-dua tunnel ke jadual yang sama, jadi tunnel kedua mencuri aliran daripada yang pertama. Uji tag itu dengan sambungan yang tahan melalui sambungan semula, kerana ketika itulah dasar bercampur muncul.

Putuskan berdasarkan pemilikan dan berdasarkan apa yang direkodkan bahagian jauh

Jika tunnel berakhir di penyedia, gunakan masquerade. Pengendali itu tidak akan menghalakan julat LAN peribadi anda, dan dia tiada sebab untuk membezakan klien individu di belakang gateway anda. Satu rakan yang kelihatan ialah satu-satunya model yang disokong dasarnya, jadi berikan itu dan kekalkan terjemahan di tepi anda. Penyedia melihat satu rakan, iaitu tepat apa yang dijangka dasarnya, dan klien anda mewarisi satu identiti itu.

Jika kedua-dua hujung milik anda dan perkhidmatan jauh bertindak atas alamat sumber, penghalaan dasar layak mendapat laluan tambahannya. Peraturan firewall, akses setiap pengguna dan log audit kemudian boleh membezakan klien. Jika bahagian jauh hanya memerlukan kebolehcapaian, masquerade lebih mudah dan menghapuskan satu kelas kesilapan laluan pulang.

Reka bentuk hibrid adalah biasa: penghalaan dasar dalam rangkaian anda sendiri, masquerade di tepi penyedia. Yang penting ialah menuliskan hop mana yang menterjemah dan hop mana yang menghalakan, kerana peraturan NAT yang ditambah secara tidak sengaja untuk satu klien menyembunyikan sumber daripada setiap klien dalam rantaian yang sama.

Sahkan dari satu klien, kemudian dari klien kedua

Jalankan ujian di tempat trafik bermula. Periksa laluan yang digunakan hos, tonton paket muncul pada antara muka tunnel, dan periksa conntrack untuk terjemahannya. Urutan itu membuktikan paket mengambil laluan yang dimaksudkan, bukan sekadar tiba di suatu tempat.

Ulang ujian selepas sambungan semula. Peraturan masquerade yang menamakan antara muka bertahan pada alamat tunnel baharu; peraturan yang menamakan alamat lama tidak. Kemudian uji hos LAN kedua, kerana reka bentuk yang berfungsi pada satu mesin sering bergantung pada laluan mesin itu sendiri, bukan pada dasar gateway.

Tuliskan model yang dipilih, sumber yang diterjemah atau dikekalkan, dan pemilik laluan pulang ke dalam nota gateway. Jika tidak, orang seterusnya yang menambah klien atau tunnel akan meneka, dan tekaan ialah cara persediaan LAN-ke-VPN yang berfungsi menjadi separuh.

Artikel berkaitan