Ubuntu Linux - birden fazla NIC, aynı LAN… ARP yanıtları her zaman tek bir NIC'den çıkar


16

Son derece kemikli bir DSL ağ geçidine sahip AT&T U-Verse internet servisimiz var.

5 IP'miz (netmask 248) var, ancak ağ geçidi tek bir IP -> tek MAC adresi eşlemesinden başka bir şey yapamaz.

Tek bir güvenlik duvarı makinemiz var ve farklı IP / port kombinasyonlarını bir DMZ içindeki farklı yerlere yönlendiriyoruz.

Şimdiye kadar çözümümüz, güvenlik duvarında 4 ek NIC bulunan bir VMWare sanal makinesine sahip olmak, diğer 4 IP adresini almak ... ancak bir sorunumuz var.

Ağ geçidi temel olarak IP'nin beklenen MAC üzerinde yanıt verip vermediğini görmek için bir ARP ping işlemi yapıyor. Aynı LAN üzerindeki 4 NIC ile linux, TÜM IP'ler için ARP isteklerini tek bir arabirim kullanarak yanıtlıyor. Ağ geçidinin beklediği şey bu değil ve diğer 3 NIC'yi karıştırıyor. Ağ geçidi, ARP ping sonuçlarının beklenen MAC olmadığı IP'ler için gelen trafiği yönlendirmeyi reddediyor.

Eth0'ın IP'sinin eth0'a çıkması için ARP yanıtlarını, eth1'in eth1'i çıkarması için IP'nin yanıtını nasıl alabiliriz?

DÜZENLE

Christopher Cashell'in yanıtı bu durumda çalışmaz. Okumak için büyük umutlarým vardý ama ... hayýr.

DÜZENLEME 2

Çözüldü! Cevabımı aşağıda görebilirsiniz.


PS - 'damla ters' yorum yok ... U-Verse 18mbps, vs her şeyin 3mbps veya kablo üzerinden çok güvenilmez 10mbps
darron

@dblack: Cevabınızı eklemeyi unuttunuz :)
Mihai Limbăşan

Api.recaptcha.net sitesi kısa bir süre kapalı kaldı. Cevap şimdi.
darron

Yanıtlar:


13

Seçtiğiniz çözüm işe yarıyor, ancak uygun olmayanları içeren alternatifler var. (Christopher Cashell başlangıçta doğru yoldaydı, ama bir suratın dışındaydı.)

Kısacası, şu parametreleri ayarlamak istiyorsunuz:

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

Modern, 2.6 serisi bir Linux çekirdeğini çalıştırırken bunlar mevcut olmalıdır. Sisteminizde '/ proc / sys / net / ipv4 / conf / / arp_announc' ve / proc / sys / net / ipv4 / conf / / arp_ignore 'öğelerinin bulunduğundan emin olun.

'Arp_filter' parametresi yalnızca çeşitli IP adresleriniz bir LAN segmentini paylaştığında, ancak farklı IP alt ağı kullandığında çalışır. IP alt ağını da paylaşıyorlarsa, yukarıdaki gibi 'arp_ignore' ve 'arp_announc' kullanmanız gerekir.

(Ayrıca 'arp_filter' değerini tekrar '0' olarak ayarlamanız gerekebileceğine inanıyorum.)


Arp_filter'e ne oldu? ARP sorununa erken (2003?) Bir çözümdü, ancak en azından Centos 5'de tarif edildiği gibi çalışmıyor gibi görünüyor. Arp_ignore ve arp_announc iyi görünüyor.
pcapademic

Bu çözüm, yalnızca ARP düzeyinde işe yarıyor gibi görünüyor. Ek rota ayarları olmadan, güvenlik duvarı yine de kendi giden IP trafiği için yanlış giden kartı (ve MAC) seçebilir, ancak (yine de) gelen IP trafiğini her zaman doğru kartta alır, bu da asimetrik yol ve rp_filter hususlarına yol açar.
AB

8

Tamam, işte çözüm. İlk olarak, bir özet:

İşte temel ağ planım:

 eth0 10.10.10.2 netmask 255.255.255.248
 eth1 10.10.10.3 netmask 255.255.255.248
 eth2 10.10.10.4 netmask 255.255.255.248
 eth3 10.10.10.5 netmask 255.255.255.248

