Routing nur des ausgehenden TCP-Verkehrs über eine Tun0-Schnittstelle

Routing nur des ausgehenden TCP-Verkehrs über eine Tun0-Schnittstelle

Ich habe ein Ubuntu 20-System und versuche, einen Tunnel zwischen meinem System und einem Remote-Server zu erstellen, da mein Client-System keinen eingehenden/ausgehenden TCP-Verkehr zulassen kann.

Ich habe eine virtuelle tun0-Schnittstelle erstellt und möchte, dass TCP-Pakete nur an diese Schnittstelle weitergeleitet werden, damit mein Programm sie lesen, das Paket in ein anderes Protokoll (z. B. DNS) verpacken und an meinen Tunnelendpunkt senden kann.

Ich habe es bereits geschafft, den gesamten Datenverkehr von meinem Computer an die Schnittstelle umzuleiten, aber dadurch wird mein System daran gehindert, anderen, nicht TCP-bezogenen Datenverkehr auszuführen (wie beispielsweise das Anpingen meines Routers oder von google.com).

Die Regeln, die ich verwendet habe:

sudo ip route del default
sudo ip route add default via 10.1.0.1 dev tun0
sudo ip route add 192.168.1.127 via 192.168.1.1 dev ens33

Wobei 192.168.1.1 mein Standard-GW ist. 10.1.0.1 ist meine Tun0-IP. 192.168.1.127 ist die IP meines Servers.

Wie kann ich nur TCP-Verkehr weiterleiten?

Antwort1

Dies ist mir gelungen, indem ich eine andere Routing-Tabelle verwendet und bestimmte Pakete markiert habe, die mithilfe dieser Tabelle geroutet werden sollen.

So erstellen Sie eine Standardroute zur IP meiner Tun-Schnittstelle:

 ip route add default via 10.0.0.1 table 3

So markieren Sie ausgehende TCP-Pakete:

 iptables -t mangle -A OUTPUT -p tcp -j MARK --set-mark 2

Und schließlich, um sicherzustellen, dass diese Pakete mit Tabelle 3 geroutet werden, eine IP-Regel zum Weiterleiten markierter Pakete:

ip rule add fwmark 2 table 3

verwandte Informationen