V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
felix0012
V2EX  ›  宽带症候群

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

  •  
  •   felix0012 · 261 天前 · 6650 次点击
    这是一个创建于 261 天前的主题,其中的信息可能已经有所发展或是发生改变。

    == 背景

    在家用玩客云刷了 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 条附言  ·  245 天前
    后续:

    买了一个二手的 K2P ,刷了 openwrt ,配置好静态 dhcp lease 和 DNS 泛域名,放在光猫下面做二级路由,其他节点都挂在这个 K2P 下面。即恢复到类似第一版拓扑。

    K2P 刷机后 WiFi 只有 5G ,不过无所谓了主要是利用他的 dhcp+dns 功能。测试网速反而比节点直接挂在光猫下面还快了,不知道为啥,可能光猫的路由功能并不强?
    91 条回复    2024-04-15 10:30:29 +08:00
    yyysuo
        1
    yyysuo  
       261 天前
    用收藏夹就行啊,搞域名,除非像 Bitwarden 那种需要证书的才值得搞一下。
    zyq2280539
        2
    zyq2280539  
       261 天前
    自己配置个 bind9 也没那么困难啊
    cr3bit
        3
    cr3bit  
       261 天前 via Android
    v4 dns 会返回 v4+v6 。dhcp v6 就下发地址,option 全关
    kenneth104
        4
    kenneth104  
       261 天前
    关掉 Client 的 V6
    felix0012
        5
    felix0012  
    OP
       261 天前
    @yyysuo
    只能说我比较菜吧

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

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

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

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

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

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

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

    要是你不想带端口访问,那还是得有个 nginx 代理做转发
    godall
        17
    godall  
       261 天前
    楼主你的问题是路由器承担了路由功能,然后上级光猫还要带其他机器,造成了网络不互通。解决方案有 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
        18
    rainbowhu  
       261 天前
    如果只是简单记录下多个应用的地址的话,可以用 Heimdall 。点进去再点应用,也就两步。
    felix0012
        19
    felix0012  
    OP
       261 天前 via Android
    @goodryb
    局域网都用你自建的 dns ,自建 dns 除了解析你本地的域名,剩下的都 forward 到运营商或者公共 dns

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

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

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

    现在的问题是光猫广播的 ipv6 dns 覆盖了主路由 dhcp 分发的 dns
    felix0012
        20
    felix0012  
    OP
       261 天前 via Android
    @rainbowhu git 本地仓库中 remote 地址还是需要批量改呀
    felix0012
        21
    felix0012  
    OP
       261 天前 via Android
    @lovelylain 谢谢,看来我们设想的拓扑一样,都是让旁路由分发 ip 。

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

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

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

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

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

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

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

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

    “但是你的问题是你本地域名,比如 a.mydomain.com; 客户端照样先解析 ipv6 地址,因为你这个是假域名,ipv6 DNS 自然解析不到,这时他会通过 ipv4 DNS 进行解析,这样控制权不就又回到你的路由器了吗?”

    起初我也是这么想的,所以排故时主要检查主路由 dhcp 有没有正确声明 dns 地址。可检查结果是问题不在这里。

    然后开始抓包,检查节点(台式机)的域名解析过程,比如我的本地域名是 gitea.onecloud.lan ,我在浏览器访问这个地址或者用命令行 ping 这个地址。

    然后发现系统只发出了一个 ipv6 的 DNS 请求到光猫,光猫返回地址不存在,然后就没有然后了!操作系统没有继续请求 ipv4 dns !
    大概就是 36 楼 @Andim 贴的优先级问题。
    felix0012
        42
    felix0012  
    OP
       261 天前 via Android
    @Andim 谢谢点亮我的知识盲区,我也觉得是个优先级问题,但不知道系统具体逻辑细节和设置方式。晚上我回家试试看
    txydhr
        43
    txydhr  
       261 天前 via iPhone
    @felix0012
    v4 、v6 都要下发内网 dns ,或者在网关劫持 dns 流量
    txydhr
        44
    txydhr  
       261 天前 via iPhone
    @felix0012 或者不分配 ipv6 的 dns
    felix0012
        45
    felix0012  
    OP
       261 天前 via Android
    @deorth 主路由刷了 openwrt ,版本大概是 23.05 吧,理论上是有 vlan 的。但是你看看楼顶的拓扑版本 0.2 ,各节点挂在了光猫的交换机上,这时候设置 vlan 有效吗…
    deorth
        46
    deorth  
       261 天前 via Android
    @felix0012 没有。再买一台带 vlan 的交换机,所有网线都接交换机上。然后划两个 vlan ,一个 wan 一个 lan
    felix0012
        47
    felix0012  
    OP
       261 天前 via Android
    @txydhr
    问题是光猫里面没有这个设置选项,能让我关闭 ipv6dns 。
    我已经把光猫的 dhcp 关掉了。但是 ipv6 的机制有点复杂,除了 dhcp 来分发一些配置之外,还有个机制叫做 ICMPv6 RA ( Router Advertisement ),抓包也发现各节点上指向光猫的 ipv6 dns 地址就是这么来的
    felix0012
        48
    felix0012  
    OP
       261 天前 via Android
    @deorth 这投入,还不如我退回楼顶描述的 0.1 版拓扑了,大不了 WiFi 信号差一点… (笑哭)
    deorth
        49
    deorth  
       261 天前 via Android
    @felix0012 千兆八口带 vlan 的交换机现在不到 100 块了
    felix0012
        50
    felix0012  
    OP
       261 天前 via Android
    @deorth 哈?好像确实是不到 100 ,我 out 了。

    我的理解是这个交换机跟光猫一起放在弱电箱,光猫和其他网线都接交换机。

    那么下一步,交换机划分出来的 wan 和 lan 之间需要物理连接吗?
    或者说交换机到主路由是不是需要两条网线,分别连接路由的 wan 和 lan 呢
    guanzhangzhang
        51
    guanzhangzhang  
       261 天前
    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 的
    18xlX5iTe9mdoau0
        52
    18xlX5iTe9mdoau0  
       261 天前
    还有个简单方法,直接买海外注册商的一个便宜域名做好解析就行,完全不折腾
    felix0012
        53
    felix0012  
    OP
       261 天前 via Android
    @guanzhangzhang 如果节点获得了主路由的 ipv6 dns 是没问题的
    问题在于光猫也广播了 ipv6 dns 是光猫自己。

    这样节点解析域名的时候都去问光猫了,没人问主路由。

    所以如果要解决问题不是禁用主路由的 ipv6 dns ,而是让他获得更高的优先级,高过光猫广播的 dns
    deorth
        54
    deorth  
       261 天前 via Android
    @felix0012 vlan 的意义就是不需要再拉网线
    guanzhangzhang
        55
    guanzhangzhang  
       261 天前
    @felix0012 #53 你猫到路由的 lan 是过了你的主路由,你主路由的 iptables 价格规则就行了,wan_zone_input 啥的
    felix0012
        56
    felix0012  
    OP
       261 天前 via Android
    @guanzhangzhang
    现在就是没有经过主路由才出问题的,参考楼顶的拓扑版本 0.2 。之前的拓扑 0.1 工作的好好的。

    在拓扑 0.2 中,主路由(其实算是旁路由了)的 dhcp 中设定网关是光猫、dns 是自己。关闭了光猫的 dhcp 。但光猫仍然在广播 dns
    guanzhangzhang
        57
    guanzhangzhang  
       261 天前
    @felix0012 #56 哦哦,没仔细看,用 1 的拓扑呗,猫改不改桥接都行,买个 ap 啥的吧🤔
    gdfsjunjun
        58
    gdfsjunjun  
       261 天前
    自定义 Hosts ?
    小米路由器可以设置 Hosts ,直接把域名和本地 IP 绑定就好了。
    godall
        59
    godall  
       261 天前
    @felix0012 我的网络就是类似你 0.2 样式的,完全没有问题。你用 nslookup gitea.onecloud.lan 试试看 dns 服务器是啥,返回是啥
    txydhr
        60
    txydhr  
       261 天前
    @felix0012 ipv6 本身不复杂,只是大部分产品提供的 ipv6 配置,不全不是,少这个就是少那个。另外旁路由压根就不是正确的网络架构,相当于旁门左道,所以和 v6 完全不兼容,所以还是得改桥接。
    txydhr
        61
    txydhr  
       261 天前
    @txydhr 常见缺失:无法给二级路由下发前缀、无法关闭 wan to lan 方向的防火墙、前缀更改无法通知客户端、无法追加 fd 开头的 ipv6 局域网地址
    felix0012
        62
    felix0012  
    OP
       261 天前 via Android
    @guanzhangzhang 哈哈,买个支持 802.11ac 的 AP 可能是最简单的方案了
    ahjsrhj
        63
    ahjsrhj  
       261 天前
    有没有可能买个便宜域名?
    直接公网解析为内网 ip 就行了,我就是这样处理的
    然后通过 ss 做内网穿透给手机和公司电脑提供访问家庭服务的能力,域名保持一致。
    felix0012
        64
    felix0012  
    OP
       260 天前
    @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
        65
    felix0012  
    OP
       260 天前
    @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
        66
    felix0012  
    OP
       260 天前
    @Andim
    按照这个页面的方法试了下,注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\里新建 DisabledComponents 并设置为 0x20:优先 IPv4 而非 IPv6 ,重启后 nslookup ,仍然向光猫的 ipv6 地址请求解析并失败
    txydhr
        67
    txydhr  
       260 天前
    @felix0012 还是买个网管交换机把
    Andim
        68
    Andim  
       260 天前
    @felix0012 有没有试试 ping 以及 curl 你的内网域名,有时就是有很多奇怪的问题,
    我这边是优先查询 ipv4 内网的 DNS 服务器



    另外可能也与 DNS 跃点有关系
    zyq2280539
        69
    zyq2280539  
       260 天前
    @felix0012 哦,这样,我感觉局域网内自建 dns 强制转向就好了,都可以直接跳过光猫、运营商的 dns 直接寻找 ip😆
    shinession
        70
    shinession  
       260 天前
    最好买个域名 xxx.com, gitea 就注册成 gitea.xxx.com, nginx 反代设置好, 全部走 80 或 443 端口到主机
    yeohreet
        71
    yeohreet  
       260 天前
    我先回复,回头学习
    txydhr
        72
    txydhr  
       260 天前
    @zyq2280539 他的问题是光猫分配 ipv6 dns 关不掉
    ebushicao
        73
    ebushicao  
       260 天前
    nip.io 了解一下,你本地只需要把反向代理配置好就行。
    ryd994
        74
    ryd994  
       260 天前 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 查询后缀,这样就只需要输入前缀部分,不需要输入顶级域名部分。
    j0k3rh
        75
    j0k3rh  
       260 天前
    这是因为光猫的 DHCP 下发的 IPv6 DNS 不是你的主路由,解决办法:

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

    可惜,不是大佬,相互交流…

    1. 不用 ipv6 是因为弊大于利,如果不是公网的 ipv6 ,意义不大,而且局域网不想暴露给公网。

    2. dhcp 关闭 ipv6 就行了
    luoshengdu
        82
    luoshengdu  
       259 天前
    一群人在这绕弯解决问题。

    题主你的问题:现在这种网络结构,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'
    felix0012
        83
    felix0012  
    OP
       259 天前 via Android
    @luoshengdu 谢谢大佬,这也是我寻求的方案。我对 openwrt 的 ipv6 下面配置不太熟悉,一直想实现 openwrt 下发 v6 dns 地址但没成功。

    今晚回家试试看
    felix0012
        84
    felix0012  
    OP
       259 天前
    @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 路由器
    felix0012
        85
    felix0012  
    OP
       259 天前
    @luoshengdu
    我怀疑节点获得的多个 IPv6 地址中,FE80::的优先级比 FDxx::的优先级高,或者说 Link-local 地址的优先级比 ULA 的优先级高…
    luoshengdu
        86
    luoshengdu  
       259 天前
    @felix0012 IP 地址不存在优先级,去找 fe80::1 是因为你没有告诉电脑找 fd5c 的 IP 。

    自定义 IP 地址方便你控制自己的网络逻辑结构,并且配置好他们不会再变化
    虽说 fe80 的 link-local (相当于 ipv4 没有 dns 服务器自动配置的 169.254 的地址)地址也不能变化,但是你也无法配置它

    在 dhcp 服务器上配置 v6 dns 的信息下发
    felix0012
        87
    felix0012  
    OP
       259 天前
    @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
    felix0012
        88
    felix0012  
    OP
       259 天前
    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)
    felix0012
        89
    felix0012  
    OP
       259 天前
    一贴文字,缩进格式全没了……

    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)
    luoshengdu
        90
    luoshengdu  
       258 天前
    @felix0012 #87
    关于 1 ,就是手工指定电脑的 v6 地址 dns server 服务器(不方便);

    现在你这个网络的架构难点在于需要通过光猫自动中继分发 ipv6 地址 ,因为 v6 链路能上网是默认路由,所以它 dhcpv6 优先级高?。 [所以,能操作光猫,在里面配置 LAN 的 dns 服务器地址最方便]

    若屏蔽光猫的 dhcpv6 ,可得结果是,电脑只是拿不到 dhcpv6 的地址;但是 v6 slaac 的协议是通过 icmp 分配起来的,电脑依然可以拿到 v6 地址且同时拿到光猫给的 v6 dns 服务器
    godall
        91
    godall  
       256 天前
    @felix0012 我知道你的问题了,你在 openwrt 的 DNS 设置里面,要把 ipv6 前缀地址( fd5c 开头)给删除留空,这样 openwrt 就不会自己管理 ipv6 的 DNS 服务器,访问 ipv6 地址时它会直接请求运营商真实的 ipv6 DNS ( 240e 的)。

    这样 nslookup gitea.onecloud.lan 会直接返回 ipv4 本地地址。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5491 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:51 · PVG 16:51 · LAX 00:51 · JFK 03:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.