So routen Sie die Software-Netzwerkverbindung zur angegebenen Schnittstelle (Linux)

So routen Sie die Software-Netzwerkverbindung zur angegebenen Schnittstelle (Linux)
aprogram -> eth1 -> internet A
bprogram -> eth2 -> internet B
aprogram -> eth2 -> internet B
etc.

Programm (z. B. Python-Skript, Curl) Netzwerkkommunikationsroute zur angegebenen Schnittstelle durch benutzerdefinierten Mechanismus.

Wie kann ich das unter Linux (Debian oder Ubuntu) lösen?

Antwort1

Sie können Policy-Routing zusammen mit ownerMatch (iptables) oder skuid/ skgid(nftables) verwenden und diese Programme unter verschiedenen Benutzern ausführen.

  1. Fügen Sie verschiedenen Tabellen verschiedene Nexthops hinzu:
ip route add default via 192.0.2.1 table 101
ip route add default via 192.0.2.2 table 102
ip route add default via 192.0.2.3 table 103
  1. Fügen Sie Regeln hinzu, um sie basierend auf der Firewall-Markierung zu verwenden:
ip rule add fwmark 1 lookup 101
ip rule add fwmark 2 lookup 102
ip rule add fwmark 3 lookup 103
  1. Fügen Sie Firewall-Regeln hinzu, um diese Markierungen den Paketen basierend auf dem Socket-Eigentümer zuzuweisen:
nft add rule filter output meta skuid 1001 mark set 1
nft add rule filter output meta skuid 1002 mark set 2
nft add rule filter output meta skuid 1003 mark set 3

oder

iptables -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 1
iptables -A OUTPUT -m owner --uid-owner 1002 -j MARK --set-mark 2
iptables -A OUTPUT -m owner --uid-owner 1003 -j MARK --set-mark 3

Jetzt werden Programme, die unter UID 1001 ausgeführt werden, über weitergeleitet 192.0.2.1, und so weiter.

verwandte Informationen