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 route
ve ip rule
komutları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 route
ve ip route
komutları 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 rule
komut 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 local
kendi 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 alternate
tablonun 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 alternate
normal main
tablo yerine yönlendirme tablosunu kullanacağını söylüyor . Son adım, kullanması gereken tüm istemcilerin eth0
bağlandığından emin olmaktır . İle wget
, örneğin, set --bind-address=192.168.0.2
, NFS için belirlenenclientaddr=192.168.0.2
bağ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.
iftop
ve her biri doğru trafiği gösteriyor. Çok teşekkür ederim.