Wählen Sie das Gateway aus, das für bestimmte Befehle unter Linux verwendet werden soll

1

Ich habe mehrere Netzwerkschnittstellen, die eine Verbindung zum Internet herstellen. Ich kann die Schnittstelle für den Internetzugang über ändern route add default gw ... jederzeit.

Ist es jedoch möglich, das Gateway nur für einen bestimmten Befehl auszuwählen? Lassen Sie beispielsweise einen Prozess eine GSM-Modemverbindung verwenden, während das System die Ethernetverbindung für alle anderen Internetanforderungen verwendet.

dronus
quelle

Antworten:

1

Das kannst du mit iptables und ein anderer Benutzer. Angenommen, die IP-Adresse der Schnittstelle, die der Befehl verwenden soll, lautet 1.2.3.4 und der Name eth1 und das Tor 1.2.3.1.

1) Erstellen Sie einen neuen Benutzer:

adduser user2

2) Markiere Pakete, die von diesem Benutzer kommen:

iptables -t mangle -A OUTPUT -m owner --uid-owner user2 -j MARK --set-mark 42

3) Wenden Sie die IP-Adresse auf diese Pakete an:

iptables -t nat -A POSTROUTING -o eth1 -m mark --mark 42 -j SNAT --to-source 1.2.3.4

4) Markierte Pakete weiterleiten über eth1 Gateway von:

ip rule add fwmark 42 table 42
ip route add default via 1.2.3.1 dev eth1 table 42

5) Führen Sie den Befehl als neuer Benutzer aus:

sudo -u user2 ping example.com

ping example.com würde jetzt über das gateway geroutet werden 1.2.3.1 nicht das Standard-Gateway des Systems.

chaos
quelle
Ugh, irgendwie mühsam. Trotzdem werde ich es in diesen Tagen ausprobieren.
dronus