企业内网配置自定义dns域名的核心是搭建dns服务器、创建私有域名空间、添加对应记录;支持dnsmasq容器、windows dns角色、bind 9或coredns等选型,无需公网注册,通过dhcp或gpo分发dns地址实现终端解析。

企业内网要让员工用 git.internal 访问代码平台、用 nas.hr.company 打开文件服务器,而不是记一串 192.168.5.20,就得配好自己的 DNS 服务和记录。这事不依赖公网注册,也不用买域名,核心是:搭一台可信的 DNS 服务器,划一块私有域名空间,再把主机名和 IP 明确对应上。
选一个适合的 DNS 服务器
不同技术环境有不同最优解,别硬套统一方案:
-
Windows AD 环境:直接启用域控制器上的 DNS 角色,新建正向查找区域(如
company.local),图形化操作,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,配置
named.conf声明私有区域(如dev.company),区域文件放在/var/named/dev.company.db,支持主从同步和 TSIG 安全更新; -
K8s 或微服务架构:用 CoreDNS,通过
file插件加载本地域名映射,或用kubernetes插件自动同步 Service 名称到 DNS。
创建私有域名并绑定网络范围
私有域名不能和公网已注册域名完全重名,否则可能引发解析冲突:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 云平台(如阿里云、华为云):进「内网 DNS」→「私有域」→「添加私有域」,填
internal.company或svc.prod,再勾选对应 VPC 和子网;系统自动生成 SOA 和 NS 记录; - 本地 BIND 部署:在
/etc/named.conf中添加区域声明:zone "internal.company" IN { type master; file "/var/named/internal.company.db"; };
然后手动创建该区域文件; - Windows DNS:右键「正向查找区域」→「新建区域」→ 选「主要区域」→ 输入区域名称(如
hr.internal)→ 完成。
添加关键 DNS 记录
记录类型按用途加,不是越多越好,先保基础可用:
-
A 记录:主机名 → IPv4 地址,例如
jenkins.internal.company. IN A 192.168.5.20; - AAAA 记录:同上,对应 IPv6(如启用 IPv6);
-
CNAME 记录:别名映射,例如
ci.internal.company. IN CNAME jenkins.internal.company.; -
SRV 记录(可选):服务发现用,格式为
_sip._tcp.internal.company. IN SRV 10 60 5060 sip-server.internal.company.; -
PTR 记录(反向解析,可选):用于日志溯源,需额外配置
in-addr.arpa区域,如20.5.168.192.in-addr.arpa. IN PTR jenkins.internal.company.。
加完记录后必须重载服务:
• BIND:systemctl reload named 或 rndc reload
• dnsmasq:docker exec dns-server kill -HUP 1
• Windows DNS:右键区域 →「刷新」或重启 DNS 服务。
验证与终端生效
别只信配置文件,一定要实测:
- 用
dig @192.168.1.10 jenkins.internal.company查看是否返回正确 A 记录(状态为NOERROR); - 客户端改 DNS 设置:
• Linux:echo "nameserver 192.168.1.10" > /etc/resolv.conf
• Windows:网卡属性 → IPv4 → 手动填首选 DNS; - 测试连通性:
ping jenkins.internal.company或curl -I http://git.internal.company; - 若失败,查三点:DNS 服务是否运行(
systemctl status named)、防火墙是否放行 UDP/TCP 53 端口、客户端 resolv.conf 是否指向正确地址。










