allenpu666
V2EX  ›  NAS

如何配置路由器以实现局域网内使用域名访问能自动重定向到某个 ip 和端口

By allenpu666 at 2024 年 11 月 21 日 · 6322 次点击

家庭使用 nas 做服务器,基于 lucky 进行反代和 http 转 https ,已经实现了外网访问

其中 sample.com 已经通过 lucky 的 DDNS 实现了公网 IP 地址绑定并自动更新

反代如下:

a.sample.top:12345 -> 192.168.3.60:16801
b.sample.top:12345 -> 192.168.3.60:16802
c.sample.top:12345 -> 192.168.3.60:16803
d.sample.top:12345 -> 192.168.3.128:80
e.sample.top:12345 -> 192.168.3.88:3000
…………

现在在局域网内某电脑/手机上访问 c.sample.top:12345,是可以访问的。

不过速度会受到公网上传的限制,

例如家里宽带是 1000/50Mbps,那么在局域网内访问 c.sample.top:12345 时,速度就是 50Mbps,而达不到内网的千兆/2.5G 速度


请问,如何配置路由器(或者软路由),使得局域网内访问这个域名(子域名)的时候,自动跳转到内网服务,而非经过路由器出去又回来了

54 条回复  •  2024-12-25 11:33:22 +08:00
Vraw5
   1
Vraw5  
   2024 年 11 月 21 日
建立内网 DNS
auro233
   2
auro233  
   2024 年 11 月 21 日
可以尝试把内网服务的端口和外网服务的端口设置为一致再试试,如果局域网内访问 c.sample.top:12345 走的是外网,说明可能在内网你没开这个端口的服务?(简单猜测~)
opengps
   3
opengps  
   2024 年 11 月 21 日
域名是用来代替 ip 的,但不能代替端口
wnpllrzodiac
   4
wnpllrzodiac  
   2024 年 11 月 21 日 via Android
内网 dns 怎么做?普通路由器可以添加域名解析记录吗?
cc999
   5
cc999  
   2024 年 11 月 21 日
如果路由器直接获取的地址是公网 应该没有这个问题
可以尝试在主路由劫持下域名 到反代的内网机器
suuuch
   6
suuuch  
   2024 年 11 月 21 日
只有一台机器的话,手动加 host 指向 IP ,IP 上带 nginx 之类的转发到端口。
多台就是内网 DNS 转发到 IP ,IP 上带 nginx 端口转发。或者 #5 的路由域名劫持。
TossPig
   7
TossPig  
   2024 年 11 月 21 日
嗯?怎么会有这种限制,你公网 IP 就在路由器上的啊,ISP 限制不到你的
07H56wMvTJUc4rcf
   8
07H56wMvTJUc4rcf  
   2024 年 11 月 21 日 via iPhone
我用的路由器自动就可以。不会受宽带上传速度限制
EvineDeng
   9
EvineDeng  
   2024 年 11 月 21 日
建立内网 DNS 服务器,每个内网 IP 使用不同的子域名,AdguardHome 就可以,可以参考我 https://evine.win/p/%E6%88%91%E7%9A%84%E5%AE%B6%E5%BA%AD%E7%BD%91%E7%BB%9C%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF%E5%BC%80%E5%90%AFdebian%E7%9A%84%E6%97%81%E8%B7%AF%E7%94%B1%E4%B9%8B%E8%B7%AF%E4%B8%89/ 的 重写 部分。

要求内外网使用的端口一致。
duanxianze
   10
duanxianze  
   2024 年 11 月 21 日
不应该啊,我在家用域名访问一样直接通过路由器,不走公网,不会被限制,感觉 op 还是哪里没配置对
TossPig
   11
TossPig  
   2024 年 11 月 21 日
忍不住回来再嘴一句,前面几个认真说怎么搞 dns 和 host 的是 AI 吗?
MSIAM
   12
MSIAM  
   2024 年 11 月 21 日
使用端口转发应该就可以了。
Vanquish5419
   13
Vanquish5419  
   2024 年 11 月 21 日
路由器上设置 nat loopback
PiCpo
   14
PiCpo  
   2024 年 11 月 21 日
你居然没有 NAT 回流问题,我们一般家宽有公网 v4 的一般没法在局域网内访问公网的 ip ,但是 v6 可以
kkk9
   15
kkk9  
   2024 年 11 月 21 日
@TossPig #11 是你没懂,内网回流问题
InDom
   16
InDom  
   2024 年 11 月 21 日
内网起一个 nginx 服务, 绑定 12345 到 a.sample.top (说白了构造一个和外网服务器一模一样的配置)

然后路由器 或者 软路由上 强制 *.sample.top 指向你内网的这个服务上,
bobryjosin
   17
bobryjosin  
   2024 年 11 月 21 日
防火墙写一条 DNAT ,目的地址公网地址端口映射回 NAS 就行了,内网端口和公网端口一致,虽然消耗路由的 CPU 跑不满 2.5G ,但是不太可能限速 50 ,另一种方法就是上面的 dns 重写。
TossPig
   18
TossPig  
   2024 年 11 月 21 日
