== 背景
在家用玩客云刷了 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 设置呢?
1
yyysuo 213 天前
用收藏夹就行啊,搞域名,除非像 Bitwarden 那种需要证书的才值得搞一下。
|
2
zyq2280539 213 天前
自己配置个 bind9 也没那么困难啊
|
3
cr3bit 213 天前 via Android
v4 dns 会返回 v4+v6 。dhcp v6 就下发地址,option 全关
|
4
kenneth104 213 天前
关掉 Client 的 V6
|
5
felix0012 OP @yyysuo
只能说我比较菜吧 有时候会调整各项服务的端口。Gitea 、Hass 这些有特定端口的还好,80 端口起初我分给了 aria2ng ,后来分给了 Wordpress ,再后来发现 80 还有别的用处。 感觉这样调整来调整去有点麻烦,另外浏览器记录用户名密码也是匹配地址和端口的。就想用更优雅的办法,把每个服务都指配一个本地域名,比如 hass.onecloud.lan 这样。 还有一点,最初固定 IP 功能没搞好,玩客云的 ip 时不时会变动。本地 git 仓库中远端 gitea 地址就要时不时的调整。仓库少了还好,多了每个都要更改就有点烦。所以也想通过域名映射到 ip ,这话后面不管 ip 怎么变,只要把 DNS 配置好就行了 |
6
felix0012 OP @zyq2280539
感谢点亮了我的知识盲区。这就去了解一下 bind9 |
7
felix0012 OP @kenneth104 台式机可以这么搞,安卓手机怎么设置呢?平时也希望用手机访问 hass 、portainer 这些服务,就只能用 ip 地址加端口号了吗…
|
9
felix0012 OP @cr3bit 有点没看明白
v4 dns 会返回 v4+v6 。 是不是说 client 通过 ipv4 的 dns 解析域名,会返回域名的 v4 和 v6 地址 dhcp v6 就下发地址 是说让我配置 openwrt 的 dhcp v6 吗? option 全关 这个没看懂…… |
10
felix0012 OP @zyq2280539
查了一下,bind9 好像是个 dns 服务程序? 目前的问题不是没有 dns ,主路由 dns 是正常的。 问题在于光猫强制向局域网内节点广播了 ipv6 的 dns 地址是光猫自己,而且这个 ipv6 dns 优先级更高,导致主路由 dhcp 中指派的主路由地址作为 dns 没有被各个节点用到 |
11
deorth 213 天前 via Android
改桥接
|
12
qxdo1234 213 天前 via Android
配置一个 Nginx ,可以做反向代理,这个 Nginx 的电脑再用内网穿透出来,就可以访问所有的东西了,用最多 2 个端口就可以解决。
|
13
felix0012 OP @deorth 是说把光猫改桥接吗?现在是光猫在路由模式。
改成桥接后就需要本地有个路由器了,我的主路由(版本 0.2 里实际是作为 WiFi AP 在用,顺便客串一下 dhcp 和 DNS server )就又要回到弱电箱了吧… |
15
lovelylain 213 天前
牵扯到 ipv6 建议光猫改桥接,不然基本很难解决,我换 600M 宽带后最开始是想光猫拨号+旁路由分配 ip 地址,但是 ipv6 有些问题搞不定,还是改桥接了。
|
16
goodryb 213 天前
感觉 1 楼才是正解,当然你要是想折腾的话另说,自建 dns bind9 、AdGuard Home 、dnsmasq
然后局域网都用你自建的 dns ,自建 dns 除了解析你本地的域名,剩下的都 forward 到运营商或者公共 dns 要是你不想带端口访问,那还是得有个 nginx 代理做转发 |
17
godall 213 天前
楼主你的问题是路由器承担了路由功能,然后上级光猫还要带其他机器,造成了网络不互通。解决方案有 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:端口进行访问。 |
18
rainbowhu 213 天前
如果只是简单记录下多个应用的地址的话,可以用 Heimdall 。点进去再点应用,也就两步。
|
19
felix0012 OP @goodryb
局域网都用你自建的 dns ,自建 dns 除了解析你本地的域名,剩下的都 forward 到运营商或者公共 dns 现在就是这么做的,在路由上用 openwrt 的 dnsmasq 自建 dns 要是你不想带端口访问,那还是得有个 nginx 代理做转发 现在也是这么做的,在玩客云上配置了 nginx 反向代理 现在的问题是光猫广播的 ipv6 dns 覆盖了主路由 dhcp 分发的 dns |
21
felix0012 OP |
22
ronyin 213 天前
搞个导航页就可以了。。没必要搞这么复杂,导航页可以用 sun panel
|
23
felix0012 OP @godall 感谢回复,但是我觉得你没有看明白我的问题,可能我写的太罗嗦了。
你的方案 1 就是我现在的拓扑 0.2 ,这个拓扑是有问题的,光猫广播的 ipv6 dns 强制覆盖。 你提到的我的问题,即我之前的拓扑 0.1 ,反而是正常的。唯一的问题是主路由在弱电箱里面,不好发挥 AP 用途 |
25
ferock 213 天前 via iPhone
局域网我不用 ipv6
|
26
iceg 213 天前
再多加一个专门的软路由,光猫桥接,软路由只管网络相关的,你主路由做 ap
|
28
lovelylain 212 天前
@felix0012 一个路由器就行,光猫改桥接后光猫相当于一个交换机,ipv4 、ipv6 还有上网都有主路由负责,如果你光猫到路由器只有一根线,可以把光猫连路由器 lan 口,再弄一根短网线连路由器 lan-wan PPPoE 拨号。
|
29
dodakt 212 天前
|
30
felix0012 OP |
31
felix0012 OP @lovelylain 谢谢哈,我去了解下。可能改桥接是最方便的办法
|
32
felix0012 OP |
33
felix0012 OP |
35
felix0012 OP @dodakt 哈哈好像是的,但没有 Windows 台式机那么方便。手机或者全部自动获取,或者全部手动设置。
另外 Linux 改 dns 才是最方便的,直接编辑/etc/resolv.conf 就行了 |
36
Andim 212 天前 via iPhone
Windows 试试这个方法
IT 管理员经常禁用 IPv6 来排查与网络相关的问题,例如名称解析问题。 Internet 协议版本 6 (IPv6) 是 Windows Vista 和 Windows Server 2008 及更高版本的必要组成部分。 我们建议不要禁用 IPv6 或其组件。 如果禁用,某些 Windows 组件可能无法正常工作。 我们建议你在前缀策略中使用“优先 IPv4 而非 IPv6”,而不是禁用 IPV6 。 https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/networking/configure-ipv6-in-windows |
37
godall 212 天前
@felix0012 没有问题的,即使路由器通过中继模式获取 ipv6 地址,客户端解析 ipv6 优先,比如访问 baidu.com 可能先解析 ipv6 地址,这是正常的。
但是你的问题是你本地域名,比如 a.mydomain.com; 客户端照样先解析 ipv6 地址,因为你这个是假域名,ipv6 DNS 自然解析不到,这时他会通过 ipv4 DNS 进行解析,这样控制权不就又回到你的路由器了吗? 除非你的域名是外部真实存在的,那也没关系,只要把地址给 dns server 就行。 我家里环境就是这样的,域名是一个真实域名,平时我会把外网 ipv4/v6 地址都更新好,外面可以访问,里面也可以访问。当然为了少绕一圈,我在 openwrt 的 hosts 里面把他固定死本地 ip ,那就直接返回本地地址。 |
38
godall 212 天前
其实如果主路由器只是为了 wifi 信号好,我完全建议把路由器设置成 AP ,让光猫来管理 DHCP/DNS ,这样所有设备都在一个网段内,访问顺畅。
只有主路由兼其他管理功能时,采用路由模式。(比如科学上网、kms 、广告过滤等等) |
41
felix0012 OP @godall
再次感谢关注我这个小众问题 “但是你的问题是你本地域名,比如 a.mydomain.com; 客户端照样先解析 ipv6 地址,因为你这个是假域名,ipv6 DNS 自然解析不到,这时他会通过 ipv4 DNS 进行解析,这样控制权不就又回到你的路由器了吗?” 起初我也是这么想的,所以排故时主要检查主路由 dhcp 有没有正确声明 dns 地址。可检查结果是问题不在这里。 然后开始抓包,检查节点(台式机)的域名解析过程,比如我的本地域名是 gitea.onecloud.lan ,我在浏览器访问这个地址或者用命令行 ping 这个地址。 然后发现系统只发出了一个 ipv6 的 DNS 请求到光猫,光猫返回地址不存在,然后就没有然后了!操作系统没有继续请求 ipv4 dns ! 大概就是 36 楼 @Andim 贴的优先级问题。 |
45
felix0012 OP @deorth 主路由刷了 openwrt ,版本大概是 23.05 吧,理论上是有 vlan 的。但是你看看楼顶的拓扑版本 0.2 ,各节点挂在了光猫的交换机上,这时候设置 vlan 有效吗…
|
47
felix0012 OP @txydhr
问题是光猫里面没有这个设置选项,能让我关闭 ipv6dns 。 我已经把光猫的 dhcp 关掉了。但是 ipv6 的机制有点复杂,除了 dhcp 来分发一些配置之外,还有个机制叫做 ICMPv6 RA ( Router Advertisement ),抓包也发现各节点上指向光猫的 ipv6 dns 地址就是这么来的 |
50
felix0012 OP @deorth 哈?好像确实是不到 100 ,我 out 了。
我的理解是这个交换机跟光猫一起放在弱电箱,光猫和其他网线都接交换机。 那么下一步,交换机划分出来的 wan 和 lan 之间需要物理连接吗? 或者说交换机到主路由是不是需要两条网线,分别连接路由的 wan 和 lan 呢 |
51
guanzhangzhang 212 天前
3 楼是正解,op 自带的网络-接口-接口下面的高级设置的 dhcp 选项 就是 dnsmasq 的 dhcp option 配置 找下,可以不下发 ipv6 dns ,例如添加两行
``` 3,192.168.1.3 # 配置 dhcp 的网关 6,192.168.1.3 # 配置 dhcp 获取到的 dns ,如果稳定则旁路由自己的 IP ``` 更多 option 查看文档 https://blog.abysm.org/2020/06/human-readable-dhcp-options-for-dnsmasq/ 包含 ipv6 的 |
52
dsgdsfh 212 天前
还有个简单方法,直接买海外注册商的一个便宜域名做好解析就行,完全不折腾
|
53
felix0012 OP @guanzhangzhang 如果节点获得了主路由的 ipv6 dns 是没问题的
问题在于光猫也广播了 ipv6 dns 是光猫自己。 这样节点解析域名的时候都去问光猫了,没人问主路由。 所以如果要解决问题不是禁用主路由的 ipv6 dns ,而是让他获得更高的优先级,高过光猫广播的 dns |
55
guanzhangzhang 212 天前
@felix0012 #53 你猫到路由的 lan 是过了你的主路由,你主路由的 iptables 价格规则就行了,wan_zone_input 啥的
|
56
felix0012 OP @guanzhangzhang
现在就是没有经过主路由才出问题的,参考楼顶的拓扑版本 0.2 。之前的拓扑 0.1 工作的好好的。 在拓扑 0.2 中,主路由(其实算是旁路由了)的 dhcp 中设定网关是光猫、dns 是自己。关闭了光猫的 dhcp 。但光猫仍然在广播 dns |
57
guanzhangzhang 212 天前
@felix0012 #56 哦哦,没仔细看,用 1 的拓扑呗,猫改不改桥接都行,买个 ap 啥的吧🤔
|
58
gdfsjunjun 212 天前
自定义 Hosts ?
小米路由器可以设置 Hosts ,直接把域名和本地 IP 绑定就好了。 |
59
godall 212 天前
@felix0012 我的网络就是类似你 0.2 样式的,完全没有问题。你用 nslookup gitea.onecloud.lan 试试看 dns 服务器是啥,返回是啥
|
60
txydhr 212 天前
@felix0012 ipv6 本身不复杂,只是大部分产品提供的 ipv6 配置,不全不是,少这个就是少那个。另外旁路由压根就不是正确的网络架构,相当于旁门左道,所以和 v6 完全不兼容,所以还是得改桥接。
|
62
felix0012 OP @guanzhangzhang 哈哈,买个支持 802.11ac 的 AP 可能是最简单的方案了
|
63
ahjsrhj 212 天前
有没有可能买个便宜域名?
直接公网解析为内网 ip 就行了,我就是这样处理的 然后通过 ss 做内网穿透给手机和公司电脑提供访问家庭服务的能力,域名保持一致。 |
64
felix0012 OP @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 |
65
felix0012 OP @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 |
66
felix0012 OP @Andim
按照这个页面的方法试了下,注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\里新建 DisabledComponents 并设置为 0x20:优先 IPv4 而非 IPv6 ,重启后 nslookup ,仍然向光猫的 ipv6 地址请求解析并失败 |
68
Andim 212 天前
|
69
zyq2280539 212 天前
@felix0012 哦,这样,我感觉局域网内自建 dns 强制转向就好了,都可以直接跳过光猫、运营商的 dns 直接寻找 ip😆
|
70
shinession 212 天前
最好买个域名 xxx.com, gitea 就注册成 gitea.xxx.com, nginx 反代设置好, 全部走 80 或 443 端口到主机
|
71
yeohreet 212 天前
我先回复,回头学习
|
72
txydhr 212 天前
@zyq2280539 他的问题是光猫分配 ipv6 dns 关不掉
|
74
ryd994 212 天前 via Android
@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 查询后缀,这样就只需要输入前缀部分,不需要输入顶级域名部分。 |
75
j0k3rh 212 天前
这是因为光猫的 DHCP 下发的 IPv6 DNS 不是你的主路由,解决办法:
1. 修改光猫的 DHCP 配置,让它下发的 IPv6 DNS 指向你的主路由 2. 修改光猫的 DHCP 配置,直接不下发 IPv6 DNS ,仅下发地址或前缀 3. 要是光猫的 DHCP 不支持以上配置,那要么关闭光猫的 IPv6 功能,要么关闭光猫的 DHCP ,然后主路由开启 DHCP |
76
dreamage 212 天前
直接买个公网域名 解析到内外 IP 就行 省去了折腾内网 DNS 的麻烦
|
77
Kiriya 212 天前
可以用 adguardhome 的 DNS 重写实现这个功能,比如可以实现 a.b.c 访问 192.168.1.1
|
78
ddczl 212 天前
我也推荐 adguardhome ,因为我家就是这么干的
|
79
cr3bit 211 天前 via iPhone
|
80
FrankAdler 211 天前
你的光猫可以设置静态路由吗,试试把光猫下发的 dns 路由指向你的主路由 ip ,主路由再把 dns 转发到其他的不重复的 ip 保证不回环。
我这边使用 CUAdmin 用户登录,可以设置 v4 、v6 的的静态路由。 |
81
ferock 211 天前 via iPhone
|
82
luoshengdu 211 天前
一群人在这绕弯解决问题。
题主你的问题:现在这种网络结构,dns 会优先想 ipv6 的光猫请求解析 解决方法:你让你电脑的 ipv6 获取指定的 ipv6 dns 服务器 IP (你自己的 dns server ) 解决思路:ipv6 的 ip 地址也有是有私有地址段的,fc00::段,你可以理解它是 ipv4 下面的( 192.168. 172.16 )。所以给你的 openwrt 配置一个私有地址段的 ipv6 地址,然后让电脑找该 ipv6 解析,就完美解决了。 优点:你的网络架构不用任何改动,该私有 ipv6 配置好之后,家里的所有支持 ipv6 的邻居,都是自动配置好,所以都是可通达的。只需要在 ipv6 的 dhcp 里面“通告的 DNS 服务器”即可 缺点:没有缺点,ipv6 普及的时代,劝别人关闭 ipv6 的人才是缺点。你们都不打算拥抱新技术吗? 思路来自于: https://fast.v2ex.com/t/793278 十楼是思路,十六楼是最佳实践 ------------------效果----------------------- ifconfig | grep inet6 inet6 addr: fd3c::1/56 Scope:Global cat /etc/config/dhcp | grep dns config dnsmasq option ednspacket_max '1232' list dns 'fd3c::cfb' option dns '1' option dns '1' option dns '1' option dns '1' option dns '1' option dns '1' option dns '1' option dns '1' option dns '1' option name 'EasyMosdns' option dns '1' |
83
felix0012 OP |
84
felix0012 OP @luoshengdu
我看了一下 Wireshark 抓包记录,发现以下特点: 1) 网络中光猫分发的是 FE80::地址,自己是 FE80::1 ,这个地址好像叫做本地链接地址( Link-local ) 2) openwrt 路由器分发的是 fd5c:001e:6cb0::/48 ,一个 ULA 地址。自己有两个地址,一个是自己的 fd5c:1e:6cb0::1 ,一个是从光猫获得的 fe80::2276:93ff:fe00:a03c 3) 节点( Windows 系统)执行 ipconfig /renew6 后,向网络发送了 DHCPv6 Solicit XID 请求,请求是通过 FE80::前缀的地址发出的 4) 光猫和 openwrt 路由器分别使用 FE80::地址的 DHCPv6 Advertise XID 回复了节点。回复中光猫和 Openwrt 各自声明 DNS 服务器是自己,分别是 FE80::1 和 fd5c:1e:6cb0::1 。这说明 Openwrt 路由器的 DHCPv6 是工作了的。 5 )节点只向光猫发送了 DHCPv6 Request XID ,并得到光猫的 DHCPv6 Reply XID 6) 节点 ipconfig /renew6 命令完成后,DNS 列表里只有光猫,没有 Openwrt 路由器 |
85
felix0012 OP @luoshengdu
我怀疑节点获得的多个 IPv6 地址中,FE80::的优先级比 FDxx::的优先级高,或者说 Link-local 地址的优先级比 ULA 的优先级高… |
86
luoshengdu 210 天前
@felix0012 IP 地址不存在优先级,去找 fe80::1 是因为你没有告诉电脑找 fd5c 的 IP 。
自定义 IP 地址方便你控制自己的网络逻辑结构,并且配置好他们不会再变化 虽说 fe80 的 link-local (相当于 ipv4 没有 dns 服务器自动配置的 169.254 的地址)地址也不能变化,但是你也无法配置它 在 dhcp 服务器上配置 v6 dns 的信息下发 |
87
felix0012 OP @luoshengdu
>> 去找 fe80::1 是因为你没有告诉电脑找 fd5c 的 IP 这里没看懂,告诉电脑用哪个 IPv6 地址,这就是 DHCPv6 的工作呀 现在电脑发送了 Solicit 请求,路由和光猫都回复了 Advertise 。只是电脑挑选了光猫来进行接下来的协议。 >> 在 dhcp 服务器上配置 v6 dns 的信息下发 这一点也实现了,因为路由给出了 DHCPv6 Advertise ,其中包含了 DNS 。 >> IP 地址不存在优先级 刚才我找了下资料,确实是这样。 但是优先级现象是存在的。 问题出在 DHCPv6 协议的环节,当网络上存在多个 Advertise 时,电脑会做出倾向性选择 参考 https://blog.csdn.net/Kuaisen/article/details/118675607 我又仔细看了抓包记录里面的两个 Advertise ,光猫的带有 preference option 字段,openwrt 给出的没有这个 option 。我猜测电脑收到这两个 Advertise 后倾向于回复光猫就是因为他的带有 preference 。 然后我又找 openwrt 的 odhp 怎么能加入这个 preference option ,没找到有资料。 接下来我感觉解决方案有两类,一个是拿到光猫的超级用户密码,想办法禁止光猫的 DHCPv6 。再就是用带有 VLAN 的交换机或者增加一个路由器,向子网屏蔽光猫的 DHCPv6 |
88
felix0012 OP Openwrt 路由器的 Advertise
DHCPv6 Message type: Advertise (2) Transaction ID: 0x19f696 Server Identifier Option: Server Identifier (2) Length: 10 DUID: xxx DUID Type: link-layer address (3) Hardware type: Ethernet (1) Link-layer address: xxx Link-layer address (Ethernet): xxx Client Identifier Option: Client Identifier (1) Length: 14 DUID: xxx DUID Type: link-layer address plus time (1) Hardware type: Ethernet (1) DUID Time: Dec 28, 2022 00:08:43.000000000 中国标准时间 Link-layer address: xxx Link-layer address (Ethernet): xxx SOL_MAX_RT Option: SOL_MAX_RT (82) Length: 4 DNS recursive name server Option: DNS recursive name server (23) Length: 16 1 DNS server address: fd5c:1e:6cb0::1 Identity Association for Non-temporary Address Option: Identity Association for Non-temporary Address (3) Length: 40 IAID: 03e09467 T1: 21600 T2: 34560 IA Address Option: IA Address (5) Length: 24 IPv6 address: fd5c:1e:6cb0::7e8 Preferred lifetime: 43200 Valid lifetime: 43200 ------------ 光猫的 Advertise DHCPv6 Message type: Advertise (2) Transaction ID: 0x19f696 Client Identifier Option: Client Identifier (1) Length: 14 DUID: xxx DUID Type: link-layer address plus time (1) Hardware type: Ethernet (1) DUID Time: Dec 28, 2022 00:08:43.000000000 中国标准时间 Link-layer address: xxx Link-layer address (Ethernet): xxx Server Identifier Option: Server Identifier (2) Length: 10 DUID: 0003000628011c3da73f DUID Type: link-layer address (3) Hardware type: IEEE 802 (6) Link-layer address: xxx Link-layer address (Ethernet): xxx Identity Association for Non-temporary Address Option: Identity Association for Non-temporary Address (3) Length: 40 IAID: 03e09467 T1: 26117 T2: 41787 IA Address Option: IA Address (5) Length: 24 IPv6 address: 240e:3af:e1a:2080:e294:67ff:fe0f:af4b Preferred lifetime: 52234 Valid lifetime: 52234 Preference Option: Preference (7) Length: 1 Pref-value: 7 DNS recursive name server Option: DNS recursive name server (23) Length: 16 1 DNS server address: fe80::1 Vendor-specific Information Option: Vendor-specific Information (17) Length: 25 Enterprise ID: Reserved (0) |
89
felix0012 OP 一贴文字,缩进格式全没了……
Openwrt 路由器的 Advertise DHCPv6 ____Message_type:_Advertise_(2) ____Transaction_ID:_0x19f696 ____Server_Identifier ________Option:_Server_Identifier_(2) ________Length:_10 ________DUID:_0003000120769300a03c ________DUID_Type:_link-layer_address_(3) ________Hardware_type:_Ethernet_(1) ________Link-layer_address:_xxx ________Link-layer_address_(Ethernet):_xxx ____Client_Identifier ________Option:_Client_Identifier_(1) ________Length:_14 ________DUID:_000100012b3dd50b507b9d730987 ________DUID_Type:_link-layer_address_plus_time_(1) ________Hardware_type:_Ethernet_(1) ________DUID_Time:_Dec_28,_2022_00:08:43.000000000_中国标准时间 ________Link-layer_address:_xxx ________Link-layer_address_(Ethernet):_xxx ____SOL_MAX_RT ________Option:_SOL_MAX_RT_(82) ________Length:_4 ____DNS_recursive_name_server ________Option:_DNS_recursive_name_server_(23) ________Length:_16 _________1_DNS_server_address:_fd5c:1e:6cb0::1 ____Identity_Association_for_Non-temporary_Address ________Option:_Identity_Association_for_Non-temporary_Address_(3) ________Length:_40 ________IAID:_03e09467 ________T1:_21600 ________T2:_34560 ________IA_Address ____________Option:_IA_Address_(5) ____________Length:_24 ____________IPv6_address:_fd5c:1e:6cb0::7e8 ____________Preferred_lifetime:_43200 ____________Valid_lifetime:_43200 光猫的 Advertise DHCPv6 ____Message_type:_Advertise_(2) ____Transaction_ID:_0x19f696 ____Client_Identifier ________Option:_Client_Identifier_(1) ________Length:_14 ________DUID:_000100012b3dd50b507b9d730987 ________DUID_Type:_link-layer_address_plus_time_(1) ________Hardware_type:_Ethernet_(1) ________DUID_Time:_Dec_28,_2022_00:08:43.000000000_中国标准时间 ________Link-layer_address:_xxx ________Link-layer_address_(Ethernet):_xxx ____Server_Identifier ________Option:_Server_Identifier_(2) ________Length:_10 ________DUID:_0003000628011c3da73f ________DUID_Type:_link-layer_address_(3) ________Hardware_type:_IEEE_802_(6) ________Link-layer_address:_xxx ________Link-layer_address_(Ethernet):_xxx ____Identity_Association_for_Non-temporary_Address ________Option:_Identity_Association_for_Non-temporary_Address_(3) ________Length:_40 ________IAID:_03e09467 ________T1:_26117 ________T2:_41787 ________IA_Address ____________Option:_IA_Address_(5) ____________Length:_24 ____________IPv6_address:_240e:3af:e1a:2080:e294:67ff:fe0f:af4b ____________Preferred_lifetime:_52234 ____________Valid_lifetime:_52234 ____Preference ________Option:_Preference_(7) ________Length:_1 ________Pref-value:_7 ____DNS_recursive_name_server ________Option:_DNS_recursive_name_server_(23) ________Length:_16 _________1_DNS_server_address:_fe80::1 ____Vendor-specific_Information ________Option:_Vendor-specific_Information_(17) ________Length:_25 ________Enterprise_ID:_Reserved_(0) |
90
luoshengdu 210 天前
@felix0012 #87
关于 1 ,就是手工指定电脑的 v6 地址 dns server 服务器(不方便); 现在你这个网络的架构难点在于需要通过光猫自动中继分发 ipv6 地址 ,因为 v6 链路能上网是默认路由,所以它 dhcpv6 优先级高?。 [所以,能操作光猫,在里面配置 LAN 的 dns 服务器地址最方便] 若屏蔽光猫的 dhcpv6 ,可得结果是,电脑只是拿不到 dhcpv6 的地址;但是 v6 slaac 的协议是通过 icmp 分配起来的,电脑依然可以拿到 v6 地址且同时拿到光猫给的 v6 dns 服务器 |