Zona VPN OpenWrt, penerusan, dan masquerading: mana yang perlu?
Input zona, penerusan, dan masquerading menjawab pertanyaan yang berbeda. Putuskan mana yang dibutuhkan lalu lintas VPN Anda sebelum membuka zona WAN.
Tiga perubahan tercampur setiap kali VPN bertemu OpenWrt: membuka port, mengizinkan penerusan, dan menyalakan masquerading. Ketiganya menjawab pertanyaan yang berbeda, dan biasanya hanya satu yang merupakan kebutuhan sebenarnya. Membaca tiap kendali menurut peran lalu lintas yang diaturnya mengubah dugaan menjadi keputusan, dan juga memberi tahu gejala apa yang harus diharapkan ketika perubahan itu salah. Mulailah dengan menyebut peran yang gagal, bukan kotak centang yang Anda ingat.
Sebut peran lalu lintas sebelum menyentuh kendali
Input zona menentukan apa yang boleh mencapai router itu sendiri. Output zona mencakup lalu lintas yang dibuat router, penerusan zona adalah nilai bawaan untuk lalu lintas yang melewati zona, dan masquerading menentukan apakah alamat sumber ditulis ulang saat keluar. Itu empat pertanyaan berbeda, dan kebijakan zona menjawab semuanya sekaligus dengan nilai yang sama, karena itu perubahan pada seluruh zona adalah alat yang kasar. Aturan bernama dapat menjawab salah satunya tanpa menyentuh yang lain.
Peta yang berguna adalah menurut peran lalu lintas, karena itulah yang dapat Anda amati ketika sesuatu gagal. Setiap peran di bawah memiliki satu kendali yang menentukannya dan satu gejala yang menunjuknya:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
Pendengar di router memerlukan satu aturan input yang sempit
Server OpenVPN di router menerima lalu lintas yang dialamatkan ke router, sehingga koneksi luarnya bergantung pada kebijakan input zona yang membawanya. Izinkan transport dan port yang dikonfigurasi dan biarkan segala hal lain di zona itu ditolak. Satu aturan port jauh lebih kecil perubahannya daripada izin pada seluruh zona, dan itulah yang masih dapat Anda jelaskan setahun kemudian.
Dua hal membuat aturan itu aman dipertahankan: aturan itu menyebut port yang benar-benar dipakai layanan, dan ia berada di samping definisi zona agar orang berikutnya melihat mengapa aturan itu ada. Baris di bawah hanyalah bentuknya, dengan port mewakili apa pun yang dikonfigurasi pada server. Ubah port itu di kedua tempat ketika layanan pindah, karena aturan yang tertinggal di port lama tidak terlihat sampai audit.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'Validasi sebelum memuat ulang, karena kesalahan sintaksis pada berkas firewall dapat meninggalkan router tanpa kumpulan aturan yang berfungsi. Pada rilis yang memakai fw4, pemeriksaannya adalah perintah terpisah, dan perintah itu gagal dengan keras alih-alih diam-diam menerima blok yang rusak. Muat ulang hanya setelah pemeriksaan lolos, dan simpan berkas sebelumnya di tempat Anda dapat mengembalikannya.
fw4 check
service firewall reloadPermintaan klien melewati penerusan, bukan input
Setelah autentikasi, permintaan klien tunnel untuk layanan LAN menghasilkan aliran yang diteruskan, jadi kendali yang menentukannya adalah hubungan penerusan antara zona tunnel dan zona LAN. Tetapkan antarmuka tunnel ke zona yang dimaksud, lalu nyatakan arah, sumber, dan layanan. Penetapan zona itulah yang memberi makna pada aturan penerusan, dan keduanya hanya masuk akal bila dibaca bersama. Hubungan penerusan yang menyebut zona tunnel sebagai sumber dan zona LAN sebagai tujuan terbaca sebagai satu keputusan yang disengaja, sedangkan dua izin pada seluruh zona terbaca sebagai kecelakaan.
Mencapai router itu sendiri masih memakai jalur input, karena itu ping ke gateway tidak mengatakan apa pun tentang berbagi berkas di belakangnya. Kedua kegagalan itu hidup di blok yang berbeda dan diperbaiki dengan perubahan yang berbeda. Tuliskan kedua jalur secara terpisah sebelum mengubah salah satunya.
Masquerading adalah keputusan perutean, bukan izin
Masquerading menulis ulang alamat sumber lalu lintas keluar yang dipilih. Ia dapat menyelamatkan rancangan keluar yang sisi jauhnya tidak punya rute balik, dan ia juga menyembunyikan alamat klien individual dari layanan mana pun yang mencatat atau mengotorisasi berdasarkan alamat. Mematikannya adalah pilihan perutean tentang jalur balik, bukan sakelar keamanan yang menutup lubang masuk. Tunnel yang berfungsi saat penerjemahan menyala dan gagal begitu dimatikan biasanya kehilangan rute balik, bukan kehilangan aturan firewall.
Alternatif yang dirutekan memerlukan rute balik di sisi jauh alih-alih penerjemahan. Kedua opsi tidak menyediakan izin firewall atau akun aplikasi, karena itu mematikan masquerading hampir tidak pernah memperbaiki klien tunnel yang tidak bisa mencapai apa pun. Tangani kebijakan IPv4 dan IPv6 secara terpisah juga, karena satu pengaturan penerjemahan tidak menggambarkan kedua keluarga.
Buktikan keputusan dengan permintaan yang diizinkan dan ditolak
Kirim satu permintaan yang seharusnya diizinkan dan satu yang seharusnya ditolak, lalu kenali kendali yang mengambil tiap keputusan. Halaman yang kebetulan termuat bukan bukti; buktinya adalah aturan yang cocok, di rantai tempat ia cocok. Penolakan sama pentingnya dengan keberhasilan, karena itu menunjukkan kebijakan melakukan sesuatu alih-alih semuanya diizinkan.
Dua perintah memberi Anda bukti itu pada rilis terkini. Penghitung pada aturan yang cocok bergerak ketika permintaan diterima, dan log menunjukkan penurunan jika Anda mengaktifkan pencatatan untuk aturan itu:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'Pertahankan jalur administrasi yang masih dapat Anda pakai sebelum mengubah kebijakan firewall apa pun, dan ikuti proses validasi serta pengembalian milik pemilik konfigurasi. Perubahan yang mengunci Anda keluar dari router bukan hasil pengujian, itu insiden kedua. Catat zona dan peran lalu lintas di samping tiap pengamatan, agar pasangan hasil menjelaskan kebijakan alih-alih menggambarkan pemuatan halaman yang kebetulan berhasil.