Aturan NAT yang seharusnya memberi satu kumpulan klien VPN alamat publiknya sendiri tetap di nol paket, sementara kumpulan yang sama terus keluar dengan sumber yang salah. Aturannya biasanya tidak salah soal alamat; ia salah soal antarmuka. -o eth0:0 menunjuk perangkat yang tidak ada, karena eth0:0 adalah label yang menempel pada alamat di eth0. Melihat penghitung adalah cara tercepat untuk memastikannya, dan perbaikannya lebih kecil daripada yang disiratkan penyelidikan.

Periksa apa yang kernel sebut sebagai perangkat

Baca kedua tampilan secara terpisah sebelum mengubah apa pun:

ip link show
ip address show dev eth0
ip route get 203.0.113.20

Daftar tautan menampilkan antarmuka. Daftar alamat mungkin menampilkan alamat IPv4 kedua yang membawa label eth0:0, dan perangkat untuk alamat itu tetap eth0. Buku petunjuk alamat iproute2 memperlakukan label sebagai nama untuk alamat, bukan sebagai tautan kedua, dan itulah pembedaan tempat seluruh masalah bergantung.

Sejarah menjelaskan kebingungannya. Sintaks lama ifconfig eth0:0 benar-benar tampak seperti antarmuka baru, dan skrip dari masa itu masih merujuk ke salah satunya. Pada sistem saat ini, alias adalah label pada sebuah alamat, dan tidak ada apa pun di jalur perutean atau netfilter yang memperlakukannya sebagai titik keluar terpisah.

Periksa apa yang sebenarnya dicocokkan aturan

Baca penghitung bersama daftar aturan, bukan dari ingatan:

iptables -t nat -L POSTROUTING -v -n --line-numbers

Aturan yang penghitung paketnya tetap nol sementara lalu lintas yang cocok mengalir tidak sedang dievaluasi, dan kondisi antarmuka keluaran yang menyebut eth0:0 adalah penyebab umum. Perangkat keluaran yang dipilih rute adalah eth0, jadi kondisi yang mencari nama lain tidak akan pernah benar, apa pun alamat sumber yang dipilih kernel.

Ubah kondisi ke perangkat sebenarnya dan biarkan label di luar. Jika Anda perlu membedakan dua kumpulan klien yang berbagi perangkat itu, bedakan berdasarkan prefiks sumber, bukan berdasarkan nama antarmuka yang tidak mungkin ada. Dua aturan dengan -s yang tidak tumpang tindih mudah dibaca dan diuji; satu aturan dengan perangkat fiktif bukan keduanya. Beri setiap aturan komentar yang menyebut kumpulannya, karena enam bulan dari sekarang prefiks saja tidak akan memberi tahu siapa pun mengapa aturan itu ada di sana.

Periksa rute yang memilih perangkat

NAT postrouting berjalan setelah rute sudah memilih antarmuka keluaran, jadi antarmuka dalam aturan harus yang dipilih rute. Tanyakan langsung ke kernel dengan ip route get untuk alamat klien yang representatif dan baca perangkat maupun sumber yang dilaporkannya.

Jika jawabannya menyebut eth0, bagian antarmuka pada aturan sudah selesai. Jika yang disebut perangkat terowongan, paket tidak akan pernah mencapai aturan yang Anda sunting, dan pencarian berlanjut ke tabel perutean serta prioritasnya. Aturan yang tidak pernah cocok karena paket keluar di tempat lain tampak sama pada keluaran penghitung dengan aturan yang perangkatnya salah eja. Pastikan mana dari keduanya yang Anda hadapi sebelum menyunting apa pun, karena kasus kedua butuh perubahan perutean, bukan perubahan teks.

Pilih sumber terjemahan dengan sengaja

Begitu perangkatnya benar, alamat sumber adalah keputusan tersendiri. Ini hanya kumpulan IPv4 ilustratif dan alamat contoh:

iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
  -j SNAT --to-source 203.0.113.20

Menulis alamat ke dalam --to-source tidak membuat siapa pun merutekannya kembali kepada Anda. Penyedia hulu atau pemilik alamat harus mengantarkan balasan untuk alamat itu ke host ini, dan alamatnya harus salah satu yang berhak Anda gunakan. Jika tidak, aturan akan cocok dan menerjemahkan dan balasannya tetap pergi ke tempat lain.

Mengubah alamat sumber tidak sama dengan mengubah uplink. Ketika kebutuhan sebenarnya adalah jalur fisik yang berbeda, kebijakan perutean harus memilih jalur itu lebih dulu; SNAT lalu menulis ulang sumber pada perangkat apa pun yang dipilih kebijakan. Menambahkan lebih banyak label ke eth0 tidak memberikan rute maupun izin.

Verifikasi dengan koneksi yang baru saja Anda buka

Buka koneksi klien baru alih-alih memakai ulang yang sudah ada. Pelacakan koneksi menyimpan terjemahan yang dicatatnya saat aliran dimulai, sehingga sesi lama bisa terus memakai alamat sumber sebelumnya dan membuat aturan baru yang benar tampak rusak. Perhatikan penghitung naik, lalu amati sumber terjemahan di kabel atau di ujung jauh.

Untuk beberapa kumpulan yang berbagi satu antarmuka, beri masing-masing kecocokan sumber eksplisit dan alamat terjemahannya sendiri, simpan dalam konfigurasi terkelola firewall, dan catat urutan evaluasinya. Lalu catat apa yang Anda verifikasi: perangkat dari ip route get, penghitung yang bergerak, dan sumber yang dilihat sisi jauh. Catatan itu menjawab laporan berikutnya tanpa mengulangi kebingungan label.

Artikel terkait