在VMware上安装RedHat Enterprise Linux8.4之后,进行注册时,发现设定为NAT模式的虚拟主机无法连接Internet。
# subscription-manager register --username=<UserName> --password=<Password> --auto-attach
Registering to: subscription.rhsm.redhat.com:443/subscription
Network error, unable to connect to server. Please see /var/log/rhsm/rhsm.log for more information.
在VMware上安装RedHat Enterprise Linux的方法,参照VMware Workstation上安装RedHat8。
开始调查
虚拟主机的网络设定
确认该虚拟机,确实设定为NAT模式。选择虚拟机之后右击后点击菜单里的”设置”。
可以确认到,网络适配器设定为NAT模式。
确认虚拟机的IP地址
使用ifconfig命令查看,当前的IP设定。
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:d2:db:11 txqueuelen 1000 (Ethernet)
RX packets 574 bytes 39298 (38.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 256 bytes 21664 (21.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 256 bytes 21664 (21.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:81:e9:a9 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
发现ens160接口没有IP地址。
网络接口配置文件
/etc/sysconfig/network-scripts/ifcfg-ens160文件是配置接口相关设定文件,在这里发现ONBOOT被设定为no(ONBOOT=no)。
# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=c800b278-bfca-4a32-9a9d-fa47b15b36d9
DEVICE=ens160
ONBOOT=no <- 把no改为yes,使OS启动时激活该接口
使用vi命令先把ONBOOT选项从no改为yes。
到此找到RHEL服务器启动之后,无法上网的原因了。
重启network服务
network服务
当执行”systemctl restart network”命令时,居然提示network服务不存在。
# systemctl restart network
Failed to restart network.service: Unit network.service not found.
nmcli命令(RHEL8)
简单查了一下,从RHEL8开始需要nmcli命令指定接口进行启动。使用”nmcli device”命令查看当前的连接情况,ens160没有任何连接。
# nmcli device
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected (externally) virbr0
ens160 ethernet disconnected --
lo loopback unmanaged --
virbr0-nic tun unmanaged --
使用”nmcli con up ens160″命令进行连接。
# nmcli con up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
再次执行”nmcli device”和ifconfig命令查看连接及接口设定状态。
# nmcli device
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
virbr0 bridge connected (externally) virbr0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.149 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fed2:db11 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:db:11 txqueuelen 1000 (Ethernet)
RX packets 648 bytes 45313 (44.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 5294 (5.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
~ 省略 ~
重启主机确认
最后重启虚拟主机,确认启动后是否能够正常连接Internet。重启细末主机后执行如下命令进行确认。
执行nmcli device命令
确认ens160接口是否正常连接。
[root@moto001 ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
virbr0 bridge connected (externally) virbr0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
执行ifconfig命令
执行ifconfig命令确认ens160接口是否被分配了IP地址。
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.149 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::20c:29ff:fed2:db11 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:db:11 txqueuelen 1000 (Ethernet)
RX packets 29963 bytes 44348686 (42.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6828 bytes 409997 (400.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
~ 省略 ~
ping外网IP地址
使用ping命令检查是否能连接外网,这里的8.8.8.8是谷歌提供的DNS服务器。
[root@moto001 ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=59.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=57.10 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=61.6 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 57.951/59.655/61.609/1.529 ms
小结
每次的OS版本升级都会有一些细微的变化,当无法连接Internet时进行了如下确认。
- 虚拟主机的网络适配器的配置是否正确
- 使用ifconfig命令确认接口的IP地址
- 确认/etc/sysconfig/network-scripts目录下的接口设定文件
- RHEL8开始需要使用nmcli命令管理(启动及停止)网络接口