Bunun için uygun yol, giden paketler için kullanmak istediğiniz arabirime () bağlanmaktır. Çünkü daha sonra , giden arayüzlerine göre paketlerin nasıl yönlendirileceğini kontrol etmek için ip routeve ip rulekomutlarıyla yollar ayarlayabilirsiniz . Örneğim için aşağıdaki ağı kabul edeceğim:
- eth0:
- Adres: 192.168.0.2/24
- Varsayılan Ağ Geçidi: 192.168.0.1
- eth1:
- Adres: 192.168.1.2/24
- Varsayılan Ağ Geçidi: 192.168.1.1
Biri alternatif olarak adlandırılan eth0 için giden trafik için ve ana olarak adlandırılan eth1 için bir tablo olmak üzere iki yönlendirme tablosu oluşturacağım. Yönlendirme tablosu ana her zaman vardır ve routeve ip routekomutları tarafından kullanılan normal tablodur . Çoğu insan asla başka masalarla uğraşmaz. Alternate adlı tablo oluşturmak için şu satırı ekleyeceğiz /etc/iproute2/rt_tables:
10 alternate
Main tablosunun varsayılan önceliği 254'tür. Yönlendirme tablosunun geçerli olduğu kurallar ip rulekomut tarafından kontrol edilir . Varsayılan olarak, bu komut aşağıdaki gibi görünmesi gereken mevcut kuralların bir listesini yazdırır:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Bu temelde, tabloda localkendi IP adresim gibi yerel yollar için çekirdek tarafından tutulan özel bir tablo olan bir yol arayacağını söylüyor . Daha sonra tablo ana ve tablo varsayılanını deneyecek. Tablo varsayılanı normalde boştur, bu nedenle anada eşleşme yoksa, barındırılacak yol yoktur. İlk olarak, tabloyu eth0 kuralları ile değiştirelim.
sudo ip route add table alternate 192.168.0.0/24 dev eth0
sudo ip route add table alternate 192.168.1.0/24 dev eth1
sudo ip route add table alternate default via 192.168.0.1
Normalde alternatetablonun tabloya benzemesini istersiniz main. Tek fark, yönlendirmenin farklı olması gerektiğidir. Tüm NFS, HTTP vb. Trafiğin, eth1 üzerindeki ağa yönelik olsa bile, eth0'daki varsayılan ağ geçidinden geçmesini istiyorsanız, yukarıdaki ikinci satırı eklemek istemeyebilirsiniz. Sonraki adım, bu alternatif yönlendirme tablosunun ne zaman kullanılacağı için bir kural eklemektir:
sudo ip rule add from 192.168.0.0/24 pref 10 table alternate
Bu kural, 192.168.0 ağındaki bir adresten gelen trafiğin alternatenormal maintablo yerine yönlendirme tablosunu kullanacağını söylüyor . Son adım, kullanması gereken tüm istemcilerin eth0bağlandığından emin olmaktır . İle wget, örneğin, set --bind-address=192.168.0.2, NFS için belirlenenclientaddr=192.168.0.2bağlama seçeneği. Perl ile LibWWW kullanıyorsanız, bağlandığı yerel arayüzü kontrol etmek için LWP :: UserAgent içindeki localaddr seçeneğini ayarlayabilirsiniz. Bağlama ve derleme kaynağını denetleyemediğiniz bir istemciniz varsa, bir seçenek değildir, adresini değiştirmek için bir iptables kuralı kullanabilirsiniz, ancak bu daha çok bir hack'tir ve çalışmayabilir. Nat tablosunun veya mangle tablosunun PREROUTING zincirinde ayarlanmış bir SNAT kuralına ihtiyacınız olacaktır. Bunun çalışması için yine de yukarıda verilen değiştirilmiş yönlendirme tablolarına ihtiyacınız olacaktır.
iftopve her biri doğru trafiği gösteriyor. Çok teşekkür ederim.