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

62 天前
 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 设置呢?

4210 次点击
所在节点    宽带症候群
91 条回复
felix0012
62 天前
@lovelylain 谢谢,看来我们设想的拓扑一样,都是让旁路由分发 ip 。

桥接是不是需要一个路由模式的主路由,只有旁路由不行了?
现在我的拓扑 0.2 里光猫相当于路由加交换机
ronyin
62 天前
搞个导航页就可以了。。没必要搞这么复杂,导航页可以用 sun panel
felix0012
62 天前
@godall 感谢回复,但是我觉得你没有看明白我的问题,可能我写的太罗嗦了。

你的方案 1 就是我现在的拓扑 0.2 ,这个拓扑是有问题的,光猫广播的 ipv6 dns 强制覆盖。

你提到的我的问题,即我之前的拓扑 0.1 ,反而是正常的。唯一的问题是主路由在弱电箱里面,不好发挥 AP 用途
qxdo1234
62 天前
@felix0012 如果想要外面访问的话,要内网穿透,公网服务器,或者 可以考虑 买个小的流量服务器,宿迁服务器 5 快/月, 可以搞内网穿透,30M 。
ferock
62 天前
局域网我不用 ipv6
iceg
62 天前
再多加一个专门的软路由,光猫桥接,软路由只管网络相关的,你主路由做 ap
rainbowhu
62 天前
@felix0012 哦,那确实。导航页这种就是简单的轻度使用。
lovelylain
62 天前
@felix0012 一个路由器就行,光猫改桥接后光猫相当于一个交换机,ipv4 、ipv6 还有上网都有主路由负责,如果你光猫到路由器只有一根线,可以把光猫连路由器 lan 口,再弄一根短网线连路由器 lan-wan PPPoE 拨号。
dodakt
62 天前
把 PC 的 ipv6 dns 自定义一下 弄一个无法访问的 ip 或者你自建 dns 的 ipv6 本地地址
felix0012
62 天前
@dodakt 谢谢,这样设置是可行的。我有点不理解为什么光猫广播的 ipv6 dns 优先级这么高。

另外安卓手机就没办法了。实在不行我还得在光猫下面套一个路由器,或者按楼上说的改成桥接
felix0012
62 天前
@lovelylain 谢谢哈,我去了解下。可能改桥接是最方便的办法
felix0012
62 天前
@iceg 谢谢

所以关键在于禁用或者屏蔽光猫的路由功能,从而让各个节点无法收到光猫广播的 DNS 。
改桥接是一个方案,加一层拓扑(就像楼顶的 0.1 版拓扑)是另一个方案。
felix0012
62 天前
@ferock
请教大佬,
1 )局域网不用 ipv6 是有什么特殊原因吗?

2 )局域网不用 ipv6 如何实现?比如手机连接了局域网热点,需要强制改成手动配置 IP 从而禁用 ipv6 吗
dodakt
62 天前
@felix0012 #30 @felix0012 #30 如果没有记错 wifi 下 安卓也可以设置 dns 吧
felix0012
62 天前
@dodakt 哈哈好像是的,但没有 Windows 台式机那么方便。手机或者全部自动获取,或者全部手动设置。

另外 Linux 改 dns 才是最方便的,直接编辑/etc/resolv.conf 就行了
Andim
62 天前
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
godall
62 天前
@felix0012 没有问题的,即使路由器通过中继模式获取 ipv6 地址,客户端解析 ipv6 优先,比如访问 baidu.com 可能先解析 ipv6 地址,这是正常的。

但是你的问题是你本地域名,比如 a.mydomain.com; 客户端照样先解析 ipv6 地址,因为你这个是假域名,ipv6 DNS 自然解析不到,这时他会通过 ipv4 DNS 进行解析,这样控制权不就又回到你的路由器了吗? 除非你的域名是外部真实存在的,那也没关系,只要把地址给 dns server 就行。 我家里环境就是这样的,域名是一个真实域名,平时我会把外网 ipv4/v6 地址都更新好,外面可以访问,里面也可以访问。当然为了少绕一圈,我在 openwrt 的 hosts 里面把他固定死本地 ip ,那就直接返回本地地址。
godall
62 天前
其实如果主路由器只是为了 wifi 信号好,我完全建议把路由器设置成 AP ,让光猫来管理 DHCP/DNS ,这样所有设备都在一个网段内,访问顺畅。
只有主路由兼其他管理功能时,采用路由模式。(比如科学上网、kms 、广告过滤等等)
dodakt
62 天前
@felix0012 #35 还有个一劳永逸的方法 买个最便宜的域名 直接解析成私有的本地地址
deorth
62 天前
@felix0012 那加个交换机走 vlan 就行,你主路由支持 vlan 吗

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

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

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

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

© 2021 V2EX