1 问题描述
CentOS
虚拟机无法显示本地ip
,如图:
2 尝试过的方法
参考过此处的解决方法,把网卡配置中的ONBOOT
修改为YES
:
但是原来的网卡配置也是YES
,所以修改的方法没有用,尝试了一下重启网卡服务:
systemctl restart network
ip
还是无法正常显示。
3 原因
查了一下资料,常用的Linux
的网络管理服务有两个:
-
network
服务 -
NetworkManager
服务
前者是基础服务,通常在服务器中使用,当然在图形界面也有,通常使用命令行配置,而NetworkManager
一般在图形界面安装,是为了方便ip
的配置,要注意的是两个之中只能有一个生效,因此需要选择一个禁用。在笔者这种情况下应该是两者冲突了,导致不能正常显示本地ip
,可以使用
systemctl status network
systemctl status NetworkManager
查看两服务状态,如果不是服务冲突的话应该就是配置出错了的原因。
4 解决方案
4.1 使用network
先把NetworkManager
禁用:
systemctl stop NetworkManager
systemctl status NetworkManager
禁用之后重启network
:
systemctl restart network
这样就能显示出本地ip
了。
若还是不能显示请检查网卡配置,在/etc/sysconfig/network-scripts
下,笔者的是/etc/sysconfig/network-scripts/ifcfg-ens33
。
4.2 使用NetworkManager
使用NetworkManager
的话先把network
禁用:
systemctl stop network
systemctl status network
再把NetworkManager
启动:
systemctl start NetworkManager
接下来使用nmcli
进行操作。
4.2.1 托管状态
首先查看托管状态:
nmcli n
若显示disabled
:
开启即可:
nmcli n on
4.2.2 设备
查看设备:
nmcli d
笔者机器上显示如下:
接下来创建连接,有两种方式创建:动/静态ip
:
# 静态ip方式创建connection
nmcli c add type ethernet con-name connect_name_1 ifname ens33 ipv4.addr 192.168.126.151/24 ipv4.gateway 192.168.126.1 ipv4.method manual
# 动态ip方式创建connection
nmcli c add type ethernet con-name connect_name_2 ifname ens33 ipv4.method auto
4.2.3 静态ip
方式
nmcli c add type ethernet con-name connect_name_1 ifname ens33 ipv4.addr 192.168.126.151/24 ipv4.gateway 192.168.126.1 ipv4.method manual
参数说明:
-
nmcli c add
:创建连接 -
type
:连接类型 -
con-name
:连接名称 -
ifname
:网卡名 -
ipv4.addr
:ipv4
静态ip
,这里是192.168.126.151
,24
表示子网掩码 -
ipv4.gateway
:网关,把最后ip
最后置1
即可,这里是192.168.126.1
-
ipv4.method
:后面的参数manual
表示配置静态ip
,注意一下该参数很重要,因为默认为auto
,也就是如果不指定该参数会出现两个ip
,一个静态+一个动态
创建好连接之后应该就能显示ip
了:
就是刚才手动指定的静态ip
,如果还是不能显示ip
可以手动连接设备:
nmcli d connect ens33
4.2.4 动态ip
方式
nmcli c add type ethernet con-name connect_name_2 ifname ens33 ipv4.method auto
参数与上面的基本一致,区别就是auto
,表示动态方式配置ip
,这样就配置完成了,可以直接查看ip
:
如果还是没有ip
可以尝试手动连接设备:
nmcli d connect ens33