iptables:將 tcp 連線重新導向到 ssh 隧道

iptables:將 tcp 連線重新導向到 ssh 隧道

我已經看到它在許多基於 Android 的專案中使用,例如“ProxyDroid”和“SSHTunnel”

當您建立到代理或 ssh 隧道的連接,然後使用 iptables 它將透過您建立的隧道重定向所有 tcp 請求。

它應該類似於“-I OUTPUT -p tcp --destination-not xxx.xxx.xx.xx --redirect-to xx.xxx.xx.xx:port”,但我找不到任何關於此的示例我不知道是否應該將其插入到nat 或其他內容中+我不知道是否應該有超過1 個規則,例如:還有一個用於傳入連接。

編輯:

似乎不可能直接使用隧道,或者我還沒有找到如何在不使用代理的情況下做到這一點,我必須安裝一個名為 redsocks 的程式來充當本地伺服器才能完成這項工作。

至於這裡使用的iptables指令是:

# 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

紅襪回購:https://github.com/darkk/redsocks


現在一切都很好,但我仍然需要知道這是否可以在沒有紅襪的情況下完成(直接連接到隧道)。

答案1

您的意思是透過 SSH 設定窮人的 VPN 嗎?如果是這樣,有一些 Ubuntu 文件:

https://help.ubuntu.com/community/SSH_VPN

基本上,您將使用“-w”選項來設定新的 tun0 接口,並開始透過它進行路由。 iptables不涉及,但您需要設定路線。

請注意,在 TCP 上執行 TCP 可能是餿主意。更好的選擇可能是簡單的 VPN,例如 OpenVPN,但這將比快速而骯髒的 ssh 隧道更複雜。

相關內容