Çoklu arayüze sahip bir sistemim var. Tüm bu arayüzleri birbirinden birkaç kullanarak izole ettim. sysctl
seçenekler ve yönlendirme tabloları ve kuralları.
Her arayüzün varsayılan bir rota tanımlayan kendi yönlendirme tablosu vardır.
Her yönlendirme tablosunda, hangi paketlerin hangi tabloya gideceğini tanımlayan 4 kural vardır.
Basitleştirmek için diyelim ki eth0 (192.168.1.1)
ve eth1 (192.168.1.2)
.
itibaren
192.168.1.1
tabloeth0
için
192.168.1.1
tabloeth0
iif eth0
table eth0
oif eth0
table eth0
İçin eth2
aynısı.
sysctl
seçenekler:
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.all.arp_announce = 1
net.ipv4.conf.all.rp_filter = 1
Bu benim amaçlanan kullanım durumlarımın% 99'u için mükemmel çalışıyor ancak bir tanesi başarısız oluyor. Bağlanmayan bir soketten bir paket oluşturulursa, "sendto" kullanarak bir UDP istemcisine yanıt vermek gibi, çağrı "Ağa Erişilemez" ile başarısız olur. Sendto çağırmadan önce belirli bir IP adresi bağlıysa, arama beklendiği gibi başarılı olur.
Bu gibi durumlar için hepsini yakalama varsayılan bir yol belirlemediğiniz için, bu sorunu çözmek için politika yönlendirme (örneğin iptables, ip kuralı) kullanılarak yapılabilecek bir şey var mı?
Teşekkürler
ip link add dummy0 type dummy
; ip link set dummy0 up
; ip route add default dev dummy0
. Açıkçası hiçbir paket yanlış yere gitmeyecek. Socat ile yaptığım testte, aynı ağdan eth0 ile 192.168.1.1 arasında temasa geçtiğimde 192.168.1.1 kaynağı ile cevap vermeye "Ağa erişilemez" den gittim. Şimdi basit bir dava gibi görünüyor. Gerçek bir dava var mı? Bu arada, soruya hiçbir rota yazmadın, bu yüzden bundan daha fazlasını yapamam.