Deskripsi masalah
Dalam lingkungan dengan beberapa network interface controller (NIC) atau perutean jaringan kompleks—seperti yang menggunakan LVS load balancing, overlay networks, atau perutean asimetris—masalah berikut dapat terjadi:
Masalah akses layanan: Saat mengakses server backend melalui Server Load Balancer (SLB), Pemeriksaan kesehatan mungkin gagal atau akses layanan diblokir. Namun, Anda tetap dapat mengakses Port layanan secara normal saat login langsung ke server backend.
Timeout koneksi jaringan: Pada Instance ECS dengan beberapa NIC atau Perutean berbasis kebijakan yang dikonfigurasi, koneksi jaringan dalam beberapa arah mengalami timeout secara intermiten atau gagal sepenuhnya.
Kehilangan paket sistem: Saat menangkap paket menggunakan alat seperti
tcpdump, Anda mungkin mengamati bahwa datagram memasuki NIC tetapi tidak diterima oleh Lapisan aplikasi.
Penyebab
Masalah ini biasanya terjadi ketika parameter kernel rp_filter diatur ke mode ketat (nilai 1) dalam lingkungan dengan perutean asimetris. Perutean asimetris berarti jalur inbound dan outbound suatu datagram berbeda. Ketika mode ketat untuk rp_filter diaktifkan, kernel melakukan validasi reverse path pada setiap paket yang diterima. Jika NIC ingress suatu paket bukan antarmuka egress optimal dalam tabel rute sistem, paket tersebut akan di-drop.
Penyebab 1: Perutean asimetris akibat beberapa NIC atau Perutean berbasis kebijakan: Pada Instance ECS dengan beberapa NIC, jika Perutean berbasis kebijakan dikonfigurasi, sebuah paket mungkin masuk melalui NIC
eth0, tetapi paket responsnya dikirim keluar melalui NICeth1berdasarkan kebijakan perutean. Dalam kasus ini, mode ketatrp_filtermenganggap jalur paket tidak valid dan menjatuhkan paket tersebut.Penyebab 2: Perutean asimetris akibat load balancing (mode LVS-DR): Saat menggunakan Pendengar Lapisan 4 (TCP/UDP) untuk load balancer Alibaba Cloud, seperti Classic Load Balancer (CLB), server backend secara default menggunakan mode Direct Routing (DR). Dalam mode ini, paket permintaan klien melewati LVS menuju Instance ECS backend, tetapi paket respons dari Instance ECS melewati LVS dan kembali langsung ke klien. Ini merupakan skenario perutean asimetris khas bagi Instance ECS. Jika Instance ECS memiliki mode ketat
rp_filterdiaktifkan, permintaan paket dari LVS akan di-drop.
Solusi
Metode 1: Atur ke mode longgar (direkomendasikan)
Atur rp_filter ke mode longgar (nilai 2). Kernel hanya memeriksa apakah alamat IP sumber ada dalam tabel rute dan dapat dijangkau. Tidak diperlukan NIC ingress menjadi antarmuka egress optimal. Metode ini cocok untuk semua skenario perutean asimetris.
Ubah sementara parameter kernel agar perubahan langsung berlaku.
# 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_filterUji apakah layanan telah pulih. Jika masalah teratasi, lanjutkan ke langkah berikutnya untuk membuat perubahan permanen.
Edit file
/etc/sysctl.conf. Tambahkan atau ubah konfigurasi berikut agar tetap berlaku setelah restart sistem.# Edit file konfigurasi vi /etc/sysctl.conf # Tambahkan atau ubah dua baris berikut net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2Jalankan perintah
sysctl -puntuk menerapkan konfigurasi permanen.sudo sysctl -p
Metode 2: Nonaktifkan validasi untuk NIC tertentu
Jika hanya NIC tertentu, seperti eth0, yang menerima traffic dari LVS, nonaktifkan validasi reverse path hanya untuk NIC tersebut.
Nonaktifkan sementara
rp_filteruntuk NICeth0.echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filterUji apakah layanan telah pulih. Jika masalah teratasi, lanjutkan ke langkah berikutnya untuk membuat perubahan permanen.
Edit file
/etc/sysctl.conf. Tambahkan atau ubah konfigurasi berikut.# Edit file konfigurasi vi /etc/sysctl.conf # Tambahkan atau ubah baris berikut net.ipv4.conf.eth0.rp_filter = 0Jalankan perintah
sysctl -puntuk menerapkan konfigurasi permanen.sudo sysctl -p
Metode 3: Nonaktifkan validasi secara global
Metode ini sepenuhnya menonaktifkan validasi reverse path dan membuat sistem rentan terhadap risiko serangan IP spoofing.
Ubah sementara 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_filterUji apakah layanan telah pulih. Jika masalah teratasi, lanjutkan ke langkah berikutnya untuk membuat perubahan permanen.
Edit file
/etc/sysctl.conf. Tambahkan atau ubah konfigurasi berikut.# Edit file konfigurasi vi /etc/sysctl.conf # Peringatan: Konfigurasi berikut membuat server rentan terhadap risiko serangan IP spoofing. net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0Jalankan perintah
sysctl -puntuk menerapkan konfigurasi permanen.sudo sysctl -p
Rekomendasi
Ikuti prinsip Hak istimewa minimal: Saat menyesuaikan parameter rp_filter, prioritaskan solusi dengan cakupan dampak paling minimal. Misalnya, menggunakan mode longgar (rp_filter=2) lebih baik daripada menonaktifkan fitur sepenuhnya (rp_filter=0). Mengubah konfigurasi untuk satu NIC juga lebih baik daripada mengubah konfigurasi global.