升级到 Ubuntu 22.04 后使用 ifupdown 和 systemd-resolved 时 DNS 损坏

升级到 Ubuntu 22.04 后使用 ifupdown 和 systemd-resolved 时 DNS 损坏

长话短说

sudo cp -p /etc/network/if-up.d/resolved /etc/network/if-up.d/.resolved.broken-orig

#Edit /etc/network/if-up.d/resolved and take out the extraneous quotes on lines 48 and 52
#The fix looks like:
diff /etc/network/if-up.d/.resolved.broken-orig /etc/network/if-up.d/resolved
48c48
< "$DNS"="$NEW_DNS"
---
> $DNS="$NEW_DNS"
52c52
< "$DOMAINS"="$NEW_DOMAINS"
---
> $DOMAINS="$NEW_DOMAINS"

至少,这看起来是有效的。


最近通过将旧系统升级到 Ubuntu 22.04.1 LTSdo-release-upgrade并遇到 DNS 问题,错误消息为:

nslookup google.com
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

/etc/network/if-down.d/resolved: 12: mystatedir: not found
/etc/network/if-up.d/resolved: 71: DNS: not found
/etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-em1: DNS=8.8.8.8: not found
/etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-em1: DOMAINS=local_search_domain.com: not found
Failed to parse DNS server address: DNS
Failed to set DNS configuration: Invalid argument

nslookup在系统升级之前尝试通过 /etc/network/interfaces 中定义的网络连接 (em1) 运行时。

经过一段时间的自我安慰后我发现https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1981103https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1910273这有助于增强我的平静。看来,遇到的错误至少是由于 /etc/network/if-up.d/resolved 中的一对拼写错误造成的,这些错误可以使用文本编辑器轻松修复;手动删除无关引号后,我可以启动网络接口并查询 DNS 服务器。我不清楚ifupdownUbuntu 22.04.1 LTS (0.8.36+nmu1ubuntu3) 当前提供的软件包或我上面描述的手动编辑是否存在其他问题。是否有任何不涉及编辑 /etc/network/if-up.d/resolved 的第 48 行和 52 行的已记录修复程序,或者这是当前可用于已升级到 Ubuntu 22.04.1 LTS 的旧系统的最佳解决方法吗?

答案1

我碰到了我的 Ubuntu 服务器18.04->22.04并遇到了这个问题。正如您明确指出的(谢谢!)/etc/network/if-up.d/resolved以这种方式更新和删除 2 个带引号的变量:

sudo vim /etc/network/if-up.d/.resolved.broken-orig

Old: "$DNS"="$NEW_DNS"
-->
New: $DNS="$NEW_DNS"

Old: "$DOMAINS"="$NEW_DOMAINS"
-->
New: $DOMAINS="$NEW_DOMAINS"

重启后即可解决此问题。

相关内容