请教大佬们一个局域网自定义 DNS 的问题

36 天前
 felix0012

== 背景

在家用玩客云刷了 armbian 搭了些服务,比如 Gitea 、Wordpress 、Homeassistant 这些。平时会用台式机、手机访问自己搭的服务。 另外还有个电视盒子,也刷成 armbian 做一些小实验。

用得久了,不想每次输入 ip 、端口号这些来访问 web ,就有了自己搭 DNS 的想法,把自己的服务都映射到自定义域名上,再用 nginx 做反向代理。 自己有一台主路由,无线网络是 802.11AC ,配置不算高但刷了官方 openwrt 。就用 openwrt 的 DNS 服务实现宏域名到 IP 的映射,比如*.onecloud.lan 映射到 192.168.1.2 这样。

== 版本 0.1

主路由挂在光猫下面,其他节点挂在主路由下面。拓扑大概是这样

---------
|  光猫  |
---------
      |
---------
| 主路由 |
---------
  |  |  |
  |  |  --------
  |  ---       |
  |    |       |
节点 1  节点 2  节点 3 ...

主路由通过 LAN 连结各节点,通过 WAN 口连接光猫,开启 DHCP 和 DNS 。 这时候 DNS 按预期工作。一切都很好,唯一的问题是主路由要跟光猫一起放在弱电箱里(因为弱电箱是全家网线汇集点)

== 版本 0.2

为了发挥主路由的 5GHz 无线网功能,把主路由挪到一个房间里。现在主路由跟其他节点一起挂在光猫下面,光猫连结主路由的 LAN 口。拓扑如下

 -----------
|   光猫    |
 -----------
 |  |  |  |
 |  |  |  ------------
 |  |  --------      |
 |  -----     |      |
 |      |     |      |
主路由  节点 1  节点 2  节点 3 ...

关闭光猫的 DHCP ,主路由开启 DHCP 和 DNS ,DHCP 中把网关指定为光猫地址,把 DNS 指定为自己。这时候本应正常工作的。 但实际使用时,台式机访问本地域名上的服务,本地域名无法被主路由 DNS 解析。抓包调试半天发现,台式机存在两个 DNS: 一个是主路由通过 DHCP 配置的主路由 IPv4 地址, 另一个是光猫通过 IPv6 的 RA 分配的光猫 IPv6 地址. 域名解析时默认询问了光猫,光猫自然不知道本地域名所以返回了错误结果。

== 问题

这时候如果禁用台式机的 ipv6 是可以解决本地域名解析的,但代价比较大。 彻底解决需要禁止光猫在 ipv6 上的 DHCP 行为,但光猫配置界面比较简单,没有这项设置。

这种情况下有没有办法设置主路由 openwrt 来强制覆盖光猫的 ipv6 设置呢?

3883 次点击
所在节点    宽带症候群
91 条回复
yyysuo
36 天前
用收藏夹就行啊,搞域名,除非像 Bitwarden 那种需要证书的才值得搞一下。
zyq2280539
36 天前
自己配置个 bind9 也没那么困难啊
cr3bit
36 天前
v4 dns 会返回 v4+v6 。dhcp v6 就下发地址,option 全关
kenneth104
36 天前
关掉 Client 的 V6
felix0012
36 天前
@yyysuo
只能说我比较菜吧

有时候会调整各项服务的端口。Gitea 、Hass 这些有特定端口的还好,80 端口起初我分给了 aria2ng ,后来分给了 Wordpress ,再后来发现 80 还有别的用处。
感觉这样调整来调整去有点麻烦,另外浏览器记录用户名密码也是匹配地址和端口的。就想用更优雅的办法,把每个服务都指配一个本地域名,比如 hass.onecloud.lan 这样。

