Wie kann eine Anwendung (wie Firefox) gezwungen werden, eine bestimmte Netzwerkschnittstelle zu verwenden?


20

Ich habe zwei Schnittstellen: eth0 und wlan0 auf einem Notebook.

Mögliche Anwendungsfälle:

  • eth0 gewährt mir einen Internetzugang und wlan0 ist derzeit mit einem Router verbunden, der keine Internetverbindung hat. Für Entwicklungszwecke muss ich standardmäßig eine Verbindung zum wlan0 herstellen, zum Surfen jedoch eth0 verwenden
  • eth0 und wlan0 sind beide mit dem Internet verbunden. Für eine Torrent-Anwendung sollte eth0 aus Gründen der Geschwindigkeit verwendet werden, für die Portabilität des Notebooks sollte SSH jedoch eine Verbindung über wlan0 haben
  • eth0 ist eine drahtgebundene Verbindung, wlan0 ist eine drahtlose Verbindung. Sinnvolle Daten sollten über eth0 übertragen werden, aber auch anderer Datenverkehr kann über wlan0 übertragen werden.

Gibt es eine Möglichkeit, Anwendungen (wie nc.traditionaloder firefox) zu zwingen , eine bestimmte Netzwerkschnittstelle zu verwenden? Ein Wrapper wie example-wrapper eth0 programist auch in Ordnung, wenn ein solches Programm existiert. Es wäre schön, wenn es in Firefox (zur Laufzeit) konfiguriert werden könnte. Ich möchte IPTables-Lösungen nach Möglichkeit vermeiden.


4
Dies ist auch hilfreich für mehrere Internetverbindungen, von denen eine Torrent ausführt und die andere zum Surfen verwendet wird.
iamgopal

Sie möchten verschiedene Routen verwenden, basierend auf dem Protokoll / der Anwendung. Dafür benötigen Sie iptables.
João Pinto

1
Ich weiß nicht, wie Sie dies ohne etwas tun können, das Ihren Layer7-Verkehr (Anwendungsverkehr) auf einen bestimmten Port abbildet oder auf andere Weise basierend auf Anwendungsinformationen auf höherer Ebene filtert (was eine Verkehrskontrolle erfordern würde). Obwohl iptables nicht unbedingt erforderlich ist, müsste jede Lösung, die einen Wrapper beinhaltet, auf irgendeine Weise mit der TCP- oder IP-Richtlinie interagieren. Ich weiß nicht, wie ich das ohne ein Layer2- oder Layer3-Netzwerk machen soll, das den Datenverkehr woanders hinleitet.
Belacqua

Antworten:



1

Sie können einen komplexeren Ansatz für die Verbindungsmarkierung und die Routenrichtlinie verwenden.
Es wird gut funktionieren, wenn Sie einen Benutzer haben, der eine Software und eine andere ausführt.
Auf diese Weise können Sie die Verbindungen eines Benutzers markieren und eine bestimmte Routing-Tabelle verwenden, während alle anderen Benutzer die Standard-Routing-Tabelle verwenden.
Das grundlegende Dokument, um alles zu verstehen, finden Sie unter: http://www.lartc.org/lartc.html Hier finden Sie
auch ein Beispiel für zwei Verbindungen: /unix/58635/iptables- set-mark-route-diferent-ports-through-different-interfaces
Sie können das iptables-Modul "owner" verwenden, das die Verbindungen markiert, um Routing-Richtlinien zuzulassen.


Das Richtlinienrouting funktioniert für verschiedene Benutzer, jedoch nicht für eine Anwendung, die unter einem Benutzer ausgeführt wird (wie in OP beschrieben). LD_PRELOADscheint der Weg zu gehen (nicht für bösartige Programme / aus Sicherheitsgründen), könnte vielleicht jemand Bob Lebins Beitrag ausarbeiten?
Lekensteyn

0

Hier ist eine Musterlösung. Es verwendet den SOCKS-Server, der auf dem aktuellen Computer eingerichtet ist, um Verbindungen weiterzuleiten. Jede Anwendung sollte so konfiguriert sein, dass sie jeden Server verwendet.


3
Dies sieht aus wie ein HTTP-Proxy. Funktioniert es mit anderen Protokollen, wie einer Verbindung zwischen zwei Netcat-Instanzen?
Lekensteyn

0

Sie können auch einen VMware-Arbeitsplatzrechner verwenden, um verschiedene Netzwerkschnittstellen gemeinsam zu nutzen. Ich habe viel getan, um sie von einer Schnittstelle herunterzuladen und die andere für Netflix zu belassen.

Sie müssen sowohl ethX als auch wlanX auf VMware einrichten, aber sobald Sie es konfiguriert haben, können Sie es herunterladen oder durchsuchen.

Es ist ziemlich glatt. Sie können auch eine Firewall zum Verbinden von Schnittstellen verwenden, was ebenfalls hervorragend funktioniert.


Es funktioniert zwar für diese bestimmte Anwendung, kann jedoch leider nicht mit anderen Anwendungen außerhalb der VM verwendet werden, z. B. Firefox.
Lekensteyn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.