V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sman
V2EX  ›  问与答

[网络问题] 端口转发,某些成功,某些不成功,怎么办?

  •  
  •   sman · 2022-12-11 17:31:18 +08:00 · 1732 次点击
    这是一个创建于 712 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位好, 我被这个问题困扰了快一年了,自己实在不知道怎么解决,想来求助一下;

    基本网络情况: ·上海电信千兆光纤,加装国际精品网,设备是 SDN 网关,已桥接(电信后台直接设置的),无 IPTV ; ·SDN 后接主路由华硕 AX86U 拨号,且取得公网 IP ; ·群晖 DS1821+,且自带 DDNS 能正常使用;

    问题: ·群晖肯定会跑一些服务,基本的 DSM 、下载、Transmission 什么的,端口转发都 OK ,比如 5001 、9091 等; ·但是,我用 Docker 装了几个其他服务,需要的端口却怎么也转发不成功,比如 Rustdesk 的 21115-21119 ,Minecraft 的 25565/19132 (用 CanYouSeeMe.org 查看端口情况,且对应程序输入 DDNS 域名+端口也无法连接); ·甚至我随机抽了几个 2xxxx/3xxxx/4xxxx/5xxxx 号段的端口,也都失败。

    我询问了华硕群晖的技术支持,都无解,华硕说你有成功的说明路由器没问题,群晖更是直接甩锅给华硕,最多加一句当地运营商可能限制了端口。但是,我随机抽的那些端口全都失败,个人觉得这不太可能是运营商的问题。

    我实在没办法了,来 V2EX 请教各路高手,往指教。

    16 条回复    2022-12-12 17:10:16 +08:00
    ThirdFlame
        1
    ThirdFlame  
       2022-12-11 17:33:47 +08:00
    nc 一个端口(比如 21115-21119 ,25565 、19132 ),从外网连一下试试。 如果能连上 那还是 docker 的问题。
    如果连不上 那就是路由器或者运营商屏蔽。
    sman
        2
    sman  
    OP
       2022-12-11 17:38:32 +08:00
    @ThirdFlame 不好意思,查了一下 nc 好像是 Linux 的一个什么命令?我也不是学这个的,实在不太懂,请问能否告知具体操作?我手里也没有其他设备,只有 Win10 和群晖。
    nitmali
        3
    nitmali  
       2022-12-11 17:44:08 +08:00   ❤️ 1
    具体说说怎么设置转发的,从哪儿转发到哪儿的
    cpstar
        4
    cpstar  
       2022-12-11 18:03:22 +08:00
    防火墙,防火墙,防火墙,路由的防火墙。
    bigshawn
        5
    bigshawn  
       2022-12-11 18:50:17 +08:00 via iPhone
    nas 搭过 rustdesk ,跑了 3 天之后就再也连不上了,看 ddns 解析正常,怀疑运营商做祟。
    IvanLi127
        6
    IvanLi127  
       2022-12-11 19:04:35 +08:00 via Android
    直接把路由撤了,电脑暂时关掉防火墙,拨号,在你想要的端口上监听,然后看看外网能不能连通。能通就加路由器进来,再试。先圈个范围
    Xusually
        7
    Xusually  
       2022-12-11 19:08:11 +08:00 via iPhone
    op 你看下 docker 的界面 docker 内的服务的端口和暴露到群晖的不是一个,你端口转发的时候需要转发到群晖的对应端口
    digimoon
        8
    digimoon  
       2022-12-11 21:08:31 +08:00
    你可能和几个人共用了一个公网 ip
    sman
        9
    sman  
    OP
       2022-12-11 21:12:47 +08:00
    @nitmali 就是最普通的路由器上设置端口转发,华硕的设置界面里做的,比如要设置 5001 TCP ,就是本地 NAS IP+内部端口 5001+外部端口 5001
    sman
        10
    sman  
    OP
       2022-12-11 21:14:01 +08:00
    @IvanLi127 SDN 网关不是普通光猫,没法自己控制,我是装宽带的时候就让他们局端做了桥接
    sman
        11
    sman  
    OP
       2022-12-11 21:14:23 +08:00
    @Xusually 请问具体怎么操作?
    Xusually
        12
    Xusually  
       2022-12-11 21:51:28 +08:00
    @sman 在你群晖 Docker 里面,找到你的容器,在容器详情里,下面有个 本地端口 和 容器端口。
    容器端口是容器内服务的端口,就是你前面说的哪些服务你打算映射的端口,但是其实在群晖里暴露的对应端口是界面上的本地端口。比如我群晖里的 iperf3 测速容器,默认服务端口是 5201 ,但是在我的 LAN 里面其他设备要测速需要链接群晖的 49155 (本地端口)。
    你的服务同理,去这里看看群晖里的对应的本地端口是什么,然后路由器端口转发到此端口即可,比如 Rustdesk 的 21115 端口,是容器端口,对应群晖端口打比方是 22222 ,你路由器就映射 wan 的 21115 到群晖 LAN IP 的 22222 端口就行了。

    nitmali
        13
    nitmali  
       2022-12-12 09:01:38 +08:00
    对于描述:“比如要设置 5001 TCP ,就是本地 NAS IP+内部端口 5001+外部端口 5001”
    5001 是 NAS 宿主的端口还是 docker 容器的端口,如果是 docker 的端口 检查是否 docker 和宿主做了映射或使用 host 。
    sman
        14
    sman  
    OP
       2022-12-12 15:55:54 +08:00
    @nitmali @Xusually

    两位好,就拿 Rustdesk 和 minecraft 两个 docker 来举例:

    Rustdesk 跑 host 网络,程序本身使用 TCP 21115-21119 和 UDP 21116 ; minecraft 跑 bridge ,docker 里设置容器端口和本地端口均为 UDP 19132 ;然后对应到路由器上,我设置的时候均为一一对应,比如 TCP 外部端口 21115/内部端口 21115 ,UDP 外部端口 19132/内部端口 19132 ,本地 IP 为 NAS 的本地 IP ,外部 IP 留空。

    另外,我也装了 iper3 ,刚才也试了一下,我设置的是容器和本地端口均为 5201 TCP ,去路由器做了 5201 映射,然后发现可以成功,也就是说,5201 端口转发也是好的,但上述那些还是不行。
    nitmali
        15
    nitmali  
       2022-12-12 16:31:58 +08:00
    @sman 排除一下服务本地访问限制,直接使用 nas ip + 端口看看能否访问服务。
    sman
        16
    sman  
    OP
       2022-12-12 17:10:16 +08:00
    @nitmali 可以的,我试过,比如 minecraft 的 docker ,直接内网跑,输入 IP 就能连上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:05 · PVG 10:05 · LAX 18:05 · JFK 21:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.