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

2024 年 4 月 10 日
 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 设置呢?

10427 次点击
所在节点    宽带症候群
91 条回复
txydhr
2024 年 4 月 10 日
@txydhr 常见缺失:无法给二级路由下发前缀、无法关闭 wan to lan 方向的防火墙、前缀更改无法通知客户端、无法追加 fd 开头的 ipv6 局域网地址
felix0012
2024 年 4 月 10 日
@guanzhangzhang 哈哈,买个支持 802.11ac 的 AP 可能是最简单的方案了
ahjsrhj
2024 年 4 月 10 日
有没有可能买个便宜域名?
直接公网解析为内网 ip 就行了,我就是这样处理的
然后通过 ss 做内网穿透给手机和公司电脑提供访问家庭服务的能力,域名保持一致。
felix0012
2024 年 4 月 10 日
@godall
试了一下:
启用 IPv6 时

无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . : lan
描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
物理地址. . . . . . . . . . . . . : E0-94-67-xx-xx-xx
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
IPv6 地址 . . . . . . . . . . . . : 240e:3af:e1a:2080:26bf:xxx:xxx:xxx(首选)
IPv6 地址 . . . . . . . . . . . . : 240e:3af:e1a:2080:e294:xxx:xxx:xxx(首选)
获得租约的时间 . . . . . . . . . : 2024 年 4 月 10 日 17:30:00
租约过期的时间 . . . . . . . . . : 2024 年 4 月 11 日 12:14:23
IPv6 地址 . . . . . . . . . . . . : fd5c:1e:6cb0:0:2f7b:xxx:xxx:xxx(首选)
临时 IPv6 地址. . . . . . . . . . : 240e:3af:e1a:2080:f985:xxx:xxx:xxx(首选)
临时 IPv6 地址. . . . . . . . . . : fd5c:1e:6cb0:0:f985:xxx:xxx:xxx(首选)
本地链接 IPv6 地址. . . . . . . . : fe80::d002:xxx:xxx:xxx%4(首选)
IPv4 地址 . . . . . . . . . . . . : 192.168.1.87(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2024 年 4 月 10 日 17:20:12
租约过期的时间 . . . . . . . . . : 2024 年 4 月 11 日 5:29:57
默认网关. . . . . . . . . . . . . : fe80::1%4 <-- 这个是光猫的 IPv6 地址
192.168.1.1 <-- 这个是光猫的 IPv6 地址
DHCP 服务器 . . . . . . . . . . . : 192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
DHCPv6 IAID . . . . . . . . . . . : 65049703
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-2B-3D-xxxxxxx
DNS 服务器 . . . . . . . . . . . : fe80::1%4 <-- 这个是光猫的 IPv6 地址
192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
TCPIP 上的 NetBIOS . . . . . . . : 已启用

C:\Users\Felix>nslookup gitea.onecloud.lan
服务器: UnKnown
Address: fe80::1 <-- 这个是光猫的 IPv6 地址
*** UnKnown 找不到 gitea.onecloud.lan: Non-existent domain

禁用 IPv6 时

无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . : lan
描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
物理地址. . . . . . . . . . . . . : E0-94-67-xx-xx-xx
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
IPv4 地址 . . . . . . . . . . . . : 192.168.1.87(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
获得租约的时间 . . . . . . . . . : 2024 年 4 月 10 日 17:20:12
租约过期的时间 . . . . . . . . . : 2024 年 4 月 11 日 5:20:07
默认网关. . . . . . . . . . . . . : 192.168.1.1 <-- 这个是光猫的 IPv4 地址
DHCP 服务器 . . . . . . . . . . . : 192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
DNS 服务器 . . . . . . . . . . . : 192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
TCPIP 上的 NetBIOS . . . . . . . : 已启用

C:\Users\Felix>nslookup gitea.onecloud.lan
服务器: OpenWrt.lan
Address: 192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址

名称: gitea.onecloud.lan
Address: 192.168.1.4
felix0012
2024 年 4 月 10 日
@dodakt
尝试了,有效,谢谢

首选 DNS 服务器填入 openwrt 路由器的 IPv6 地址:

默认网关. . . . . . . . . . . . . : fe80::1%4 <-- 这个是光猫的 IPv6 地址
192.168.1.1 <-- 这个是光猫的 IPv4 地址
DHCP 服务器 . . . . . . . . . . . : 192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
DHCPv6 IAID . . . . . . . . . . . : 65049703
DNS 服务器 . . . . . . . . . . . : fd5c:1e:6cb0::1 <-- 这个是 openwrt 路由器的 IPv6 地址
192.168.1.254 <-- 这个是 openwrt 路由器的 IPv4 地址
TCPIP 上的 NetBIOS . . . . . . . : 已启用

C:\Users\Felix>nslookup gitea.onecloud.lan
服务器: UnKnown
Address: fd5c:1e:6cb0::1 <-- 这个是 openwrt 路由器的 IPv6 地址

名称: gitea.onecloud.lan
Address: 192.168.1.4
felix0012
2024 年 4 月 10 日
@Andim
按照这个页面的方法试了下,注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\里新建 DisabledComponents 并设置为 0x20:优先 IPv4 而非 IPv6 ,重启后 nslookup ,仍然向光猫的 ipv6 地址请求解析并失败
txydhr
2024 年 4 月 10 日
@felix0012 还是买个网管交换机把
Andim
2024 年 4 月 10 日
@felix0012 有没有试试 ping 以及 curl 你的内网域名,有时就是有很多奇怪的问题,
我这边是优先查询 ipv4 内网的 DNS 服务器



另外可能也与 DNS 跃点有关系
zyq2280539
2024 年 4 月 10 日
@felix0012 哦,这样,我感觉局域网内自建 dns 强制转向就好了,都可以直接跳过光猫、运营商的 dns 直接寻找 ip😆
shinession
2024 年 4 月 10 日
最好买个域名 xxx.com, gitea 就注册成 gitea.xxx.com, nginx 反代设置好, 全部走 80 或 443 端口到主机
Reitzo
2024 年 4 月 11 日
我先回复,回头学习
txydhr
2024 年 4 月 11 日
@zyq2280539 他的问题是光猫分配 ipv6 dns 关不掉
ebushicao
2024 年 4 月 11 日
nip.io 了解一下,你本地只需要把反向代理配置好就行。
ryd994
2024 年 4 月 11 日
@Andim dns 服务器并不是 ipv6 优先于 ipv4 的,而是单纯的顺序问题。你看#64 楼的 dns 服务器配置,光猫的那个排在前面,就有优先级。除非光猫的 ipv6 dns 服务挂了,否则无论配置 ipv4 记录优先,都不会轮到后面的服务器。
你的截图中,ipv4 的 dns 就排前面。

平时说的 ipv6 优先,是指请求 DNS 的时候会优先询问 AAAA 记录,找不到 AAAA 记录的时候才会查询 A 即另外。但是即使是 ipv4 的 DNS 服务器,也是可以返回 AAAA 记录的,反之亦然。

那么回到楼主这个问题,首选当然就是想办法改成手动配置 ipv6 的 DNS 。然后改成旁路由的地址或者留空都可以。
其次可以尝试 NetBIOS 这类的本地服务发现。samba 应该可以提供这个功能
其次,有些路由器用的是 dnsmasq ,同时管理 DHCP 和 DNS ,可以把 DHCP 的客户端名称直接当域名前缀用。后缀设置为.local 。dnsmasq 会自动返回本地主机。

最后,买个域名也没多贵,还可以有很多用途
比如还可以开域名邮箱,彻底杜绝垃圾邮件。谁给我发垃圾邮件就拉黑谁。想稳定的话就别贪免费域名,便宜的 com 域名也很便宜的。访问的时候可以配置额外的 DNS 查询后缀,这样就只需要输入前缀部分,不需要输入顶级域名部分。
j0k3rh
2024 年 4 月 11 日
这是因为光猫的 DHCP 下发的 IPv6 DNS 不是你的主路由,解决办法:

1. 修改光猫的 DHCP 配置,让它下发的 IPv6 DNS 指向你的主路由
2. 修改光猫的 DHCP 配置,直接不下发 IPv6 DNS ,仅下发地址或前缀
3. 要是光猫的 DHCP 不支持以上配置,那要么关闭光猫的 IPv6 功能,要么关闭光猫的 DHCP ,然后主路由开启 DHCP
dreamage
2024 年 4 月 11 日
直接买个公网域名 解析到内外 IP 就行 省去了折腾内网 DNS 的麻烦
Kiriya
2024 年 4 月 11 日
可以用 adguardhome 的 DNS 重写实现这个功能,比如可以实现 a.b.c 访问 192.168.1.1
ddczl
2024 年 4 月 11 日
我也推荐 adguardhome ,因为我家就是这么干的
cr3bit
2024 年 4 月 11 日
@Kiriya @ddczl 楼主是要光猫下发 v6 ,然后光猫的下发的 ra option 直接带 v6 dns ,客户端地址解析发 adguard 之前已经出去公网,甚至根本不会发 adguard 。
FrankAdler
2024 年 4 月 11 日
你的光猫可以设置静态路由吗,试试把光猫下发的 dns 路由指向你的主路由 ip ,主路由再把 dns 转发到其他的不重复的 ip 保证不回环。
我这边使用 CUAdmin 用户登录,可以设置 v4 、v6 的的静态路由。

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

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

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

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

© 2021 V2EX