Çift ağ bağlantısı


9

Ubuntu 10.10 kutumda bir usb hücresel modem ve bir Ev LAN bağlantısı var.

Her ikisi de bağımsız çalışır.

Her ikisinin de aynı anda nasıl bağlanacağını bilmek ve hangi uygulamanın internete bağlanmak için hangi cihazı kullandığını belirleyebilmek istiyorum.

Bunu nasıl yapacağını bilen var mı?

Yanıtlar:


11

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 İptables yükleyin ) ve iproute2 ( ipkomut) (Ubuntu: iproute İproute yükle , iproute-doc İproute-doc uygulamasını yükle ).

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 ….


@Justin: Bu şey değildir bu yüzden vb anlamadıkları şeylerden eser, değil yaptıklarından çalıştı ne geri bildirimde lütfen, çok deneyimli olduğunu
Gilles 'SO dur olma kötülük'

1
Yapacak iki eklemem var: Birincisi, bu, eth0 kaynak adresiyle ppp0'a trafik gönderir. Bunu şu adaptörle değiştirebilirsiniz:, bu bağdaştırıcının ip adresi iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source ppp_ipnerede ppp_ip. İkincisi, rp_filteradresindeki katıları kapatmanız gerekecek /proc/sys/net/ipv4/config/ppp0/rp_filter. Dinlenme moduna ayarlandığında çalışır. Bu 2'dir.
Karalga
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.