各位好, 我被这个问题困扰了快一年了,自己实在不知道怎么解决,想来求助一下;
基本网络情况: ·上海电信千兆光纤,加装国际精品网,设备是 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 请教各路高手,往指教。
1
ThirdFlame 2022-12-11 17:33:47 +08:00
nc 一个端口(比如 21115-21119 ,25565 、19132 ),从外网连一下试试。 如果能连上 那还是 docker 的问题。
如果连不上 那就是路由器或者运营商屏蔽。 |
2
sman OP @ThirdFlame 不好意思,查了一下 nc 好像是 Linux 的一个什么命令?我也不是学这个的,实在不太懂,请问能否告知具体操作?我手里也没有其他设备,只有 Win10 和群晖。
|
3
nitmali 2022-12-11 17:44:08 +08:00 1
具体说说怎么设置转发的,从哪儿转发到哪儿的
|
4
cpstar 2022-12-11 18:03:22 +08:00
防火墙,防火墙,防火墙,路由的防火墙。
|
5
bigshawn 2022-12-11 18:50:17 +08:00 via iPhone
nas 搭过 rustdesk ,跑了 3 天之后就再也连不上了,看 ddns 解析正常,怀疑运营商做祟。
|
6
IvanLi127 2022-12-11 19:04:35 +08:00 via Android
直接把路由撤了,电脑暂时关掉防火墙,拨号,在你想要的端口上监听,然后看看外网能不能连通。能通就加路由器进来,再试。先圈个范围
|
7
Xusually 2022-12-11 19:08:11 +08:00 via iPhone
op 你看下 docker 的界面 docker 内的服务的端口和暴露到群晖的不是一个,你端口转发的时候需要转发到群晖的对应端口
|
8
digimoon 2022-12-11 21:08:31 +08:00
你可能和几个人共用了一个公网 ip
|
9
sman OP @nitmali 就是最普通的路由器上设置端口转发,华硕的设置界面里做的,比如要设置 5001 TCP ,就是本地 NAS IP+内部端口 5001+外部端口 5001
|
12
Xusually 2022-12-11 21:51:28 +08:00
@sman 在你群晖 Docker 里面,找到你的容器,在容器详情里,下面有个 本地端口 和 容器端口。
容器端口是容器内服务的端口,就是你前面说的哪些服务你打算映射的端口,但是其实在群晖里暴露的对应端口是界面上的本地端口。比如我群晖里的 iperf3 测速容器,默认服务端口是 5201 ,但是在我的 LAN 里面其他设备要测速需要链接群晖的 49155 (本地端口)。 你的服务同理,去这里看看群晖里的对应的本地端口是什么,然后路由器端口转发到此端口即可,比如 Rustdesk 的 21115 端口,是容器端口,对应群晖端口打比方是 22222 ,你路由器就映射 wan 的 21115 到群晖 LAN IP 的 22222 端口就行了。 |
13
nitmali 2022-12-12 09:01:38 +08:00
对于描述:“比如要设置 5001 TCP ,就是本地 NAS IP+内部端口 5001+外部端口 5001”
5001 是 NAS 宿主的端口还是 docker 容器的端口,如果是 docker 的端口 检查是否 docker 和宿主做了映射或使用 host 。 |
14
sman OP @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 端口转发也是好的,但上述那些还是不行。 |