PanGu开发板默认使用connman作为网络设备的管理组件,所以DNS也被接管了,因此可以看到/etc/resolv.conf文件无法直接修改

root@pangu:~# ls -l /etc/resolv*
lrwxrwxrwx 1 root root 26 Mar  9  2018 /etc/resolv-conf.connman -> ../run/connman/resolv.conf
lrwxrwxrwx 1 root root 34 Mar  9  2018 /etc/resolv-conf.systemd -> ../run/systemd/resolve/resolv.conf
lrwxrwxrwx 1 root root 28 Nov  9 10:15 /etc/resolv.conf -> /var/run/connman/resolv.conf

修改DNS,需要通过connman配置即可。

Connman配置DNS

插上网线后,eth0获取到IP地址,可以从connman查看到已经有的服务

root@pangu:~# connmanctl services
*AO Wired                ethernet_6e38fb045f7c_cable

然后配置DNS

connmanctl config ethernet_6e38fb045f7c_cable --nameservers 114.114.114.114

此时配置将被存储在/var/lib/connman目录下,对应的service文件内。
但由于STM32MP1的网络MAC地址不是固定的,导致每次启动后,connman认为不是同一个网络接口,重新生成新的配置文件,所以无法实现保持的效果。

传统方式配置DNS

需要先禁用Connman的DNS代理服务,打开文件"/etc/systemd/system/multi-user.target.wants/connman.service"

[Service]
Type=dbus
BusName=net.connman
Restart=on-failure
ExecStart=/usr/sbin/connmand -n

将原来的ExecStart修改为如下

ExecStart=/usr/sbin/connmand -n --nodnsproxy

然后修改/etc/tmpfiles.d/connman_resolvconf.conf文件,前面加"#"符号。

#d	/var/run/connman	- - - -
#L+	/etc/resolv.conf	- - - -	/var/run/connman/resolv.conf

然后删除原来的链接文件,重新写入DNS信息

rm /etc/resolv.conf
echo "114.114.114.114" > /etc/resolv.conf
作者:SteveChen  创建时间:2024-09-18 11:58
最后编辑:SteveChen  更新时间:2024-10-18 15:16