我有 CentOS 7.2(VirtualBox 中的客户机,vagrant box centos/7
,没有 GUI)。
我看到文件中有一个名称服务器:
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3
但是如何添加或者替换新的呢?
我已经直接在网络中手动完成了此操作:
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDS=no
DNS1=8.8.4.4
DNS2=8.8.8.8
并且它有效。
但是有没有什么办法可以做到这一点呢nmcli
?
PS 未nmtui
安装(在选定的系统中)。
答案1
这是修改现有连接的命令。
nmcli con mod "$connectionName" ipv4.dns "8.8.8.8 8.8.4.4"
connectionName
可以通过命令找到:nmcli con
。在问题案例中,它将是"System eth0"
如果您想忽略自动配置的名称服务器和搜索域,即从 DHCP 传递的设置。
nmcli con mod "$connectionName" ipv4.ignore-auto-dns yes
最后,为了使更改生效,请关闭连接然后重新打开:
nmcli con down "$connectionName"
nmcli con up "$connectionName"
service NetworkManager restart
使用 进行验证cat /etc/resolv.conf
。您不应/etc/resolv.conf
手动编辑,因为它是由 NetworkManager 服务生成的,它很可能在任何给定时间被覆盖。
答案2
有一个由 red hat 开发的很好的 TUI 工具,nmtui
你真的应该尝试一下。现在它已经预装在各种发行版中,但如果你的发行版中没有,请尝试:
sudo yum install networkmanager-tui
它使用基于 curses 的文本界面 - 可从命令行访问。nmcli
只有在编写脚本时才特别必要,并且由于可能的输入种类较多,因此出错的空间也较大。
答案3
除了设置上面描述的 ipv4.dns 属性之外...
要排除 DHCP 提供的 DNS 服务器...请将 ipv4.ignore-auto-dns 属性设置为 yes。
nmcli con mod <connectionName> ipv4.ignore-auto-dns yes
要启用更改,请关闭然后重新打开连接:
nmcli con down <connectionName>
nmcli con up <connectionName>
验证cat /etc/resolv.conf
答案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
最后,无线连接将会丢失。您必须重新连接,然后就好了!