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

局域网设备的 DNS 查询应该怎么做?

  •  
  •   cwcc · 2022-04-06 01:23:38 +08:00 · 3799 次点击
    这是一个创建于 987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的网络架构非常简单,只有两层,一层是外部宽带接入的主路由(主路由为 TP-Link ,自带 IPv4 和 IPv6 的 DNS 功能)。现在我局域网内有几十台桥接服务搭建的虚拟机和物联网设备。如果想要快速连接他们,我都有对应的主机名称,但是 IP 总是记不住。

    有没有一种比较简单的方案,搭建一个内网的 DNS (同时支持 v4 和 v6 ),实现效果就是,只要接入家里网络的设备(路由器的 DHCP 服务器可以自定义指定到内网 DNS 服务器),设置 DNS ,那么就可以实现内网+外网 DNS 的同时解析,例如:nslookup ci-debian.mydomain 返回 192.168.10.24,走 v6 查询的话也是同样的道理。

    第 1 条附言  ·  2022-04-06 14:34:05 +08:00
    目前据我对 Windows 的了解,试了下 Windows Server ,直接点点点启一个 DNS 服务器,是可以做到的。但是将我路由器的 DHCP DNS 服务器设置成 Server 主机后,我还是不能直接使用 `nslookup` 查找(我的电脑默认走了 IPv6 的 DNS ),除非后面指定我的主机局域网 IP 。
    14 条回复    2022-04-11 09:28:34 +08:00
    mons
        1
    mons  
       2022-04-06 01:55:30 +08:00
    可以,如果不想每台终端手动配置 DNS 的话至少有两种解决方案:

    1. 主路由支持修改 DHCP DNS Server 列表的话,直接把你内网的 DNS Server IP 加进去,这样所有遵循规范的 DHCP Client 都会默认采用这个 list 。譬如我的解决方案是在 RPi 上架了个 AdGuard Home 后加到了 DHCP DNS Server list. 如果开了 DHCPv6 ,则需要同样加到 v6 的 DNS Server list:





    2. 往主路由跑的 dnsmasq 里直接加静态 host-route ,例如:

    cat > /run/dnsmasq.conf.d/custom01.conf <<EOF
    host-record=ci-debian.mydomain,192.168.10.24
    host-record=ci-debian2.mydomain,192.168.10.25
    EOF

    然后 reload dnsmasq

    供参考。
    oovveeaarr
        2
    oovveeaarr  
       2022-04-06 03:59:39 +08:00
    一般路由器自带的主机名解析功能,搜索域也可以自定义。
    RatioPattern
        3
    RatioPattern  
       2022-04-06 07:04:49 +08:00
    PolarBears
        4
    PolarBears  
       2022-04-06 08:22:01 +08:00
    要不或者考虑几块钱买个域名,直接域名设置解析成内网 IP 。
    villivateur
        5
    villivateur  
       2022-04-06 09:20:34 +08:00
    以 openwrt 为例,改 /etc/hosts 即可解析内网 IP

    比如加一行 192.168.1.1 example.com
    xxb
        6
    xxb  
       2022-04-06 09:26:44 +08:00 via iPhone
    你们是不是答偏了?
    楼主问的不是路由器配置吧。
    使用 adguardHome 自建 dns 服务器即可。
    cwcc
        7
    cwcc  
    OP
       2022-04-06 14:29:57 +08:00
    @PolarBears 我域名很多,但是公网域名解析内网地址的话内网拓扑就会暴露,显然不符合数据安全措施。
    cwcc
        8
    cwcc  
    OP
       2022-04-06 14:30:34 +08:00
    @xxb 是的,就是在自建 DNS 服务器上做文章,路由器配置的话都是现成很明朗的。
    Jinnyu
        9
    Jinnyu  
       2022-04-06 17:19:54 +08:00
    用 adguard 就解决了
    1. 路由上指定 dns 解析地址为 adguard
    2. adguard 里指定运营商 dns 就可以了



    目前我就是这么搞的
    家里服务器上监听个 adguard
    软路由 dns 指向 adguard (只不过我的 adguard 没有 fallback dns, 剩下的交由软路由解析)
    这样局域网解析出来的 IP 都是内网的

    外网访问 继续用公共 dns 解析就可以了 (frp 穿透回来+nginx 反代)
    liuliangyz
        10
    liuliangyz  
       2022-04-07 17:30:38 +08:00
    ad 域能很好的解决你的问题!
    FrankAdler
        11
    FrankAdler  
       2022-04-07 20:21:04 +08:00 via iPhone
    你可以看下一级路由的 dhcp 设置里是否有本地域名这个选项。
    填个想要的域名比如 baidu.io ,那局域网内 hostname 为 work 的用 work.baidu.io 就可以访问了。
    openwrt 是基于 dnsmasq 所以是有的,tp 我不确定,如果没有可以内网搭一个 dnsmasq 代替 tp 的 dhcp 。
    FrankAdler
        12
    FrankAdler  
       2022-04-07 20:22:01 +08:00 via iPhone
    更改 dhcp 后需要重启这之前的服务网络,让他走新的 dhcp 服务器
    FrankAdler
        13
    FrankAdler  
       2022-04-07 20:25:29 +08:00 via iPhone
    另外默认的 dhcp 过期是 12 小时,建议缩短到 1 小时,不然 dhcp 服务重启后会有短时间的解析失败
    flynaj
        14
    flynaj  
       2022-04-11 09:28:34 +08:00 via Android
    主路由换成 openwrt 就可以,默认不用设置什么就可以用了,默认域 lan
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3364 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:18 · PVG 19:18 · LAX 03:18 · JFK 06:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.