在局域网环境中访问NAS、测试服务器或者内部管理系统时,大多数人习惯直接输入IP地址,比如192.168.1.100。设备少的时候还能应付,一旦内网服务多起来,记IP就成了负担,而且IP一旦变更,所有使用记录都要跟着改。解决办法很简单:给内网设备配置域名,用一个容易记忆的名字代替IP地址。这篇文章就来完整讲讲内网域名怎么设置,包括原理、方案选择、具体操作以及常见问题的排查。

一、先弄懂内网域名解析的基本原理
内网域名和公网域名的工作原理是一样的,核心都是DNS解析。当你在浏览器输入一个域名时,系统会先向DNS服务器发起查询,DNS服务器返回对应的IP地址,浏览器再用这个IP去建立连接。内网域名的特殊之处在于,这个域名只在你自己的局域网范围内有效,出了这个网络就查不到了。
域名解析的查询顺序有一个关键点需要理解:操作系统在向DNS服务器查询之前,会先检查本地的hosts文件。这个文件是一个纯文本的映射表,记录了域名和IP的对应关系。如果hosts里已经有记录,系统就直接使用,不再询问DNS服务器。这个特性既是配置内网域名最简单的方法,也是后面排查问题时常见的干扰因素。
另外还要知道缓存机制的存在。无论是操作系统还是浏览器,都会把查询结果缓存一段时间。这就意味着你修改了DNS配置之后,客户端可能还在用旧的记录,看起来像配置无效,实际上是缓存没过期。理解了这两点,后面的操作和排错都会顺利很多。
二、三种主流方案对比,选适合你的那一种
配置内网域名主要有三种途径,各有优劣,先根据设备数量和使用场景选好方案再动手,能省掉不少返工。
方案一:修改hosts文件
hosts文件适合设备数量少、只有一两台电脑需要访问内网服务的场景。它的优点是零成本、不需要任何额外服务,缺点是每台电脑都要手动改一次,IP变更时也要逐台更新。Windows下该文件位于C:\Windows\System32\drivers\etc\hosts,Linux和macOS下位于/etc/hosts。文件格式很简单,一行一条记录,前面是IP地址,后面是域名:
192.168.1.100 nas.myhome.local 192.168.1.101 git.myhome.local 192.168.1.102 jenkins.myhome.local
编辑Windows的hosts文件需要管理员权限,建议用记事本以管理员身份运行后再打开编辑,直接双击打开会提示无法保存。
方案二:搭建内网DNS服务器
当内网设备超过三五台,或者服务器IP经常变动时,就应该考虑搭一台DNS服务器统一管理。所有客户端指向这台服务器,域名记录集中维护,改一处全网生效。常用软件有BIND、dnsmasq,Windows Server自带的DNS服务,以及一些开源项目如AdGuard Home。这里以dnsmasq为例,它轻量且配置简单,特别适合家庭和小型办公网络:
# 安装dnsmasq yum install -y dnsmasq # 编辑主配置文件 /etc/dnsmasq.conf # 监听内网接口 listen-address=192.168.1.1 # 不读取/etc/resolv.conf,仅作为内网DNS使用 no-resolv # 上游DNS,内网查不到的域名转发到公网 server=223.5.5.5 server=114.114.114.114 # 指定内网域名解析记录 address=/nas.myhome.local/192.168.1.100 address=/git.myhome.local/192.168.1.101 # 启动服务 systemctl enable --now dnsmasq
这种方案最大的好处是支持泛解析,比如address=/myhome.local/192.168.1.100可以让所有以myhome.local结尾的域名都指向同一个IP,给后续扩展留足空间。
方案三:利用路由器的DNS功能
很多家用路由器和软路由系统自带DNS映射或 hosts 功能,在管理后台填入域名和IP的对应关系,全网设备自动生效,无需逐台配置。软路由用户还可以直接在OpenWrt上安装dnsmasq的界面管理插件,维护起来更直观。这种方案适合家里有路由器管理权限、又不想单独开一台服务器跑DNS的用户。
三、客户端如何指向内网DNS服务器
DNS服务搭好后,还需要让客户端使用它。最省事的做法是在路由器的DHCP设置里,把DNS服务器地址改为内网DNS的IP,这样所有自动获取IP的设备都会自动使用,一劳永逸。如果只想改个别设备,可以手动设置。
Windows系统在控制面板的网络适配器属性中,找到Internet协议版本4(TCP/IPv4),将首选DNS服务器填为内网DNS的地址。Windows 10之后的版本也可以用命令行快速查看当前生效的DNS:
ipconfig /all # 查看DNS Servers一栏是否为内网DNS地址 # 刷新本地DNS缓存,改完配置后建议执行 ipconfig /flushdns
Linux系统则编辑/etc/resolv.conf,写入nameserver 192.168.1.1,或者通过网络管理器配置持久化的DNS。修改完成后可以用nslookup nas.myhome.local验证解析结果是否正确。
四、常见疑问与问题排查
1. 域名解析不生效怎么办
排查要按顺序来。第一步确认客户端的DNS指向是否正确,用nslookup查看返回的服务器地址;第二步检查DNS服务器上的记录是否写对,IP有没有敲错;第三步刷新客户端缓存,Windows执行ipconfig /flushdns,Linux可以重启nscd或使用systemd-resolve --flush-caches。还有一个容易被忽略的坑:hosts文件里的旧记录会优先生效,改了DNS却不生效时,记得检查本机hosts里有没有冲突记录。
2. 内网域名会不会和公网域名冲突
选择内网域名后缀时有讲究。不要随意使用公网真实存在的域名,比如把内网服务命名为baidu.com这种,会导致内网设备访问真正的公网站点出问题。推荐使用.local、.lan、.home.arpa这类保留后缀,或者自己购买一个真实域名但只在内网做解析。其中.home.arpa是RFC专门为这类用途保留的,最稳妥。需要注意的是,.local后缀与mDNS(苹果的Bonjour服务)存在冲突可能,苹果设备较多的环境建议避开,改用.lan或.home.arpa。
3. DNS服务器挂了会不会导致全网断网
会有影响,所以要提前设计。dnsmasq这类软件可以配置多个上游DNS,客户端也可以同时配置主备两个DNS地址,主服务器故障时自动切换。家庭环境里,软路由本身就是DNS服务器,只要路由器在运行服务就在,风险较低。企业环境则建议至少部署两台DNS服务器互为备份。
五、几点实用建议
域名命名要有规划。建议按用途分层,比如nas.myhome.local、git.myhome.local这种服务名加域名的结构,后期加服务时直接沿用规则,不用纠结取什么名字。避免使用中文和特殊字符,虽然部分系统支持,但兼容性没有保障。
记录要集中管理。无论是hosts还是dnsmasq配置,都建议把文件纳入版本管理或者至少做好备份,改坏了能快速回滚。如果用了多台DNS服务器,保证它们的配置一致,可以借助同步脚本或配置管理工具。
最后,如果内网服务要上HTTPS,可以考虑用ACME的DNS验证方式给内网域名签发证书,配合自建的证书颁发机构,实现全链路的加密访问。这套流程稍微复杂一些,但基础还是本文讲的域名解析,先把DNS这一层搭稳,后面的扩展才有根基。