前言
前些天在公司的服务器上安装 Centos7 虚拟机,安装后在配置其网络时,踩了不少坑,折腾了不少时间,网络上相关指导文章很多都语焉不详,总是缺少一两个步骤,可能那些博主们觉得这些步骤不太重要,所以就忽略了吧,但他们很难理解一个小白在按文章指南一步步配置之后结果失败的那种郁闷和绝望的心情,所以今天就把之前配置的每一个步骤都写出来,供大家指点,在讨论过程中共同提高水平。
Step by step 步骤
- 说明:本次步骤基于 Windows 2016
- 打开 “开始菜单 - 服务管理器 - 工具 - Hyper-v 管理器”
- 启动 Centos7 虚拟机并连接,进入 Centos7 系统
- 以 root 用户登录
User: root Pwd: ******
5.关掉防火墙
systemctl status firewalld [注:查看防火墙状态:(active (running) 即是开启状态)] sudo systemctl stop firewalld.service [注:关闭防火墙] sudo systemctl disable firewalld.service [注:关闭开机启动防火墙] 说明: sudo 是赋与普通用户 root 权限,root 用户登录不用 sudo 也行
6.配置 Centos7 网络静态IP
- 打开网卡配置
cd /etc/sysconfig/network-scripts vi ifcfg-eth0
- 主要调整修改如下配置
BOOTPROTO=static DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.232 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.1
- 说明:
- IPADDR 之前 3 项是修改值,IPADDR 及之后 3 项是新增
- 宿主机(即服务器)网卡配置:
- IPADDR:192.168.1.30
- NETMASK:255.255.255.0
- GATEWAY(默认网关):192.168.1.1
- DNS1:192.168.1.1
- 重启网络服务,使配置生效
systemctl restart network
7.关闭 Centos7 虚拟机
shutdown -h now
8.设置 Hyper-V 的虚拟网络
- 打开 Hyper-V 上右侧的虚拟机交换机管理器
- 新建虚拟网络交换机,输入名称如 MyNAT,选择外部网络,点击确定
- 勾选 允许管理操作系统共享此网络适配器,其它默认即可(可参考此文:https://www.cnblogs.com/Ganders/p/16522314.html)
- 点击应用,可看到 “主机 - 网络和Internet - 更改适配器选项” 上已经增加虚拟网卡 vEthernet (MyNAT)
- 右键 Centos7 虚拟机,选择 设置
- 选中 网络适配器,设置 虚拟交换机(S) 为上文创建的外部交换机(即 MyNAT),点击 应用(A) 按钮完成配置
- 只需配置 虚拟交换机(S),其它的不用配置
9.重新启动 Centos7 虚拟机并连接
10.确认下防火墙是否已经关闭
11.确认能否连接外网,测试通过
ping www.baidu.com
12.打开宿主机cmd窗口,尝试 ping 虚拟机的IP地址,测试通过
ping 192.168.1.232
13.打开局域网其它任意一台物理主机,尝试 ping 虚拟机的IP地址,测试通过
14.尝试远程连接,测试通过
> bash > ssh root@192.168.1.232 说明: 这个命令是Linux 的远程连接命令,需要该物理主机开启了Linux子系统,
踩坑记(问题及排查思路步骤)
- 按照以下文章的指南,以内网虚拟交换机的方式配置 Centos7 虚拟机的网络
https://www.jb51.net/article/252606.htm(Hyper-V设置虚拟机固定Ip的方法步骤)
2.一开始宿主机和局域网都可以 Ping 通 Centos7 的 IP,但连不上远程
3.后来开通防火墙端口 22 之后,就 Ping 不通 Centos7 的 IP 了
4.关闭防火墙后,有时能 Ping 通,但后面就一直也 Ping 不通了
5.在能 Ping 通的情况下(已关闭防火墙),按照以下文章的指南,修改 ssdh(/etc/ssh/sshd_config) 服务配置文件,但又Ping不通了
https://blog.csdn.net/weixin_39137153/article/details/124621589(Centos 7无法SSH远程连接及解决方法)
6.恢复 ssdh 服务配置,还是 Ping 不通 Centos7 的 IP,怀疑是 Centos7 设置的 IP 跟局域网某个机器的 IP 冲突
- 尝试关闭和禁止 NetworkManager 并重启网卡,还是不行
7.重新配置 Centos7 的 IP 为 192.168.1.232,宿主机可以 Ping 通 Centos7 的 IP,但局域网的其它机器 Ping 不通
- 注:因为内部虚拟交换机只能用于宿主机和虚拟机之间的连接,这一点网上很多文章没有讲清楚
8.重新配置 Centos7 的网络适配器为外部虚拟交换机,并将 Centos7 网络的网关和DNS配置为 192.168.1.30,重新启用 Centos7 的网络配置后,宿主机和局域网机器都可以 Ping 通 Centos7 了,也直接可以远程连接了
- 注:192.168.1.30 是物理网卡的IP(也是外部虚拟网卡的IP)
- 防火墙关闭(后续可以试下开启防火墙,看看能否连接远程)
- 不需要修改 ssdh 服务配置
9.但重新发现一个问题,Centos7 虚拟机不能连接外网
10.尝试按照网上指南,共享物理网卡到 Centos7 虚拟机配置的虚拟交换机上,但依然不行
- 按网上指南,暂时将 Centos7 的网络适配器改为内部虚拟交换机,并修改 Centos7 相应的网络配置
- 注:如果共享物理网卡到外部虚拟交换机,会改变外部虚拟交换机的IP为192.168.137.1,导致远程桌面失败
11.按照网上另一个指南,使用外部虚拟交换机和旧版网络适配器,也依然不能连接外网
https://www.likecs.com/show-204026767.html /
https://blog.csdn.net/hxw8187/article/details/80650606
(Hyper-V下Centos7连接不上外网)
12.将 Centos7 的网络适配器重新改为外部虚拟交换机,将 Centos7 的网络配置的网关和DNS改为 192.168.1.1,重启网络服务后,可能连接外网了,至此,配置结束
- 注:192.168.1.1 是物理路由的IP,可以连接外网
- 疑问:如果不设置 Centos7 的网络适配器,只修改 Centos7 的网关等网络配置,是否也可以呢?有待以后实验