为CentOS 7配置静态IP地址及遇到的问题解决策略
1. 为CentOS 7配置静态IP地址的两种方法
使用下面的命令来验证网络管理器服务的状态:
1. $ systemctl status NetworkManager.service
运行以下命令来检查受网络管理器管理的网络接口:
1. $ nmcli dev status
如果某个接口的nmcli的输出结果是“已连接”(如本例中的enp0s3),这就是说该接口受网络管理器管理。你可以轻易地为某个特定接口禁用网络管理器,以便你可以自己为它配置一个静态IP地址。
下面将介绍在CentOS 7上为网络接口配置静态IP地址的两种方式,在例子中我们将对名为enp0s3的网络接口进行配置。
1.1 不使用网络管理配置静态IP地址
进入/etc/sysconfig/network-scripts目录,找到该接口的配置文件(ifcfg-enp0s3)。如果没有,请创建一个。
打开配置文件并编辑以下变量:
在上图中,“NM_CONTROLLED=no”表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理。“ONBOOT=yes”告诉我们,系统将在启动时开启该接口。
保存修改并使用以下命令来重启网络服务:
1. # systemctl restart network.service
现在验证接口是否配置正确:
1. # ip add
1.2 使用网络管理器配置静态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
2. 遇到的问题及解决策略
当我按照上述方法去配置静态IP时发现了几个问题,总的来说上述方法正确,但有几点可能会出现问题,在此我写了出来,希望遇到相关问题的朋友可以注意一下。
2.1 当我按照上述1.1配置时发现ifcfg-enp0s3文件当中没有IPADDR,NETMASK等大部分选项时怎么办?
策略:这是由于你的IP配置可能设置成了自动获取。你可以用1.2中的方法来配置。
2.2 按照上述方法配置后发现重启网络服务总是失败出现错 误“Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for deta”怎么办?
策略:使用systemctl status network查看服务状态,得到如下错误信息:
# systemctl status network
network.service - LSB: Bring up/downnetworking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: failed (Result: exit-code) since Sun 2014-11-23 22:09:08 EST;15min ago
Process: 597 ExecStart=/etc/rc.d/init.d/network start (code=exited,status=1/FAILURE)
Nov 23 22:09:07 hdcoe02 network[597]:Bringing up loopback interface: Couldnot load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Nov 23 22:09:07 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Nov 23 22:09:08 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Nov 23 22:09:08 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Nov 23 22:09:08 hdcoe02 network[597]:[ OK ]
Nov 23 22:09:08 hdcoe02 network[597]:Bringing up interface enp0s25: Error:Connection activation failed: Connection 'enp0s25' is not available on thedevice enp0s25 at this time.
Nov 23 22:09:08 hdcoe02 network[597]:[FAILED]
Nov 23 22:09:08 hdcoe02 systemd[1]:network.service: control process exited, code=exited status=1
Nov 23 22:09:08 hdcoe02 systemd[1]: Failedto start LSB: Bring up/down networking.
Nov 23 22:09:08 hdcoe02 systemd[1]: Unitnetwork.service entered failed state.
从错误提示“Error: no device found for connection 'eth0'”可以确定是配置文件eth0的问题,打开查看/etc/sysconfig/network-scripts/ifcfg-eth0文件发现其中的MAC地址和ifconfig命令输出的MAC地址不一样,具体如下所示:
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
HWADDR=1A:E9:47:A5:75:C8
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPADDR=192.168.1.79
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8
NAME=eth0
UUID=ba670f0c-201a-483b-8379-c8c72c03ab27
ONBOOT=yes
[root@openstack ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.79 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8081:a6ff:fe9d:5887 prefixlen 64 scopeid 0x20<link>
ether 82:81:a6:9d:58:87 txqueuelen 1000 (Ethernet)
RX packets 3426 bytes 394042 (384.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 57 bytes 9578 (9.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
所以只需将ifcfg-enp0s3中的HWADDR变量值改为ifconfig命令里显示的MAC地址即可。
2.3 windows PING不通VM下的CENTOS虚拟机?
策略:原因:window的IP是192.168.1.106,而虚拟机的CENTOS的IP是192.168.0.11。不在同一个网段,把虚拟机的CENTOS的IP设置成192.168.1.X (X代表0-255的数字。)就可以了。
3. IP配置中的几个单词的含义
1. DEVICE=eth0//指出设备名称
2. ONBOOT=yes//是否启动应用
3. BOOTPROTO=static//启动类型 静态 (默认dhcp)
4. IPADDR=192.168.0.77//IP地址
5. NETMASK=255.255.255.0//子网掩码
6. GATEWAY=192.168.0.1//网关
以上是我配置IP时所遇到的问题以及通过搜索大量资料所找到的解决方案,并不能保证这种问题都可以这样解决。