还有一点,最初固定 IP 功能没搞好,玩客云的 ip 时不时会变动。本地 git 仓库中远端 gitea 地址就要时不时的调整。仓库少了还好,多了每个都要更改就有点烦。所以也想通过域名映射到 ip ,这话后面不管 ip 怎么变,只要把 DNS 配置好就行了
felix0012
36 天前
@zyq2280539
感谢点亮了我的知识盲区。这就去了解一下 bind9
felix0012
36 天前
@kenneth104 台式机可以这么搞,安卓手机怎么设置呢?平时也希望用手机访问 hass 、portainer 这些服务,就只能用 ip 地址加端口号了吗…
bigfei
36 天前
@yyysuo
felix0012
36 天前
@cr3bit 有点没看明白

v4 dns 会返回 v4+v6 。
是不是说 client 通过 ipv4 的 dns 解析域名,会返回域名的 v4 和 v6 地址

dhcp v6 就下发地址
是说让我配置 openwrt 的 dhcp v6 吗?

option 全关
这个没看懂……
felix0012
36 天前
@zyq2280539
查了一下,bind9 好像是个 dns 服务程序?

目前的问题不是没有 dns ,主路由 dns 是正常的。
问题在于光猫强制向局域网内节点广播了 ipv6 的 dns 地址是光猫自己,而且这个 ipv6 dns 优先级更高,导致主路由 dhcp 中指派的主路由地址作为 dns 没有被各个节点用到
deorth
36 天前
改桥接
qxdo1234
36 天前
配置一个 Nginx ,可以做反向代理,这个 Nginx 的电脑再用内网穿透出来,就可以访问所有的东西了,用最多 2 个端口就可以解决。
felix0012
36 天前
@deorth 是说把光猫改桥接吗?现在是光猫在路由模式。
改成桥接后就需要本地有个路由器了,我的主路由(版本 0.2 里实际是作为 WiFi AP 在用,顺便客串一下 dhcp 和 DNS server )就又要回到弱电箱了吧…
felix0012
36 天前
@qxdo1234 这个 nginx 配置在哪呢,是不是还要买个公网云主机…
lovelylain
36 天前
牵扯到 ipv6 建议光猫改桥接,不然基本很难解决,我换 600M 宽带后最开始是想光猫拨号+旁路由分配 ip 地址,但是 ipv6 有些问题搞不定,还是改桥接了。
goodryb
36 天前
感觉 1 楼才是正解,当然你要是想折腾的话另说,自建 dns bind9 、AdGuard Home 、dnsmasq

然后局域网都用你自建的 dns ,自建 dns 除了解析你本地的域名,剩下的都 forward 到运营商或者公共 dns

要是你不想带端口访问,那还是得有个 nginx 代理做转发
godall
36 天前
楼主你的问题是路由器承担了路由功能,然后上级光猫还要带其他机器,造成了网络不互通。解决方案有 2 种:

1 、让光猫做 DHCP/DNS ,主路由降级为 AP 。
配置很简单,就是光猫网口直接连接主路由 LAN 口,让 WAN 口空关,关闭主路由 dhcp/dns 服务即可。相当于一个无线 HUB 。
弊端:openwrt 做 AP 情况下很多插件不能正常使用。

2. 配置不变,主路由端口映射。
假如光猫地址 192.168.1.1 , 主路由 WAN:192.168.1.2 , 下面机器是 192.168.2.x ; 客厅电脑:192.168.1.3
把机器 192.168.2.x 所需要暴露的服务都做端口映射, 这样,客厅电脑需要访问主路由服务时,直接访问 192.168.1.2:端口进行访问。
rainbowhu
36 天前
如果只是简单记录下多个应用的地址的话,可以用 Heimdall 。点进去再点应用,也就两步。
felix0012
36 天前
@goodryb
局域网都用你自建的 dns ,自建 dns 除了解析你本地的域名,剩下的都 forward 到运营商或者公共 dns

现在就是这么做的,在路由上用 openwrt 的 dnsmasq 自建 dns

要是你不想带端口访问,那还是得有个 nginx 代理做转发

现在也是这么做的,在玩客云上配置了 nginx 反向代理

现在的问题是光猫广播的 ipv6 dns 覆盖了主路由 dhcp 分发的 dns
felix0012
36 天前
@rainbowhu git 本地仓库中 remote 地址还是需要批量改呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1031174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX