Perutean berbasis akun cocok ketika setiap soket IPv4 milik satu pengguna Linux harus keluar melalui terowongan yang sudah ada, dan tidak cocok ketika Anda membutuhkan isolasi tingkat program. Ia memilih berdasarkan UID, jadi apa pun yang berjalan sebagai akun itu masuk cakupan, termasuk tugas batch yang Anda lupakan. Selesaikan pertanyaan itu sebelum Anda menyentuh satu ip rule pun.

Contoh di bawah mengasumsikan akun peramban khusus pada UID 1500, perangkat terowongan tun-office yang memegang alamat lokal 10.80.0.11, dan VPN yang mengizinkan tujuan yang dimaksud. Daemon itu sendiri berjalan di luar UID tersebut.

Tiga syarat yang memilih mekanismenya

Pilih aturan UID ketika identitas yang mengerjakan tugas adalah akun itu, ketika memindahkan seluruh lalu lintasnya dapat diterima, dan ketika namespace akan lebih berat daripada yang layak diterima tugas tersebut. Pilih namespace jaringan ketika beban kerja membutuhkan antarmuka, resolver, dan tabel perutean sendiri. Pilih proksi atau pengikatan per proses ketika tepat satu aplikasi harus berpindah sementara sisa sesi tetap di jalur lokal. Menuliskan ketiganya mencegah aturan yang diam-diam mencakup lebih dari yang dimaksud.

Kesalahan yang harus dihindari adalah menganggap peluncur menentukan pemiliknya. Peramban yang menerima URL dari sesi pengguna lain tidak membuat soket di bawah UID 1500, dan tidak ada aturan yang akan memindahkan lalu lintas yang dihasilkannya.

Tabel, aturan, dan penjaga

Setelah memeriksa aturan yang ada dan memilih nomor tabel serta prioritas yang belum dipakai, susunannya singkat: rute default di tabel khusus yang membawa alamat sumber terowongan, aturan yang mengirim pencarian akun ke tabel itu, dan aturan pengakhir yang memblokir cadangan. Dituliskan, itu adalah penggantian rute idempoten, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, diikuti ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.

Penjaganya adalah ip -4 rule add priority 12101 uidrange 1500-1500 unreachable, dan itu lebih penting daripada yang disiratkan panjangnya. Tanpanya, rute yang hilang di tabel 51820 jatuh ke uplink biasa dan akun diam-diam membocorkan lalu lintas yang seharusnya ditangkap kebijakan. Dengannya, kegagalan yang sama menjadi batas waktu, yaitu pemblokiran alih-alih cadangan.

Jaga aturan alamat lokal normal di depan aturan-aturan ini, dan putuskan secara sadar apakah pengecualian LAN atau manajemen berada sebelum tabel yang dipilih. Rute default yang ditemukan di sana tidak menanyakan main nanti untuk rute LAN yang lebih spesifik, yang mengejutkan mereka yang mengharapkan pencocokan prefiks terpanjang berlaku lintas tabel. Tuliskan daftar pengecualian yang dimaksudkan dalam catatan perubahan selama alasannya masih segar.

Apa yang ditinggalkan perutean UID: DNS

Daemon resolver membuka soket hulunya di bawah UID-nya sendiri, jadi memilih 1500 tidak memindahkan kueri itu ke tabel 51820. Integrasi DNS adalah keputusan terpisah: arahkan akun ke resolver yang dapat dijangkau melalui terowongan, atau terima bahwa resolusi nama mengikuti jalur host sementara lalu lintas tidak.

Kueri loopback ke stub lokal bukan bukti bahwa kueri hulu memakai rute peramban, dan bukan pula pemuatan halaman yang berhasil dari cache.

IPv6 membutuhkan kalimatnya sendiri dalam desain

Aturan di atas hanya mencakup IPv4. Jika persyaratannya adalah terowongan IPv4 tanpa IPv6 langsung dari akun ini, tambahkan aturan pengakhir yang telah ditinjau seperti ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, lalu periksa aturan IPv6 sebelumnya plus pengecualian loopback yang ingin Anda pertahankan.

Memblokir IPv6 langsung bukanlah terowongan tumpuk ganda; itu adalah batas. Menyebutnya terowongan akan membingungkan orang berikutnya yang membaca kebijakan, dan kebingungan itu akan muncul sebagai tiket dukungan tentang situs IPv6 yang rusak.

Verifikasi dengan akun sebenarnya, lalu miliki siklus hidupnya

Bandingkan pencarian: ip -4 route get 198.51.100.25 uid 1500 terhadap tujuan yang sama dengan UID biasa. Lalu buat permintaan yang diizinkan di bawah akun khusus dan periksa alamat sumber yang dilihat ujung jauh. Alamat sumber yang dipreferensikan bukan source NAT, dan tidak akan menimpa aplikasi yang mengikat hal lain. Jika kedua pencarian mengembalikan jalur yang sama, aturan itu tidak melakukan apa yang Anda pikirkan.

Jaga tabel, aturan, dan masa hidup rute terowongan di bawah satu pemilik, uji penyambungan ulang dan kehilangan terowongan, dan saat menonaktifkan kebijakan hapus hanya entri persisnya. Namespace masih tersedia jika antarmuka terpisah dan status terpisah adalah yang benar-benar Anda butuhkan.

Artikel terkait