Wählen Sie das für bestimmte Befehle unter Linux verwendete Gateway aus

Wählen Sie das für bestimmte Befehle unter Linux verwendete Gateway aus

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

Ist es jedoch möglich, das Gateway nur für einen bestimmten Befehl auszuwählen? Beispielsweise kann ein Prozess eine GSM-Modemverbindung verwenden, während das System für alle anderen Internetanforderungen die Ethernet-Verbindung verwendet.

Antwort1

Sie können dies mit iptablesund einem anderen Benutzer tun. Vorausgesetzt, die IP-Adresse der Schnittstelle, die der Befehl verwenden soll, ist 1.2.3.4und der Name eth1und das Gateway 1.2.3.1.

1) Einen neuen Benutzer anlegen:

adduser user2

2) Markieren Sie 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) Leiten Sie markierte Pakete über eth1das Gateway von weiter:

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.comwürde jetzt über das Gateway und nicht über das Standard-Gateway des Systems geleitet 1.2.3.1.

verwandte Informationen