Masquerade atau perutean kebijakan: lalu lintas LAN melalui gateway VPN
Gateway Linux dapat menyembunyikan sumber LAN di balik alamat tunnelnya atau merutekannya tanpa perubahan. Pilihannya bergantung pada siapa pemilik sisi jauh dan rute kembalinya.
Menempatkan seluruh LAN di belakang tunnel VPN adalah bagian yang mudah; memutuskan bagaimana sisi jauh melihat klien tersebut bukan. Masquerade menulis ulang setiap sumber LAN ke alamat tunnel gateway, sehingga ujung jauh membalas ke satu peer. Perutean kebijakan mempertahankan alamat asli dan menuntut ujung jauh tahu cara mencapainya. Keduanya bukan bawaan; pilihan mengikuti siapa pemilik sisi jauh dan apakah identitas per perangkat penting.
Kedua rancangan menjanjikan hal yang berbeda
Masquerade mereduksi LAN menjadi satu host yang terlihat: gateway. Jaringan jauh membalas ke satu alamat itu, dan gateway menerjemahkan balasan kembali ke klien yang memulai aliran. Tidak perlu rute ke prefiks privat Anda di sisi jauh, karena itulah rancangan ini bertahan dengan penyedia yang menolak membawanya. Gateway juga menjadi sumber setiap koneksi, sehingga sisi jauh tidak dapat membedakan dua klien.
Perutean kebijakan menjaga setiap alamat klien tetap utuh. Jaringan jauh melihat sumber sebenarnya dan dapat mencatatnya, menerapkan aturan per host, atau mengirim balasan langsung ke alamat itu. Visibilitas itulah intinya, dan ia datang dengan kewajiban: sisi jauh harus punya rute untuk prefiks LAN yang menunjuk kembali melalui tunnel. Rencanakan rute itu sebelum Anda mengaktifkan aturan, karena tunnel akan tetap naik dan hanya balasannya yang hilang.
Mode kegagalannya berbeda sebanyak janjinya. Aturan masquerade yang hilang menghasilkan paket yang keluar dengan sumber privat dan tidak pernah kembali. Rute balik yang hilang menghasilkan gejala yang sama pada perutean kebijakan, tetapi perbaikannya ada di router jauh, bukan di gateway.
Masquerade: satu peer di sisi jauh
Jalur masquerade punya urutan yang penting. Penerusan harus diaktifkan sebelum aturan NAT mana pun berguna, tabel filter harus mengizinkan transit di kedua arah, dan baru setelah itu terjemahan berlaku pada antarmuka 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 tetap butuh jalur ke gateway. Entah gateway adalah router bawaan mereka, atau mereka membawa rute khusus untuk prefiks jauh; jika router terpisah tetap menjadi bawaan, router itu perlu rute statis untuk tujuan tunnel, kalau tidak paket pergi ke hop yang salah sebelum gateway melihatnya.
DNS adalah keputusan tersendiri. Resolver di sisi jauh hanya menjawab jika balasannya dapat kembali ke klien. Di bawah masquerade kueri tampak datang dari gateway, jadi jalur balik resolver sudah terpenuhi; di bawah perutean kebijakan resolver perlu rute balik yang sama seperti layanan jauh lainnya.
Perutean kebijakan: pertahankan sumber, tambahkan jalur balik
Perutean kebijakan dimulai dengan tabel dan aturan yang memilihnya. Lalu lintas yang masuk dari antarmuka LAN dikirim ke tabel khusus, dan tabel itu membawa rute bawaan melalui tunnel. Tabel utama tetap tidak tersentuh, sehingga lalu lintas yang berasal dari gateway sendiri dapat mengikuti jalur lain.
ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn
Sisi jauh kemudian harus merutekan prefiks LAN kembali melalui tunnel. Itu konfigurasi di router jauh, bukan di gateway ini. Gateway juga harus menerima balasan yang datang di antarmuka berbeda dari yang diperkirakan tabel utama; penyaringan jalur balik yang longgar (rp_filter disetel ke 2) adalah penyesuaian biasa ketika mode ketat membuang paket tersebut.
Ketika dua tunnel aktif, tandai setiap aliran saat masuk dan biarkan tanda itu memilih tabel. Aturan yang hanya melihat antarmuka masukan mengirim lalu lintas kedua tunnel ke tabel yang sama, sehingga tunnel kedua mencuri aliran dari yang pertama. Uji tanda itu dengan koneksi yang bertahan melewati penyambungan ulang, karena saat itulah kebijakan campuran muncul.
Putuskan berdasarkan kepemilikan dan berdasarkan apa yang dicatat sisi jauh
Jika tunnel berakhir di penyedia, gunakan masquerade. Operator itu tidak akan merutekan rentang LAN privat Anda, dan ia tidak punya alasan membedakan klien individual di balik gateway Anda. Satu peer yang terlihat adalah satu-satunya model yang didukung kebijakannya, jadi berikan itu dan pertahankan terjemahan di tepi Anda. Penyedia melihat satu peer, yang persis seperti yang diharapkan kebijakannya, dan klien Anda mewarisi satu identitas itu.
Jika kedua ujung milik Anda dan layanan jauh bertindak berdasarkan alamat sumber, perutean kebijakan layak mendapat rute tambahannya. Aturan firewall, akses per pengguna, dan log audit kemudian dapat membedakan klien. Jika sisi jauh hanya butuh keterjangkauan, masquerade lebih sederhana dan menghapus satu kelas kesalahan rute balik.
Rancangan hibrida itu normal: perutean kebijakan di dalam jaringan Anda sendiri, masquerade di tepi penyedia. Yang penting adalah menuliskan hop mana yang menerjemahkan dan hop mana yang merutekan, karena aturan NAT yang tak sengaja ditambahkan untuk satu klien menyembunyikan sumber bagi setiap klien dalam rantai yang sama.
Verifikasi dari satu klien, lalu dari klien kedua
Jalankan uji di tempat lalu lintas dimulai. Periksa rute yang dipakai host, amati paket muncul di antarmuka tunnel, dan periksa conntrack untuk terjemahannya. Urutan itu membuktikan paket menempuh jalur yang dimaksud, bukan sekadar tiba di suatu tempat.
Ulangi uji setelah penyambungan ulang. Aturan masquerade yang menyebut antarmuka bertahan terhadap alamat tunnel baru; aturan yang menyebut alamat lama tidak. Lalu uji host LAN kedua, karena rancangan yang berhasil pada satu mesin sering bergantung pada rute mesin itu sendiri, bukan pada kebijakan gateway.
Tuliskan model yang dipilih, sumber yang diterjemahkan atau dipertahankan, dan pemilik rute balik ke dalam catatan gateway. Kalau tidak, orang berikutnya yang menambahkan klien atau tunnel akan menebak, dan tebakan adalah cara penyiapan LAN-ke-VPN yang berfungsi menjadi separuh jadi.