Diagnosis dan perbaiki kehilangan paket atau kegagalan akses layanan di lingkungan perutean asimetris dengan menyesuaikan parameter kernel rp_filter.
Gejala
Di lingkungan dengan multiple NIC atau perutean asimetris, seperti load balancing LVS atau jaringan overlay, gejala berikut dapat terjadi:
-
Masalah akses layanan: Pemeriksaan kesehatan SLB gagal atau akses layanan diblokir, tetapi port layanan dapat diakses saat Anda login langsung ke server backend.
-
Timeout koneksi jaringan: Pada Instance ECS dengan multiple NIC atau Perutean berbasis kebijakan, koneksi dalam beberapa arah mengalami timeout atau gagal secara intermiten.
-
Kehilangan paket sistem: Tangkapan paket menggunakan alat seperti
tcpdumpmenunjukkan datagram masuk ke NIC, tetapi Lapisan aplikasi tidak menerimanya.
Penyebab
Masalah ini biasanya terjadi ketika rp_filter diatur ke mode ketat (nilai 1) dalam lingkungan perutean asimetris, di mana jalur inbound dan outbound berbeda. Dalam mode ketat, rp_filter mengaktifkan validasi jalur balik untuk setiap paket yang diterima oleh kernel. Jika NIC ingress bukan antarmuka egress optimal menurut tabel rute sistem, kernel akan membuang paket tersebut.
-
Multiple NIC atau Perutean berbasis kebijakan: Paket masuk melalui
eth0, tetapi kebijakan perutean mengirim respons melaluieth1. Mode ketatrp_filtermenganggap jalur ini tidak valid dan membuang paket tersebut. -
Load balancing (mode LVS-DR): Dengan Pendengar CLB Lapisan 4 (TCP/UDP), server backend secara default menggunakan Direct Routing (DR). Paket permintaan mencapai Instance ECS melalui LVS, tetapi respons dikirim langsung ke klien tanpa melewati LVS. Jika mode ketat
rp_filterdiaktifkan, instans akan membuang paket permintaan dari LVS.
Solusi
Atur ke mode longgar (disarankan)
Atur rp_filter ke mode longgar (nilai 2). Kernel hanya memeriksa apakah IP sumber dapat dijangkau di tabel rute mana pun, tanpa mewajibkan NIC ingress sesuai dengan antarmuka egress optimal. Pengaturan ini mendukung semua skenario perutean asimetris.
-
Sementara atur parameter kernel.
# Atur mode rp_filter untuk semua NIC ke mode longgar echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter echo 2 > /proc/sys/net/ipv4/conf/default/rp_filter -
Verifikasi apakah layanan telah pulih. Jika masalah teratasi, lanjutkan untuk membuat perubahan permanen.
-
Edit
/etc/sysctl.confagar perubahan tetap berlaku setelah restart.# Edit file konfigurasi vi /etc/sysctl.conf # Tambahkan atau modifikasi dua baris berikut net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 -
Jalankan
sysctl -puntuk menerapkan konfigurasi.sudo sysctl -p
Nonaktifkan validasi untuk NIC tertentu
Jika hanya NIC tertentu seperti eth0 yang menerima traffic LVS, nonaktifkan validasi jalur balik hanya untuk NIC tersebut.
-
Sementara nonaktifkan
rp_filteruntuketh0.echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter -
Verifikasi apakah layanan telah pulih. Jika masalah teratasi, lanjutkan untuk membuat perubahan permanen.
-
Edit
/etc/sysctl.confagar perubahan tetap berlaku.# Edit file konfigurasi vi /etc/sysctl.conf # Tambahkan atau modifikasi baris berikut net.ipv4.conf.eth0.rp_filter = 0 -
Jalankan
sysctl -puntuk menerapkan konfigurasi.sudo sysctl -p
Nonaktifkan validasi secara global
Metode ini sepenuhnya menonaktifkan validasi jalur balik, sehingga membuka sistem terhadap serangan IP spoofing.
-
Sementara atur parameter kernel.
# Peringatan: Operasi ini mengurangi keamanan sistem. Gunakan dengan hati-hati. echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter -
Verifikasi apakah layanan telah pulih. Jika masalah teratasi, lanjutkan untuk membuat perubahan permanen.
-
Edit
/etc/sysctl.confagar perubahan tetap berlaku.# Edit file konfigurasi vi /etc/sysctl.conf # Peringatan: Konfigurasi berikut membuka server terhadap risiko serangan IP spoofing. net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 -
Jalankan
sysctl -puntuk menerapkan konfigurasi.sudo sysctl -p
Praktik terbaik
Ikuti prinsip Hak istimewa minimal: Saat menyesuaikan rp_filter, utamakan cakupan sekecil mungkin. Mode longgar (rp_filter=2) lebih aman daripada menonaktifkan validasi sepenuhnya (rp_filter=0), dan perubahan per-NIC lebih baik daripada perubahan global.