Saya memiliki Ubuntu 16.04 Server yang bertindak sebagai router dengan banyak antarmuka (VLAN). Secara default, rp_filter
(reverse path filtering) diaktifkan untuk semua antarmuka. Saya ingin tetap seperti itu, tetapi buat pengecualian untuk satu antarmuka. (Paket dari antarmuka ini harus diizinkan memiliki alamat IP sumber yang tidak sesuai dengan alamat tujuan perutean antarmuka ini.)
Katakanlah antarmuka ini memiliki nama ens20.4
, vlan-raw-device-nya ens20
, dan antarmuka tujuan (untuk menguji aliran paket) dinamai ens20.2
(meskipun itu harus bekerja untuk antarmuka tujuan apa pun).
Saya mencoba untuk menetapkan rp_filter
properti ens20.4
hanya, tetapi tidak berhasil:
echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter
Jadi, untuk tujuan pengujian, saya juga menonaktifkan rp_filter
perangkat vlan-raw-dan antarmuka tujuan pengujian:
echo 0 > /proc/sys/net/ipv4/conf/ens20/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.2/rp_filter
Masih tidak berhasil, paket dengan alamat IP sumber "palsu" masih dijatuhkan. Hanya jika saya menonaktifkan rp_filter
untuk semua antarmuka, paket bisa melalui:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
Namun, saya masih ingin tetap menyaring jalur balik untuk semua antarmuka lainnya - apa yang saya lewatkan?
Jawaban:
Info di sana: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/Documentation/networking/ip-sysctl.txt?h=v4.9#n1090
Perhatikan kalimat terakhir yang akan menjelaskan upaya Anda:
Jadi ini seharusnya bekerja:
Sekarang maks (conf / {all, ens20.4} / rp_filter == 0: tidak ada validasi sumber. Cukup periksa ulang bahwa antarmuka lain masih dilindungi.
Anda juga dapat memeriksa "longgar" rpf dengan nilai 2. Jika paket biasanya harus dialihkan oleh antarmuka lain, itu akan lebih baik daripada tidak ada validasi.
sumber