@kkk9 #15 那是另外一个问题,op 已经在内网能访问`*.sample.top:12345`了这是大前提!
`不过速度会受到公网上传的限制` 这是 OP 给的错误资讯,前面几个扫贴就说 dns 或者 host ,我合理怀疑 AI 有问题?
内网流量到路由器,再折回内网,你告诉我带宽怎么被 ISP 的签约带宽限制?
kkk9
   19
kkk9  
   2024 年 11 月 21 日
@TossPig #18 内网能访问`*.sample.top:12345`大前提的关键是 op 用 lucky 做了反代,那么不管内网外网的流量都会经过 lucky 转发,op 可能有用词不当,但是大家都能理解,这时候要考虑你自己的理解能力了。
TossPig
   20
TossPig  
   2024 年 11 月 21 日
@kkk9 #19 哦,我默认 lucky 装出口路由器上了,也许你是对的
ethusdt
   21
ethusdt  
   2024 年 11 月 21 日
我也有这个问题。
在内网下访问家里 nas ,比如 jellyfin, moviepilot, qb, alist 等服务很快,同时做了 cf tunnel 将一些服务暴露出去,这样在外面也能直接用域名访问。

但是如果在家里用域名来访问这些服务就会很慢。

现在的办法就是搞了两套,一套是内网的 ip ,一套是域名访问。
ohhokay
   22
ohhokay  
   2024 年 11 月 21 日
你说的是这个功能吗
ohhokay
   23
ohhokay  
   2024 年 11 月 21 日
badgv
   24
badgv  
   2024 年 11 月 21 日 via Android
1:在内网使用公网域名,不可能收到运营商的带宽限制,因为你数据包都没有走出路由器,除非你域名是 cf proxy 的解析
2:可以用全内网 dns 劫持+全内网 hosts 实现,dns 软件都能实现,把你指定二级域名绑定成指定内网 ip 就行了
esee
   25
esee  
   2024 年 11 月 21 日
先把端口统一,内网 dhcp 的时候设置分配的 dns 为路由器,路由器上添加内网的域名解析
pan404
   26
pan404  
   2024 年 11 月 21 日
不就是 dns 劫持
yinshuai
   27
yinshuai  
   2024 年 11 月 21 日
DNS 劫持+Nginx ,用 Dns 劫持把域名 ip 指向 Nginx 的机器,然后 Nginx 再根据域名转发到相应的 ip 和端口。如果端口就是 80 那就不需要 Nginx 转发了 直接 Dns 劫持到指定的 ip 就行。
phenixc
   28
phenixc  
   2024 年 11 月 21 日
我是用 lucky 反代的。最近也想这样做。目前考的的情况是这样,
1. 如果在外网用域名加端口号访问比较简单,内网 dns 劫持域名指向 lucky 服务地址,lucky 用端口转发向内网地址和端口就行

2. 如果想用子域名访问,感觉需要起两个 lucky,一个代理外网,一个代理内网,代理外网的使用 web,代理内网的使用端口转发+dns 劫持
phenixc
   29
phenixc  
   2024 年 11 月 21 日
@phenixc 又想了一下,好像不用那么麻烦,直接无脑劫持 dns 指向 lucky 的内网地址就可以了,都是用 lucky 反代,无非是一个通过公网 dns 获取 lucky 的公网地址,一个是通过 内网 dns 劫持指向 lucky 的内网地址,有了 lucky 的地址,后面的事情都是 lucky 做了。
urlk
   30
urlk  
   2024 年 11 月 21 日
装个 adguard home, 路由器 dns 填 adguard 的 IP 地址
urlk
   31
urlk  
   2024 年 11 月 21 日
TsukiMori
   32
TsukiMori  
   2024 年 11 月 21 日
我用的 NGINX 反代
a.xxx.com -> 转发到 apache 内网 8080
b.xxx.com -> 直接监听并打开网页
c.xxx.com->根据/location 转发到不同的监听程序
PolarBears
   33
PolarBears  
   2024 年 11 月 21 日
路由器上使用 DNAT 即可解决
shentar
   34
shentar  
   2024 年 11 月 21 日
这一定是应用层协议的事情。网络设备感觉搞不定。能携带域名的协议,常见的只有 http 和 https 了。那就只能是 nginx 反向代理搞定。
laooong
   35
laooong  
   2024 年 11 月 21 日
我用的 openwrt 中的 Dnsmasq 的主机名映射。
y1y1
   36
y1y1  
   2024 年 11 月 21 日
nat loopback
H97794
   37
H97794  
   2024 年 11 月 21 日
外网同一个端口,很麻烦吧

a.sample.top:12345 -> 192.168.3.60:16801
b.sample.top:12345 -> 192.168.3.60:16802
c.sample.top:12345 -> 192.168.3.60:16803
d.sample.top:12345 -> 192.168.3.128:80
e.sample.top:12345 -> 192.168.3.88:3000

内网的话
路由器上

DNS
a.sample.top 10.10.0.1
b.sample.top 10.10.0.2
c.sample.top 10.10.0.3
d.sample.top 10.10.0.4
e.sample.top 10.10.0.4