Tüm arabirimler çakışıyor. Bu teknik olarak yanlış ve tüm sıkıntılarımın kaynağı ... ama bu aptal konut geçidi nedeniyle yapmam gerekiyor.

İlk olarak, yayın ARP istekleri tüm bunlara gider. 4 IP'nin tümü geçerli yerel adresler olduğundan, 4 arayüzün tümü yanıt vermeye çalışacaktır.

1) arptables yükleyin . Önyükleme sırasında bu yeri ekleyin ( /etc/rc.local burada):

arptables -F INPUT
arptables -A INPUT -i eth0 --destination-ip ! 10.10.10.2 -j DROP
arptables -A INPUT -i eth1 --destination-ip ! 10.10.10.3 -j DROP
arptables -A INPUT -i eth2 --destination-ip ! 10.10.10.4 -j DROP
arptables -A INPUT -i eth3 --destination-ip ! 10.10.10.5 -j DROP

Bu, yayınların yanlış arayüze girmesini önleyecektir. Böylece, doğru arayüz artık tek yanıtlayıcı olacaktır.

Bu tek başına yeterli değil. Sonraki bit bir ARP tablosu problemidir. Talep eden PC muhtemelen bir ARP tablo girişine sahiptir ve bu nedenle Linux bununla ilişkili arayüzü kullanacaktır. ARP tablosu girişi sona erene kadar, ARP isteğiyle ilişkili olan değil, bu girdinin arabirimini kullanarak ARP yanıtları göndermeye çalışacak.

Sysctl seçeneği rp_filter , yanlış arabirimdeyse giden ARP yanıt paketlerini reddediyor gibi görünüyor. Yani...

2) rp_filter'ı devre dışı bırakın .

Debian / Ubuntu için bu , /etc/sysctl.d/10-network-security.conf dosyasındaki iki rp_filter satırını yorumlamak anlamına gelir .

Bu seçenek bir nedenden ötürü etkinleştirildi ... yani çapraz arayüz kimlik sahtekarlığı saldırılarını önlemeye yardımcı olmak için. Okudum, paketin geldiği veya çıktığı arayüz için yasal olduğunu doğrular (MAC'leri ve IP'leri değiştirerek ve hala aynı arayüz üzerinden yönlendirilip yönlendirilmediğini görerek). Yani, normalde kapatmak için kötü bir fikir olurdu. Benim durumumda, tüm arayüzler aynı ağda ... bu yüzden kontrol gerçekten önemli değil.

Başka bir arayüz eklerse ve kimlik sahtekarlığı korumasına ihtiyacım varsa, belki de aynı şeyi yapmak için bazı arptables / iptables girişleri oluşturabiliriz.


5

Bu, Linux'un IP'leri ve NIC'leri işleme şekliyle ilgilidir. Temel olarak, bir IP adresini yalnızca belirli NIC'ye değil, kutuya aitmiş gibi ele alır. Sonuç olarak, beklemediğiniz arabirimlerdeki IP adreslerinden ARP yanıtları alabilirsiniz.

Çözüm bir sysctl seçeneğidir. Hatırladığım gibi, aradığınız şey:

net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1

Bu sizin için sorunu çözecektir. Bunları /etc/sysctl.conf dosyasına ekleyin ve ' sysctl -p' komutunu çalıştırın (veya her satırı ' sysctl -w' argümanı olarak çalıştırın) .

Bu, Linux'un yalnızca bir IP adresinin atandığı arabirimdeki ARP isteklerine yanıt vermesine neden olur.


hmm ... ne yazık ki işe yaramıyor. Bunu sysctl.conf dosyasına yapıştırdım, sysctl'i çalıştırdım, hatta yeniden başlattım, değişiklik yok. / Proc'daki seçenekleri seçebilir ve ayarlandıklarını görebilirim, ancak başka bir kutudan arping edersem, tüm yanıtlar aynı MAC'dan geliyor. Arabirimlerin hepsi aynı ağda (aynı yayın vb.) ...
Darron

1
Arabirimler aynı ağ üzerindeyse ancak farklı alt ağlarda adresleri varsa, bu doğru çözümdür. Çalışma doğrulandı.
Alastair Irvine


0

Ağ geçidini köprüleyebilir ve güvenlik duvarının IP'leri ele geçirmesini sağlayabilir misiniz?


anladığım kadarıyla, hayır ... ama yanılıyorsam birisi beni düzeltir.
darron
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.