Wi-Fi tamu tetap memakai rute utama: beri ia jalan keluar sendiri
SSID bukan rute. Tamu tetap keluar melalui WAN sampai subnet terpisah, aturan berbasis sumber, dan jalur balasan yang cocok semuanya menunjuk ke terowongan.
Anda membuat jaringan tamu, menambahkan rute untuknya, dan tamu tetap keluar melalui koneksi internet normal Anda. Terowongan aktif, LAN utama berfungsi, dan perangkat tamu melaporkan alamat dalam rentang yang Anda tetapkan, jadi tidak ada yang tampak rusak. Yang biasanya hilang bukan rute melainkan pemilih: router menentukan jalur sebelum mempertimbangkan antarmuka mana yang menjadi tempat paket tiba, dan kecuali sesuatu secara eksplisit cocok dengan lalu lintas tamu, lalu lintas itu mewarisi bawaan. Perbaikannya adalah segmen, aturan kebijakan, dan jalur balasan, dalam urutan itu.
Gejalanya: tamu tetap keluar melalui WAN
Petunjuknya adalah alamat keluar. Perangkat tamu yang mencapai internet melalui terowongan akan melaporkan alamat penyedia terowongan, dan yang mewarisi bawaan akan melaporkan koneksi normal Anda. Bandingkan perangkat tamu dan perangkat LAN utama secara berdampingan, karena kasus yang menarik adalah ketika keduanya berbeda dari yang Anda konfigurasikan dan cocok satu sama lain.
Petunjuk kedua adalah tidak adanya lalu lintas apa pun pada antarmuka terowongan saat tamu menjelajah. Jika penghitung tidak bergerak, kebijakan tidak pernah diterapkan, dan menyesuaikan terowongan itu sendiri tidak dapat membantu.
Langkah 1: segmen nyata, bukan sekadar nama
Nama SSID tidak menciptakan isolasi. Periksa bahwa jaringan tamu berakhir pada antarmuka, VLAN, atau jembatannya sendiri, dan bahwa rentang alamatnya berbeda dari LAN tepercaya. Di banyak titik akses konsumen, SSID tamu dijembatani ke segmen yang sama dengan semua yang lain, yang membuat sisa pekerjaan ini mustahil sampai itu diperbaiki.
Lalu konfirmasi rentang tamu dan server DHCP-nya, dan pertahankan pengaturan resolver terkait segmen itu, bukan seluruh router. Subnet tamu yang hanya ada sebagai komentar dalam aturan firewall bukanlah segmen, dan router tidak akan memiliki antarmuka untuk dicocokkan.
Jangan jembatani tamu ke LAN utama agar VPN lebih mudah dikonfigurasi. Itu menukar isolasi yang Anda inginkan dengan jalan pintas perutean, dan itulah alasan biasa jaringan tamu akhirnya mendapat akses ke printer dan NAS.
Langkah 2: pilih terowongan berdasarkan sumber
Tabel perutean dipilih berdasarkan tujuan, jadi aturan yang berbunyi «kirim 0.0.0.0/0 ke terowongan» berlaku untuk semua orang. Perutean kebijakan menambahkan dimensi kedua: pilih tabel berdasarkan alamat sumber. Pada router berbasis Linux, itu adalah aturan tambahan plus tabel khusus, dan urutannya penting karena aturan pertama yang cocok menang:
ip rule add from 192.168.60.0/24 lookup 100 priority 1000
ip route add default dev wg0 table 100
ip route get 1.1.1.1 from 192.168.60.10
Perintah terakhir itu menjawab pertanyaan secara langsung: antarmuka mana yang akan digunakan sumber ini untuk tujuan ini. Jalankan sebelum dan sesudah perubahan dan Anda akan tahu apakah kebijakan itu berlaku tanpa menyentuh peramban.
Sebagian besar firmware router menyatakan hal yang sama sebagai aturan antarmuka atau pemilihan gateway berbasis sumber. Sintaks apa pun yang digunakan platform Anda, prinsipnya identik: cocokkan antarmuka masuk atau prefiks sumber, lalu timpa rute hanya untuk kecocokan itu. Aturan yang cocok berdasarkan tujuan tidak dapat membedakan tamu dari perangkat rumah tangga.
Langkah 3: jalur balasan dan penerjemahan
Paket yang keluar melalui terowongan harus kembali. Entah peer terowongan mengetahui rute kembali ke prefiks tamu, atau router menerjemahkan sumber tamu menjadi alamat terowongan. Pilih salah satu dan catat, karena mode kegagalannya terlihat berbeda: rute balik yang hilang memberi koneksi yang terbentuk dan tidak pernah menjawab, sedangkan penerjemahan yang hilang sering tidak menghasilkan apa pun.
nft add rule ip nat POSTROUTING ip saddr 192.168.60.0/24 oifname "wg0" masquerade
Jika Anda memilih penerjemahan, ingat bahwa peer sekarang melihat satu alamat untuk setiap tamu, jadi kebijakan per klien di ujung jauh hilang. Jika Anda mempertahankan alamat, kedua ujung memerlukan prefiks tamu dalam perutean dan kebijakan mereka, yang lebih banyak kerja dan lebih dapat diprediksi.
IPv6 memerlukan aturannya sendiri. Kebijakan yang ditulis untuk IPv4 tidak mencakup keluarga lainnya, dan perangkat tamu dengan IPv6 yang berfungsi akan menggunakannya dengan senang hati sementara jalur IPv4 Anda yang dirutekan dengan hati-hati menganggur. Rutekan kedua keluarga atau nonaktifkan IPv6 pada segmen tamu, tetapi jangan berasumsi bahwa aturan gabungan yang Anda tulis mencakup apa yang sebenarnya dilakukan perangkat. Uji dengan klien yang mengaktifkan kedua keluarga, karena itulah kasus yang harus diatasi desain. Laptop yang lebih memilih IPv6 tampak benar dalam uji hanya IPv4 dan bocor dalam uji nyata.
Uji isolasi, bukan hanya penjelajahan
Menjelajah membuktikan bahwa jalan keluarnya berubah. Itu tidak membuktikan bahwa segmen terisolasi, dan isolasi adalah alasan jaringan tamu ada. Dari perangkat tamu, coba capai antarmuka administrasi router, host LAN tepercaya, dan layanan yang seharusnya ditolak; ketiganya harus gagal, dan kegagalan itu harus merupakan keputusan kebijakan bukan batas waktu yang tidak dapat dijelaskan siapa pun.
Lalu uji perangkat LAN utama dan konfirmasi jalan keluarnya tidak berubah. Itulah regresi yang paling sering disebabkan desain ini: aturan luas yang dimaksudkan untuk tamu, diterapkan ke setiap antarmuka karena kecocokannya ditulis pada tujuan.
Akhirnya, putuskan apa yang terjadi ketika terowongan mati. Tamu entah tidak mendapat internet atau jatuh kembali ke jalur yang Anda setujui, dan membiarkannya tidak diputuskan berarti mundur diam-diam ke koneksi normal, yang persis merupakan kebocoran yang hendak dicegah kebijakan tamu. Resep perutean lalu lintas internet menelusuri pemilihan jalur yang sama untuk router berbasis pfSense.
DNS yang berasal dari router adalah kasus yang mengejutkan orang terakhir. Jika tamu menggunakan router sebagai resolver mereka, kueri router sendiri mengikuti rute router alih-alih aturan tamu, sehingga pencarian dapat keluar melalui koneksi normal sementara lalu lintas aplikasi tidak. Simpan segmen, resolver, dan kebijakan kegagalan dalam satu catatan, dan orang berikutnya dapat memeriksa ketiganya tanpa menurunkan ulang desain.