NAT
10.10.0.1:12345 -> 192.168.3.60:16801
10.10.0.2:12345 -> 192.168.3.60:16802
10.10.0.3:12345 -> 192.168.3.60:16803
10.10.0.4:12345 -> 192.168.3.128:80
10.10.0.5:12345 -> 192.168.3.88:3000

应该可以实现
hackroad
   38
hackroad  
   2024 年 11 月 21 日
这不就是一个回流么
Xheldon
   39
Xheldon  
   2024 年 11 月 21 日
你搜一下 NAT Loopback/Hairpin 就明白了,内网访问 DDNS 的域名会直接访问你的内网 ip ,请求不会出内网绕圈再回来。

我家带宽是 500M/30M 的,路由拨号 TP-Link XDR 5480 是家用的,没地儿设置这个,但是我实测设置了内网 AppleTV infuse 的域名+端口访问内网 Mac 的 jellyfin 服务的话,网速最大能到 600Mbps ,也就是 80MB/s 的下载速度,感觉跟上传带宽没关系。
不过我的路由是千兆口,Mac 是 Studio 的 10G 万兆口,理论上应该能达到 1000/8 = 125MB/s 但是不知道为啥没达到,可能是网线有关,没管了,总之跟办理的带宽估计关系不大。
amanisheir
   40
amanisheir  
   2024 年 11 月 21 日
只有 V6 ,路由器 ssh 进去直接改 hosts ,把域名改成 v4 局域网,就是路由器一动配置就掉,加了个 corn 定时,不在 hosts 文件就加记录,路由器重启只能用 siri 快捷指令启动一下定时脚本
Xheldon
   41
Xheldon  
   2024 年 11 月 21 日
不过我跟楼主不同的是,我的 DDNS 用的是路由器自带的,是同一个域名,只是公网不同的端口映射到内网的不同的服务和端口。而楼主的是二级域名不同,端口一样,跟我的有差异,仅供参考。

我记得之前在 infuse 填内网 ip 访问 Mac 的 jellyfin 服务,测速也是最高 600Mbps ,所以跟域名没关系,正常情况你在内网访问指向内网的公网 ip/域名,这个请求不会出内网就响应了。
Xheldon
   42
Xheldon  
   2024 年 11 月 21 日
另外别开有关 ipv6 的所有东西,有意想不到的问题,我的 mac 路由器 猫(桥接)软路由,凡是跟 ipv6 的相关的全关闭了。
Ipsum
   43
Ipsum  
   2024 年 11 月 21 日
我觉得 op 可以把路由器的 qos 先关闭了再试试效果。
MYDB
   44
MYDB  
   2024 年 11 月 21 日 via iPhone
不应该出现限制速度的问题,如果用的是 openwrt ,可能是打包固件的人用不上 ddns 访问内网,却又有其他需求,所以在某些设置上做了改动。
曾经出现过 ddns 内网不通的问题,发现大部分固件都只对代理有针对优化,而 ddns dns udp nat upnp 等的支持简直一坨!
多换几个固件试试
TimPeake
   45
TimPeake  
   2024 年 11 月 21 日
很久以前在 TG 某个 openwrt 群问过这个问题,被群嘲讽 ,理由是他们都没这个需求,直接内外网 IP 访问就行
FrankAdler
   46
FrankAdler  
   2024 年 11 月 21 日 via Android
我的做法是,在家里路由器上 dnsmasq 设置 dns ,比如外网 a.b.com:5000 ,路由器上 dns 设置为内网某个运行 nginx 的设备,配置好 ssl 证书反代到真正的服务。
这样内网走内网 nginx 反代,外网走你的 lucky
SenLief
   47
SenLief  
   2024 年 11 月 22 日
内网劫持 dns ,把域名解析到本地 ip
myki
   48
myki  
   2024 年 11 月 22 日
Mikrotik 端口回流
awsl2333
   49
awsl2333  
   2024 年 11 月 22 日
dnsmaq
momo2278
   50
momo2278  
   2024 年 11 月 22 日
我是 nas 的 ipv6+ddns+NPM ,理论和你是一样的,体验上是没有限制的,外网没有 v6 环境的话需要挂 tailscale 和改 host
dhuzbb
   51
dhuzbb  
   2024 年 11 月 22 日 via Android
0xD800
   52
0xD800  
   2024 年 11 月 23 日 via Android
最简单在路由器自定义 hosts ,我买的问天 7200pro 有这个配置,估计其他型号也有。用域名即可
0xD800
   53
0xD800  
   2024 年 11 月 23 日 via Android
@wnpllrzodiac 可以 中兴的 我测试过这个功能 非常 OK
archyese
   54
archyese  
   2024 年 12 月 25 日
a.sample.top:12345 -> 192.168.3.60:16801
b.sample.top:12345 -> 192.168.3.60:16802
c.sample.top:12345 -> 192.168.3.60:16803
d.sample.top:12345 -> 192.168.3.128:80
e.sample.top:12345 -> 192.168.3.88:3000
这个是怎么做到的,lucky 可以根据域名转发转发端口吗
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
© 2026 V2EX · 572ms · 3.9.8.5