透明 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(via the ssh tunnel)


问题:我觉得应该有更简单的方法来实现这一点?如果没有,命令应该是什么样iptables的?

答案1

使用ssh 动态转发设置 socks 代理的选项,将其添加到您的.ssh/config

DynamicForward localhost:8000

然后告诉 curl 使用 SOCKS:

curl --socks5 localhost:8000 ...

还有其他方法可以curl利用 SOCKS;请参阅文档

答案2

不确定这里是否正确(关闭问题?标记为重复?)但我对这个问题有一个可接受的答案:

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

相关内容