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 ( ip
komut) (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 ppp0
ve 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 iptables
ve 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 eth0
ve 2 ile işaretlenmiş tüm paketler dışarı çıkar ppp0
( localhost
geri 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 iptables
giden 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 eth0
ve tüm trafik kullanıcı olarak çalışan bir uygulama tarafından kökenli proxy
yoluyla 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-routes
komutları ç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 …
.