Ich habe gesehen, dass dies in vielen Android-basierten Projekten wie „ProxyDroid“ und „SSHTunnel“ verwendet wird.
Wenn Sie eine Verbindung zu einem Proxy oder SSH-Tunnel herstellen, werden mithilfe von iptables alle TCP-Anfragen durch den von Ihnen erstellten Tunnel umgeleitet.
Es sollte etwa „-I OUTPUT -p tcp --destination-not xxx.xxx.xx.xx --redirect-to xx.xxx.xx.xx:port“ sein, aber ich konnte keine Beispiele dazu finden und ich weiß nicht, ob es in nat oder etwas anderes eingefügt werden sollte. + Ich habe keine Ahnung, ob ich mehr als eine Regel haben sollte, z. B. eine weitere für eingehende Verbindungen.
BEARBEITEN:
Es scheint nicht möglich zu sein, den Tunnel direkt zu verwenden. Oder ich habe nicht herausgefunden, wie es ohne Verwendung eines Agenten geht. Damit dies funktioniert, musste ich ein Programm namens Redsocks installieren, das als lokaler Server fungiert.
Die hier verwendeten iptables-Befehle lauten wie folgt:
# do not redirect connection sent to localhost so redirected connections can reach
# its destination, otherwise we'll stuck in a loop.
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
# Redirect all tcp connections except ones that are going to my tunnel server
# to the local redsocks port
iptables -t nat -A OUTPUT -p tcp ! -d tunnel.ip.goes.here -j REDIRECT --to-ports 31338
RedSocks-Repo:https://github.com/darkk/redsocks
Jetzt funktioniert alles wunderbar, aber ich muss noch wissen, ob dies ohne die Redsocks (direkte Verbindung zum Tunnel) möglich ist.
Antwort1
Wollen Sie ein VPN für arme Leute über SSH einrichten? Wenn ja, gibt es dazu eine Ubuntu-Dokumentation:
https://help.ubuntu.com/community/SSH_VPN
Grundsätzlich würden Sie die Option „-w“ verwenden, um eine neue tun0-Schnittstelle einzurichten und das Routing darüber zu starten. iptables
ist nicht erforderlich, Sie müssen jedoch Routen einrichten.
Beachten Sie, dass TCP über TCP eineschlechte Idee. Eine bessere Option wäre möglicherweise ein einfaches VPN, beispielsweise mit OpenVPN, aber das ist komplizierter als ein schneller und einfacher SSH-Tunnel.