Hangi paketlerin nereye gittiğine nasıl karar vermek istediğinize bağlı olarak birkaç olasılık vardır. Çoğu, TCP / IP ağlarının Linux'ta nasıl çalıştığını anlamaya ihtiyaç duyacaktır. Karmaşık şeyler yapmak için bilmeniz gereken ana araçlar iptables(Ubuntu: iptables
) ve iproute2 ( ipkomut) (Ubuntu: iproute
, iproute-doc
).
Hedef IP adresine göre tamamen ayırt edebiliyorsanız, basittir: IP adreslerini isteklerinize göre yönlendirin. Örneğin, aşağıdaki komutlar 1.2.3 için tüm paketlere neden olur. x ve 1.2.4.2 üzerinden geçmek ppp0ve diğer paketler üzerinden geçmek eth0.
route add -net 1.2.3.4/24 ppp0
route add -host 1.2.4.2 ppp0
route add -net 0.0.0.0/0 eth0
Daha karmaşık gereksinimler için iptablesve kullanmaya başlamanız gerekir ip route. Örneğin, aşağıdaki komutlar özel yönlendirme tabloları kurar, böylece 1 ile işaretlenmiş tüm paketler dışarı çıkar eth0ve 2 ile işaretlenmiş tüm paketler dışarı çıkar ppp0( localhostgeri döngü arayüzüne yapışması amaçlanan paketler hariç ).
ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth0
ip rule add fwmark 2 table 2
ip route add 127.0.0.0/8 table 2 dev lo
ip route add 0.0.0.0/0 table 2 dev ppp0
Artık iptablesgiden paketleri “yönlendirmek” için, hangi yoldan gideceklerine karar verecek bir işaret ekleyerek kullanabilirsiniz . Örneğin, aşağıda üzerinden tüm giden SMTP trafiğini (port 25) göndermek için nasıl eth0ve tüm trafik kullanıcı olarak çalışan bir uygulama tarafından kökenli proxyyoluyla ppp0.
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 2
Ayrıca , internete bağlı 2 ağ arabirimine bakın . Alan adına göre kullanılacak olanı seçin ve yazılımı farklı ağ arayüzlerine bağlayın .
Her iki arabirim de bağlandığında bu komutların çalışmasını ayarlamanız gerekir. İstediğiniz /etc/network/if-up.d/0justin-routeskomutları çalıştıran bir komut dosyası yazmanızı öneririm . Bu komut dosyası, bir ağ arabirimi her açıldığında çalıştırılır; adı ile başladığı için 0, bu sürecin başlarında, rotaların yerinde olmasını bekleyebilecek uygulamaya özel kurulumdan önce çalışır. /etc/network/if-down.d/Arayüzlerden biri düştüğünde bir şeyler yapmak istemeniz durumunda bir simetrik vardır . (İlişkili tüm yollar otomatik olarak silinir, bu da diğer arayüze geri düşmelerini istediğinizde bazı paketleri mahsur bırakabilir.)
İfup komut dosyaları interfaces(5) man page. Bilmeniz gereken en önemli şey, yukarı veya aşağı getirilen arabirimin adının ortam değişkeninde olmasıdır IFACE. Diğer arayüzün zaten hazır olup olmadığını öğrenebilirsiniz if ifconfig | sed 's/ .*//' | grep -Fqx 'eth0'; then ….