长话短说
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"
Run Code Online (Sandbox Code Playgroud)
至少,这看起来是有效的。
最近通过将旧系统升级到 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
Run Code Online (Sandbox Code Playgroud)
和
/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: …
Run Code Online (Sandbox Code Playgroud) 我经常发现自己坐在各种不同的 Linux 安装面前,需要检查或更改网络设置。它们是来自不同发行版(主要是 debian 和 opensuse,但也有 ubuntu 和派生变体)的不同版本,处于不同的定制状态,这意味着我无法对它们的配置做出可靠的假设。
那么我如何才能以简单而强大的方式(即发行版和版本无关)找出哪个服务用于管理网络接口和相关的网络设置。(如 NetworkManager、Systemd-networkd 或 ifup/down)
-> 最好使用基本系统工具
系统可以在系统启动时找出要使用/启动的服务,因此必须有一个命令告诉我,或者有一个配置文件可以在其中查找它。
我知道,类似的问题已经被问过很多次了,但我能找到的所有答案都归结为两个不太有用的要点之一:
我认为这两者既不可靠也不安全。(更何况试错是非常耗时的)