我将 16.04 Ubuntu 服务器升级到 22.04。迁移到 18.04 和 20.04 运行良好。但是,升级到 22.04 破坏了我的 DNS 配置。
我找到了很多使用 来配置整个网络的教程netplan
,但我对它们不太满意(我担心会破坏一切)。我在服务器上有很多网络接口,但 中什么都没有/etc/netplan
。
我想知道我是否必须创建一个netplan
包含所有网络接口的文件,还是只包含损坏的网络接口的文件。
命令的结果如下nmcli device show
:
GENERAL.DEVICE: docker0
GENERAL.TYPE: bridge
GENERAL.HWADDR: 02:42:99:76:F4:CE
GENERAL.MTU: 1500
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 172.17.0.1/16
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 172.17.0.0/16, nh = 0.0.0.0, mt = 0
IP6.GATEWAY: --
GENERAL.DEVICE: docker_gwbridge
GENERAL.TYPE: bridge
GENERAL.HWADDR: 02:42:FA:EB:F8:75
GENERAL.MTU: 1500
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 172.18.0.1/16
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 172.18.0.0/16, nh = 0.0.0.0, mt = 0
IP6.ADDRESS[1]: fe80::42:faff:feeb:f875/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
GENERAL.DEVICE: enp2s0f0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: D8:D3:85:B9:34:20
GENERAL.MTU: 1500
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: marche
IP4.ADDRESS[1]: 10.231.226.41/23
IP4.GATEWAY: 10.231.227.254
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 10.231.227.254, mt = 0
IP4.ROUTE[2]: dst = 10.231.226.0/23, nh = 0.0.0.0, mt = 0
IP6.ADDRESS[1]: fe80::dad3:85ff:feb9:3420/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
GENERAL.DEVICE: enp2s0f1
GENERAL.TYPE: ethernet
GENERAL.HWADDR: D8:D3:85:B9:34:22
GENERAL.MTU: 1500
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: arrêt
IP4.GATEWAY: --
IP6.GATEWAY: --
GENERAL.DEVICE: vethdcb1995
GENERAL.TYPE: ethernet
GENERAL.HWADDR: C2:05:F6:52:3F:61
GENERAL.MTU: 1500
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
WIRED-PROPERTIES.CARRIER: marche
IP4.GATEWAY: --
IP6.ADDRESS[1]: fe80::c005:f6ff:fe52:3f61/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10 (non-géré)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
IP6.ADDRESS[1]: ::1/128
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = ::1/128, nh = ::, mt = 256
问题在于enp2s0f0
设备没有定义 DNS。
我的问题是:
- 如何安全地添加我的 DNS 记录?也许有一个比 更简单的干净解决方案
netplan
。干净排除由 生成的黑客文件(resolvconf
如 )/etc/resolvconf/resolv.conf.d/head
。 - 如果我必须在文件中创建所有接口,是否有办法
netplan
从当前设置中创建文件以降低出错的风险?
PS:我不知道它是否重要,但systemd-resolve
没有安装在机器上,并且/etc/resolv.conf.d
包含以下对它的引用:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
search DOMAINS
答案1
我终于在这里找到了解决方案:https://serverok.in/systemd-resolved
如果将来链接失效:创建一个文件:
sudo mkdir /etc/systemd/resolved.conf.d/
sudo nano /etc/systemd/resolved.conf.d/dns_servers.conf
在此文件中添加我的 DNS:
[Resolve]
DNS=8.8.8.8 1.1.1.1
然后重新启动 systemd-resolved
sudo systemctl restart systemd-resolved
即使重启后它也能工作:-)
附言:不知道为什么我的 DNS 配置在从 20.04 升级到 22.04 时丢失了。
答案2
我尝试应用 Jean-Marc 的修复程序,但尽管它在会话中有效,但重启后我实际上丢失了整个网络配置(包括 IP)。我不得不创建一个包含整个配置的 YAML 文件/etc/netplan如那里解释的那样: https://tecadmin.net/how-to-configure-static-ip-address-on-ubuntu-22-04/ 我的 01-netcfg.yaml 文件的内容:
network:
ethernets:
ensXX:
addresses:
- XXX.XXX.XXX.XX/XX
routes:
- to: default
via: YOUR_GATEWAY
nameservers:
addresses:
- YOUR_MAIN_DNS_IP
- OTHER_DNS_IPS
search:
- MACHINE_DOMAIN_NAME