Kami memiliki layanan internet AT&T U-Verse, yang memiliki gateway DSL yang sangat terbatas.
Kami memiliki 5 IP (netmask 248), tetapi gateway tidak mampu melakukan apa pun selain IP tunggal -> pemetaan alamat MAC tunggal.
Kami memiliki mesin firewall tunggal, dan kami mengarahkan IP / port combo yang berbeda ke berbagai tempat di dalam DMZ.
Solusi kami sejauh ini adalah memiliki mesin virtual VMWare di firewall dengan 4 NIC tambahan di dalamnya, untuk mendapatkan 4 alamat IP lainnya ... namun kami memiliki masalah.
Gateway pada dasarnya melakukan ping ARP untuk melihat apakah IP merespons pada MAC yang diharapkan. Dengan 4 NIC semua pada LAN yang sama, linux merespons permintaan ARP untuk SEMUA IP menggunakan antarmuka tunggal. Bukan itu yang diharapkan gateway, dan ini mengacaukan 3 NIC lainnya. Gateway menolak untuk merutekan lalu lintas masuk untuk IP di mana hasil ping ARP bukan MAC yang diharapkan.
Bagaimana kita bisa mendapatkan balasan ARP untuk IP eth0 untuk keluar eth0, IP eth1 untuk keluar eth1, dll?
EDIT
Tanggapan Christopher Cashell tidak berfungsi dalam situasi ini. Saya memiliki harapan besar membacanya, tapi ... tidak.
EDIT 2
Terpecahkan! Lihat jawaban saya di bawah ini.
Jawaban:
Solusi pilihan Anda berfungsi, tetapi ada alternatif yang tidak melibatkan arptables. (Christopher Cashell berada di jalur yang benar, pada awalnya, tetapi ia pergi dengan smidge.)
Singkatnya, Anda ingin mengatur parameter ini:
Ini harus tersedia ketika menjalankan kernel Linux 2.6 seri modern. Periksa dan pastikan Anda bahwa '/ proc / sys / net / ipv4 / conf / / arp_announce' dan / proc / sys / net / ipv4 / conf / / arp_ignore 'ada di sistem Anda.
Parameter 'arp_filter' hanya berfungsi ketika berbagai alamat IP Anda berbagi segmen LAN tetapi menggunakan subnet IP yang berbeda. Jika mereka juga berbagi subnet IP, Anda perlu menggunakan 'arp_ignore' dan 'arp_announce', seperti di atas.
(Saya yakin Anda juga perlu mengatur 'arp_filter' kembali ke '0' juga.)
sumber
Oke, ini solusinya. Pertama, rekap:
Inilah rencana dasar jaringan saya:
Semua antarmuka tumpang tindih. Ini secara teknis salah, dan sumber dari semua kesengsaraan saya ... tapi saya harus melakukannya karena gateway perumahan bodoh ini.
Pertama, permintaan siaran ARP pergi ke semua ini. Karena semua 4 IP adalah alamat lokal yang valid, semua 4 antarmuka akan mencoba merespons.
1) instal arptables . Tambahkan tempat ini saat boot ( /etc/rc.local di sini):
Ini akan mencegah siaran masuk ke antarmuka yang salah. Jadi, antarmuka yang benar sekarang akan menjadi satu-satunya responden.
Itu saja tidak cukup. Bit berikutnya adalah masalah tabel ARP. PC yang meminta mungkin sudah memiliki entri tabel ARP, dan Linux akan menggunakan antarmuka yang terkait dengannya. Sampai entri tabel ARP berakhir, ia akan mencoba mengirim respons ARP menggunakan antarmuka entri itu, bukan yang terkait dengan permintaan ARP.
Opsi sysctl rp_filter tampaknya menolak paket respons ARP keluar jika mereka berada di antarmuka yang salah. Begitu...
2) Nonaktifkan rp_filter .
Pada Debian / Ubuntu, ini berarti mengomentari dua baris rp_filter di /etc/sysctl.d/10-network-security.conf .
Opsi ini diaktifkan karena suatu alasan ... yaitu untuk membantu mencegah serangan spoofing lintas-antarmuka. Saya membacanya memverifikasi bahwa paket itu legal untuk antarmuka yang masuk atau keluar (dengan menukar MAC dan IP dan melihat apakah masih merutekan melalui antarmuka yang sama). Jadi, biasanya itu ide yang buruk untuk mematikannya. Dalam kasus saya, semua antarmuka berada di jaringan yang sama ... sehingga pemeriksaan tidak menjadi masalah sama sekali.
Jika saya menambahkan antarmuka lain dan memerlukan perlindungan spoofing, mungkin dapat membuat beberapa entri arptables / iptables untuk melakukan hal yang sama.
sumber
Ini ada hubungannya dengan cara Linux menangani IP dan NIC. Pada dasarnya, itu memperlakukan alamat IP seolah-olah itu milik kotak, dan bukan hanya NIC tertentu. Hasilnya adalah Anda bisa mendapatkan respons ARP dari alamat IP pada antarmuka yang tidak Anda harapkan.
Solusinya adalah opsi sysctl. Seingat saya, yang Anda cari adalah:
Itu akan memperbaiki masalah Anda. Cukup tambahkan mereka ke /etc/sysctl.conf dan jalankan '
sysctl -p
' (atau jalankan setiap baris sebagai argumen untuk 'sysctl -w
'.Ini akan menyebabkan Linux hanya menanggapi permintaan ARP pada antarmuka yang ditugaskan untuk alamat IP.
sumber
Jawaban yang diterima dalam kombinasi dengan ini: http://www.linuxquestions.org/questions/linux-networking-3/multiple-interfaces-all-traffic-flows-through-just-one-538701/
di mana rute statis digunakan untuk berkomunikasi dengan hanya IP yang diinginkan melalui antarmuka tertentu, menciptakan solusi yang kuat dan sederhana untuk masalah serupa yang saya miliki.
sumber
Bisakah Anda menjembatani gateway dan meminta firewall menangani IP?
sumber