我想通过mosh连接到位于NAT后面的服务器。我无法触摸路由器将其设置为upnp支持,但是我已经申请了UDP端口转发9807-> 60000,以及ssh端口转发原因。
因此,是否有通过客户端和/或服务器端的命令行args或conf文件指定服务器端口的方法?
注意:以下不起作用!!
mosh -p 9807 user@my_server
Run Code Online (Sandbox Code Playgroud)
编辑:
我尝试先SSH到服务器,然后手动运行mosh-server -p 60000,然后从另一个终端运行mosh -p 9807 my_server。这会导致错误:
Error binding to IP my_server_ip: bind: Address already in use
Run Code Online (Sandbox Code Playgroud)
说:
谢谢。
您遇到的问题在于端口重定向。您在路由器上的 NAT 转发正在将传入流量发送<domain>:9807到<internal-ip>:60000。当您使用该-p选项启动 mosh 时,客户端通过 ssh 连接到服务器并告诉服务器启动,监听指定的端口。然后 mosh-server 将打开的端口号(在本例中为您指定的端口号)传送回客户端,客户端关闭 ssh 连接并尝试连接到<domain>:<port>. 客户端正在尝试与服务器正在侦听的同一端口通信。问题是您的 NAT 路由器正在将流量从 WAN 端的一个端口重定向到 NAT 机器上的另一个端口。这是行不通的。
最好的办法是获得直接转换,例如请求路由器将 WAN 端的端口 9807 转发到端口 9807 的 mosh 服务器机器。
如果这不是一个选项,我能想到的下一个最好的方法是使用 iptables 来破坏服务器机器上的流量。
iptables -t nat -A PREROUTING -p udp --dport 60000 -j REDIRECT --to-port 9807
Run Code Online (Sandbox Code Playgroud)
按照您的描述执行您的客户
mosh -p 9807 user@my_server
Run Code Online (Sandbox Code Playgroud)
发生的事情是:
mosh-server在端口上执行侦听9807。980798079807并将其发送到端口上的服务器6000060000over接收数据包UDP,它匹配 iptables 规则并被重定向到它们的目的地(在这种情况下是服务器的 IP),但在端口9807| 归档时间: |
|
| 查看次数: |
5195 次 |
| 最近记录: |