Ubuntu Server 22.04.2搭建Active Directory域控制器时DNS查询失败求助
兄弟,我太懂你这种卡到DNS环节的崩溃感了——Samba AD的DNS配置本来就容易踩坑,再加个VirtualBox VM环境,简直是双重考验。咱们一步步拆解问题,先从最核心的点排查:
1. 先确认Samba内置DNS服务真的在跑
你用的是SAMBA_INTERNAL作为DNS后端,那首先得确保Samba的AD DC服务真的监听了53端口(DNS默认端口):
- 先查服务状态:
sudo systemctl status samba-ad-dc,看日志里有没有类似Listening on UDP port 53的条目; - 再用端口检查命令:
sudo ss -tulpn | grep :53,正常应该能看到samba进程占用了UDP和TCP的53端口。如果看不到,说明DNS服务根本没启动,大概率是provision的时候出了问题,或者服务启动失败(可以看journalctl -xe | grep samba找报错)。
2. 防火墙大概率挡了DNS端口
Ubuntu默认的ufw防火墙会默认屏蔽很多端口,包括DNS的53端口。赶紧把这两个端口放开:
sudo ufw allow 53/udp sudo ufw allow 53/tcp sudo ufw reload
放完之后再去检查端口监听,看看有没有变化。
3. VirtualBox NAT网络的两个致命问题
你现在用的是NAT网络,而且DC的IP是VirtualBox自动分配的DHCP地址——这两个点都是AD DC的大忌:
- AD DC必须用静态IP:DHCP分配的IP随时可能变,Samba DNS绑定的IP一变,整个服务就废了。赶紧把DC的IP改成静态的,比如编辑Netplan配置文件(一般是
/etc/netplan/00-installer-config.yaml):
network: ethernets: enp0s3: # 换成你的网卡名,用`ip addr`查看 addresses: [10.0.2.15/24] gateway4: 10.0.2.2 nameservers: addresses: [127.0.0.1, 8.8.8.8] version: 2
然后执行sudo netplan apply生效。
- NAT网络可能干扰DNS转发:VirtualBox的NAT模式本身会做DNS转发,很可能和Samba的DNS服务冲突。建议暂时换成桥接模式,让DC和Win10 VM直接在同一个物理网段,减少网络层面的干扰。
4. Hosts文件和Resolv.conf的冲突
你的hosts文件里有127.0.1.1 ash-dc,这会导致Samba优先绑定到回环地址,而不是实际的网卡IP。修改/etc/hosts,把这行注释掉,只保留:
127.0.0.1 localhost 10.0.2.15 ash-dc.cserv.lan ash-dc
另外,Ubuntu默认的systemd-resolved会自动覆盖resolv.conf,这也会和Samba DNS冲突。建议直接禁用它:
sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved sudo rm /etc/resolv.conf
然后手动新建/etc/resolv.conf:
nameserver 127.0.0.1 nameserver 8.8.8.8 search cserv.lan
改完之后重启Samba服务:sudo systemctl restart samba-ad-dc。
5. 换个方式测试DNS
别只盯着host命令,用dig直接指定查询本地DNS,结果更清晰:
dig @10.0.2.15 cserv.lan A dig @127.0.0.1 ash-dc.cserv.lan A
如果本地能查到正确的IP,那问题可能出在Win10客户端的DNS设置;如果本地都查不到,那还是DC的DNS服务没跑起来,回到第一步排查。
最后给你个靠谱的流程复盘
如果前面的步骤都试过还是不行,建议彻底重来一次,严格按这个顺序:
- 给DC设置静态IP,禁用systemd-resolved;
- 配置hosts文件,确保FQDN和IP正确映射;
- 执行Samba provision命令,指定
--dns-backend=SAMBA_INTERNAL; - 放开防火墙的53、135、139、445等AD必需端口;
- 启动samba-ad-dc服务,检查端口监听;
- 用dig测试本地DNS正常后,再去配置Win10客户端。
备注:内容来源于stack exchange,提问作者Joseph Ellis

