ubuntu22.04 DNS设置及53端口被占的一些事
类别:信息技术
作者:ATScore
发布日期:2023年2月24日
概述
在ubuntu22.04中使用docker部署adguardhome时,发现53端口被占用。进而在检查dns设置并验证adh部署情况时发现,ubuntu通过systemd-resolved设置了全局dns,并在网络设置时设置默认dns,这两重dns形成了ubuntu的默认dns体系。最终这两重体系的结果被软链接至/etc/resolv.conf。
设置dns的思路
- 将systemd-resolved的dns清空
- 禁止systemd-resolved设置127.0.0.53的dns
- 修改netplan的默认dns设置
systemd-resolved的dns设置
查看配置文件
cat /etc/systemd/resolved.conf
输出
[Resolve]
...
#DNS=192.168.137.33
...
DNSStubListener=yes
...
上述结果中,DNS如果不设置,且DNSStubListener设为Yes,系统就会自建一个127.0.0.53:53的DNS服务器,并将/etc/resolv.conf结果指向它。十分奇怪。
通常并不需要修改它。如果你想释放53端口,只需要
DNSStubListener=no
并重启
systemctl restart systemd-resolved.service
网络接口上的dns配置
查看配置文件,配置文件的具体文件名可能因人而异。
cat /etc/netplan/00-installer-config.yaml
输出
network:
ethernets:
eth0:
addresses:
- 192.168.137.33/24
routes:
- to: default
via: 192.168.137.1
nameservers:
addresses:
- 223.5.5.5
search: []
version: 2
上述配置是典型的网络接口基本配置,使用了手动指定ip、掩码、网关、dns等, nameservers就是dns服务器的设置。我这里设的是223.5.5.5。如果不设置nameserver,系统就会使用systemd-resolved的dns。 也可以在eth0:下一行写为dhcp4: yes开启dhcp模式。这样就不用写address、route、nameserver等节了。 最后使用netplan生效
netplan apply
最后,将最终的系统配置文件链接到/etc/resolv.conf
ln -sf /run/systemd/resolve/resolv.conf /etc/
ps:记不清系统前述的操作是否会对/etc/resolv.conf自动生效,记的检查,如果不会请手动软链接。