gpt4 book ai didi

udp - 如何使用 mosh 连接到 NAT 后面的服务器

转载 作者:行者123 更新时间:2023-12-03 14:19:24 26 4
gpt4 key购买 nike

我想通过 mosh 连接到位于 NAT 后面的服务器。我无法触摸路由器将其设置为 upnp 支持,但我已经申请了 UDP 端口转发 9807->60000,以及一个 ssh 端口转发。

那么,无论如何,是否可以通过客户端和/或服务器端的命令行参数或 conf 文件指定服务器端口?

注:以下不起作用!!

mosh -p 9807 user@my_server

编辑:

我首先尝试通过 ssh 连接到我的服务器,然后手动运行 mosh-server -p 60000,然后从另一个终端运行 mosh -p 9807 my_server。这会导致错误:
Error binding to IP my_server_ip: bind: Address already in use

那说:
  • 端口转发正在工作。
  • mosh 尝试在端口 60000 安装 mosh-server。

  • 谢谢。

    最佳答案

    您遇到的问题在于端口重定向。您在路由器上的 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

    按照您的描述执行您的客户
    mosh -p 9807 user@my_server

    发生的事情是:
  • 您机器上的 mosh 客户端打开一个到您服务器的 ssh 连接(大概是通过 NAT 路由器转发到您的机器),它执行 mosh-server监听端口 9807 .
  • mosh 服务器退出,告诉通过 ssh 连接的客户端要连接的 UDP 端口是 9807
  • mosh 客户端关闭 ssh 连接并尝试通过端口 9807 连接到服务器
  • NAT 路由器在端口 9807 上看到此传入流量并将其发送到您的服务器的端口 60000
  • 您的机器在端口 60000 接收数据包在 UDP ,它匹配 iptables 规则并被重定向到他们的目的地(在这种情况下是服务器的 IP),但在端口 9807
  • 您的 NAT 路由器不会改变客户端流量的 SRC 端口,因此 mosh-server 在客户端正在监听的端口上将数据包发送回您的客户端,这些数据包被正确接收。
  • 关于udp - 如何使用 mosh 连接到 NAT 后面的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540128/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com