所以,我有一台服务器和一台家用机器。我的服务器无法与互联网通信,但我的家用计算机可以。因此,我使用以下命令设置了一条从主目录到服务器的反向隧道:
ssh -R 9001:www.google.com:80 server
现在,当我尝试从服务器 ping 时,它显示未知主机。
ping locahost:9001
知道我做错了什么吗?
答案1
ping是在ICMP协议中实现的,您转发的端口是TCP端口。因此 ping 不适合这种情况,您宁愿使用 telnet 或类似的东西进行测试,以检查是否可以建立连接。
答案2
SSH 隧道不是这样工作的 - 特别转发TCP协议设置端口上的流量发送到隧道远程端的指定地址和端口。当您在大多数系统(某些使用)上ping
实际使用称为(Internet 控制消息协议)的不同协议时,该协议不会通过您的 ssh 隧道传递。ICMP
udp
对于您的特定需求,您可能最好在家用计算机上使用 VPN。然后,您可以使用路由将流量重定向到本地计算机。然后,您可以发送任何与 IP 相关的协议(包括 udp、tcp 和 icmp),以便您可以进行 ping、浏览等操作。
对于像 google 这样的大型组织来说,这将是一项艰巨的任务,因为对于您想要路由到家庭计算机的每个主机,都需要将路由添加到服务器来处理此问题(并且 google 有许多您必须路由的 IP)。如果您要路由 Google 的汇总网络块,那么 Google 的情况也是如此。
如果你愿意牺牲你的默认路由在您的服务器上(这将允许您通过 VPN 传递所有非本地流量进行路由),并在您的服务器上为服务器网络上的任何主机使用静态路由,那么任务会容易得多,因为这只是一个情况IP转发。您将默认路由指向您的 VPN 端点,并让您家用计算机上的 IP 转发将流量发送到互联网。
如果您只想重定向网络流量 (HTTP/HTTPS),那么您可以将反向 ssh 隧道与 Web 结合使用代理人。这是相当简单的,因为 Web 客户端提供了一种简单的机制来指向代理。
您还可以尝试设置一个袜子代理(类似于 Web 代理,但支持一些其他应用程序/协议),但只有服务器上使用 SOCKS 的应用程序才能使用它。