我是在虚拟机中安装的CentOS7,采用的是桥接模式。起初CentOS内的地址是动态获取的,想把它固定下来。
按照网上查到的资料,通过修改/etc/sysconfig/network-scripts/下的配置文件,重启后网络服务,暂时能把IP地址修改了,但是配置中的DNS始终没有生效,这样就无法访问外部网络(实际上也不是不能访问,只是不能通过域名访问,比如你要ping一个外部公网上的ip地址是通的,但你要访问一个网址需要域名解析就不行了)
还有的问题是,这个虚拟机重启后,发现修改的配置文件中的设置还是没有生效,还是需要重启网络服务,折腾好久,一直不明白为什么。后来终于知道,是因为NetManager在捣鬼。
下面是转载的:https://Linux.cn/article-3977-1.html,有较大的参考价值,前面的第一种方法我试过了,对我的机器不管用,重启后依然设置无效。第二种方法是可以的。
如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网络管理器。
网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活。默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态。
使用下面的命令来验证网络管理器服务的状态:
- $ systemctl status NetworkManager.service
运行以下命令来检查受网络管理器管理的网络接口:
- $ nmcli dev status
如果某个接口的nmcli的输出结果是“已连接”(如本例中的enp0s3),这就是说该接口受网络管理器管理。你可以轻易地为某个特定接口禁用网络管理器,以便你可以自己为它配置一个静态IP地址。
下面将介绍在CentOS 7上为网络接口配置静态IP地址的两种方式,在例子中我们将对名为enp0s3的网络接口进行配置。
不使用网络管理配置静态IP地址
进入/etc/sysconfig/network-scripts目录,找到该接口的配置文件(ifcfg-enp0s3)。如果没有,请创建一个。
打开配置文件并编辑以下变量:
在上图中,“NM_CONTROLLED=no”表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理。“ONBOOT=yes”告诉我们,系统将在启动时开启该接口。
保存修改并使用以下命令来重启网络服务:
- # systemctl restart network.service
现在验证接口是否配置正确:
- # ip add
使用网络管理器配置静态IP地址
如果你想要使用网络管理器来管理该接口,你可以使用nmtui(网络管理器文本用户界面),它提供了在终端环境中配置配置网络管理器的方式。
在使用nmtui之前,首先要在/etc/sysconfig/network-scripts/ifcfg-enp0s3中设置“NM_CONTROLLED=yes”。
现在,请按以下方式安装nmtui。
- # yum install NetworkManager-tui
然后继续去编辑enp0s3接口的网络管理器配置:
- # nmtui edit enp0s3
在下面的屏幕中,我们可以手动输入与/etc/sysconfig/network-scripts/ifcfg-enp0s3中所包含的内容相同的信息。
使用箭头键在屏幕中导航,按回车选择值列表中的内容(或填入想要的内容),最后点击屏幕底部右侧的确定按钮。
最后,重启网络服务。
- # systemctl restart network.service
好了,现在一切都搞定了。
另外,纯粹修改DNS的话,下面这个方发是永久生效的:
#显示当前网络连接 #nmcli connection show NAME UUID TYPE DEVICE eno1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eno1 #修改当前网络连接对应的DNS服务器,这里的网络连接可以用名称或者UUID来标识 #nmcli con mod eno1 ipv4.dns "114.114.114.114 8.8.8.8" #将dns配置生效 #nmcli con up eno1