透明 ssh 隧道

透明 ssh 隧道

我有一個在 中定義的 SSH 隧道/etc/ssh/ssh_config。它包含了:

LocalForward 0.0.0.0:8000 some-service:80
LocalForward 0.0.0.0:8001 some-other-service:80

我仍然希望能夠透過原始 DNS 名稱存取隧道(例如curl some-service應該仍然有效,而不是必須使用curl 0.0.0.0:8000

為了嘗試執行此操作,我將以下內容新增到我的/etc/hosts文件中:

127.0.0.2 some-service
127.0.0.3 some-other-service

現在,我想,我需要一些iptables命令來執行以下操作:

When I see a request to 127.0.0.2:80 I should proxy it to 127.0.0.1:8000
When I see a request to 127.0.0.3:80 I should proxy it to 127.0.0.0:8001

這樣,curl some-service將解析為127.0.0.2(via /etc/hosts,這又會被代理到127.0.0.1:8000(via iptables),這又會命中some-service:80(通過 ssh 隧道)


問題:我覺得應該有一個更簡單的方法來實現這個目標?如果沒有,iptables命令會是什麼樣子?

答案1

使用ssh 動態轉發設定襪子代理的選項,透過將其添加到您的.ssh/config

DynamicForward localhost:8000

然後告訴curl使用SOCKS:

curl --socks5 localhost:8000 ...

還有其他方法可以curl使用 SOCKS;參考文件

答案2

不確定這裡的正確禮儀(關閉問題?標記為重複?),但我在這裡對此問題有一個可接受的答案:

https://serverfault.com/questions/982063/transparent-ssh-tunneling

相關內容