Kubuntu 允许为连接设置 DNS。
每次我连接到一个新连接时,我都必须为其设置 DNS。
有没有办法全局设置 DNS?
答案1
您尚未指出您使用的是哪个 Kubuntu 版本。我在以下说明中使用了 Kubuntu 22.04,但这也适用于 20.04 及更新版本。
您有几种选择,dhclient
或者nmcli
,我会让您决定您认为哪一个更简单。使用这两个选项,您只需执行一次,因为这些配置设置在重新启动后仍会保留。
选项1
用于dhclient
定义 DNS 服务器并忽略从 DHCP 服务器推送给您的 DNS 服务器。
打开控制台并编辑
/etc/dhcp/dhclient.conf
。添加以下行;根据您的 DNS 服务器进行相应调整。
supersede domain-name-servers 8.8.8.8, 1.1.1.1;
删除关键字
domain-name-servers
后的request
内容。我的文件的完整输出是:
$ cat /etc/dhcp/dhclient.conf # Configuration file for /sbin/dhclient. # # This is a sample configuration file for dhclient. See dhclient.conf's # man page for more information about the syntax of this file # and a more comprehensive list of the parameters understood by # dhclient. # # Normally, if the DHCP server provides reasonable information and does # not leave anything out (like the domain name, for example), then # few changes must be made to this file, if any. # option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; supersede domain-name-servers 8.8.8.8, 1.1.1.1; send host-name = gethostname(); request subnet-mask, broadcast-address, time-offset, routers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers; timeout 300;
默认情况下,网络管理器使用其内部 DHCP 客户端。因此,为了覆盖此设置并使用dh客户端,它将确认中的更改
/etc/dhcp/dhclient.conf
,创建一个名为的新文件/etc/NetworkManager/conf.d/dhcp-client.conf
并向其中添加以下内容:[main] dhcp=dhclient
重启网络管理器
sudo systemctl restart NetworkManager
释放当前的 DHCP 租约:
sudo dhclient -r
获取新的 DHCP 租约:
sudo dhclient
通过查看输出来确认您的 DNS 服务器
resolvectl
:$ resolvectl Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (enp0s3) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 1.1.1.1
重新启动并使用 再次确认 DNS 服务器
resolvectl
。dhclient
您可以通过运行以下命令来确认网络管理器正在使用:journalctl -b0 | grep dhclient
然后查找如下行:
Mar 05 20:44:05 Kubuntu-22 NetworkManager[412]: <info> [1709700245.8453] dhcp-init: Using DHCP client 'dhclient'
选项 2
用于nmcli
定义 DNS 服务器并忽略从 DHCP 服务器推送给您的 DNS 服务器。
找到连接的“名称”。打开控制台并输入
nmcli connection
:$ nmcli connection NAME UUID TYPE DEVICE Wired connection 1 eb3986c1-a90b-30d2-8f1d-1aedde7d9b16 ethernet enp0s3
在上面的输出中,该连接被命名为“有线连接1“。我将在下面的例子中使用它。请相应地调整您的连接名称。
忽略您的 DHCP 服务器推送给您的 DNS 服务器:
nmcli connection modify 'Wired connection 1' ipv4.ignore-auto-dns yes
将 DNS 服务器添加到您的连接:
nmcli connection modify 'Wired connection 1' ipv4.dns "8.8.8.8,1.1.1.1"
重新加载您的连接:
sudo nmcli connection reload
重新启动网络管理器:
sudo systemctl restart NetworkManager
此时,您的 DNS 服务器已为您的连接设置完毕。查看 的输出resolvectl
。请注意,我定义的 DNS 服务器8.8.8.8
和1.1.1.1
已设置为 Link 2 (enp0s3),它与“有线连接1“。
$ resolvectl
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp0s3)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
DNS Servers: 8.8.8.8 1.1.1.1
通过实施这些更改,将在中创建一个配置文件/etc/NetworkManager/system-connections/
。查看上述命令创建的文件:
$ sudo cat /etc/NetworkManager/system-connections/'Wired connection 1.nmconnection'
[connection]
id=Wired connection 1
uuid=eb3986c1-a90b-30d2-8f1d-1aedde7d9b16
type=ethernet
autoconnect-priority=-999
interface-name=enp0s3
timestamp=1709695374
[ethernet]
[ipv4]
dns=8.8.8.8;1.1.1.1;
ignore-auto-dns=true
method=auto
[ipv6]
addr-gen-mode=stable-privacy
method=auto
[proxy]
了解更多信息:
Ubuntu 网站:
Arch Linux 网站: