内网搭私有DNS服务器核心是三步:选软件(如dnsmasq、BIND、Windows DNS或CoreDNS)、划私有域名空间(如internal、dev.company)、添加A/PTR/CNAME等记录映射主机名与内网IP;无需公网注册,通过DHCP或GPO分发DNS地址即可实现终端名称访问。

在内网搭私有 DNS 服务器,核心就三步:选一个轻量或生产级的 DNS 软件、划一块不跟公网冲突的私有域名空间(比如 dev.company 或 internal)、把主机名和内网 IP 明确写进记录里。不需要注册域名,也不依赖外网,终端只要指向这台服务器就能用名字访问 NAS、GitLab、数据库等服务。
选对 DNS 服务软件
根据你的环境选最省事的方案:
-
Windows 域环境:直接启用域控制器上的 DNS 角色,新建正向查找区域(如
company.local),图形界面添加 A 记录,再用组策略(GPO)批量推送 DNS 地址给所有电脑; -
中小团队 / 快速验证:用
dnsmasq容器,一行命令启动:docker run -d --name dns -p 53:53/udp -v $(pwd)/hosts:/etc/hosts jwilder/dnsmasq,然后在本地hosts文件加类似192.168.1.100 jenkins.internal的映射; -
Linux 生产环境:部署 BIND 9,配置
/etc/named.conf声明私有区域(如dev.company),区域文件放在/var/named/dev.company.db,支持主从同步和安全更新; -
Kubernetes 或微服务:用 CoreDNS,通过
file插件加载本地 hosts 式映射,或启用kubernetes插件自动同步 Service 名称。
定义私有域名并避免冲突
私有域名不能照搬公网已注册的完整域名(比如直接用 tencent.com),否则可能引发解析混乱。推荐做法:
- 用明确标识内网的后缀,例如:
.internal、.dev、.company、.lan; - 如果已有 AD 域,可用
.local(注意 macOS 的 mDNS 也用 .local,需确认兼容性); - 在 DNS 配置中显式声明该区域为“权威”,不向上游转发,防止意外泄露查询。
配置关键 DNS 记录
日常够用的主要是这几类记录:
-
A 记录:把主机名映射到 IPv4 地址,例如
gitlab.internal → 192.168.5.20; -
PTR 记录(反向解析):配合日志审计或某些安全工具,把
192.168.5.20解析回gitlab.internal; -
CNAME 记录:做别名,比如让
code.internal指向gitlab.internal,方便后期迁移; - MX 记录(如需内网邮件):仅当部署了内部邮件服务器时配置,指向对应邮箱主机。
让终端自动用上这个 DNS
手动改每台设备的 DNS 设置不现实,建议通过网络基础设施分发:
-
DHCP 服务:在路由器或 DHCP 服务器中,把 DNS 服务器地址设为你的私有 DNS IP(如
192.168.1.50),租约下发时自动带过去; - Windows GPO:在“计算机配置 → 策略 → 管理模板 → 网络 → DNS 客户端”中设置首选 DNS;
-
macOS/Linux 批量脚本:用
scutil或修改/etc/resolv.conf(注意 NetworkManager 可能覆盖); - 验证是否生效:在客户端执行
nslookup gitlab.internal或dig gitlab.internal,看是否返回预期 IP。











