我不希望网络管理员将从 DHCP 收到的 DNS 服务器添加到我的/etc/resolv.conf
.
从 GUI/Connections/IPV4 配置并选择方法自动(仅地址)时,它仍会添加通过 DHCP 接收的 DNS 服务器。
是否可以根据每个连接 (特定 ssid ) 执行此操作?
答案1
阻止网络管理器将 dns 服务器添加到/etc/resolv.conf
文件的一种方法是执行以下操作:
首先打开 nm conf 文件/etc/NetworkManager/NetworkManager.conf
:
sudo vim /etc/NetworkManager/NetworkManager.conf
并将其添加到以下[main]
部分:
dns=none
rc-manager=unmanaged
保存并退出。
答案2
/etc/resolv.conf
符号链接到/run/resolvconf/resolv.conf
。 NetworkManager 不直接更新 /etc/resolv.conf (仅更新 /run/resolvconf/resolv.conf)。 因此:
- 删除符号链接(
rm /etc/resolv.conf
) - 写你自己的版本
/etc/resolv.conf
答案3
我个人最喜欢的是使用 line supersede domain-name-servers
in /etc/dhcp/dhclient.conf
。无论 dns 接入点提供什么,您的 ubuntu 都会始终使用dhclient.conf
来自我的文件的样本
#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers,
dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
答案4
为了以防万一,我已经编写了一个小脚本来为每个以太网/无线连接自动执行此操作(这里使用谷歌 DNS):
nmcli -g name,type connection show --active | awk -F: '/ethernet|wireless/ { print $1 }' | while read connection
do
nmcli con mod "$connection" ipv6.ignore-auto-dns yes
nmcli con mod "$connection" ipv4.ignore-auto-dns yes
nmcli con mod "$connection" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con down "$connection" && nmcli con up "$connection"
done