Win10 Hyper-V 虚拟机网络配置避坑指南(实战经验)
1. Hyper-V网络配置的底层逻辑很多人第一次用Hyper-V创建CentOS7虚拟机时都会遇到一个魔幻现象按照教程一步步操作虚拟机死活上不了网。我当年踩这个坑时曾连续三天熬夜排查最后发现根本原因是没搞懂Hyper-V的三层网络架构。Hyper-V的网络模型可以理解为套娃结构最外层是物理网卡中间层是虚拟交换机最内层才是虚拟机网卡。当你在宿主机网络属性里勾选共享时实际上是在物理网卡和虚拟交换机之间建立了NAT转发。但CentOS7默认的网络管理器会和新生成的网卡配置文件打架这就是为什么直接删掉ifcfg-eth0反而能解决问题。实测发现Hyper-V为CentOS7生成的虚拟网卡命名规则很迷。有时是eth0有时又变成ens3。建议先用ip addr命令查看实际网卡名称再操作对应的配置文件。我遇到过最离谱的情况是网卡被命名为eth0:avahi这种带冒号的后缀会导致网络服务直接罢工。2. 虚拟交换机创建的致命细节网上90%的教程都漏掉了关键一步虚拟交换机的类型选择。在Hyper-V管理器创建虚拟交换机时会看到三个选项类型适用场景坑点提示外部虚拟机需要直连物理网络会导致宿主机WiFi断连内部仅宿主机与虚拟机互通无法访问外网专用仅虚拟机间通信完全隔离外部网络血泪教训选外部类型时一定要勾选允许管理操作系统共享此网络适配器。我有次没勾选结果宿主机自己上不了网了虚拟机自然也凉凉。更坑的是这个选项创建后无法修改只能删除重建。创建完成后建议立即在PowerShell用以下命令检查状态Get-VMSwitch | Format-Table Name, SwitchType, AllowManagementOS如果AllowManagementOS显示False赶紧删掉重来吧。3. CentOS7网卡配置的隐藏陷阱删ifcfg-eth0的方法虽然简单粗暴但会留下隐患。更规范的解决方案是先用nmcli device status查看活跃连接确认网卡名称后编辑/etc/sysconfig/network-scripts/ifcfg-对应网卡名关键参数要这样配置BOOTPROTOdhcp ONBOOTyes NM_CONTROLLEDno # 这个最重要最后执行systemctl restart NetworkManager注意CentOS7默认的NetworkManager服务会和传统network服务冲突。我的经验是直接禁用NetworkManagersystemctl stop NetworkManager systemctl disable NetworkManager chkconfig network on service network restart4. 宿主机的网络共享玄机宿主机网络共享的设置有个反直觉的设计必须先启用虚拟交换机再设置共享。操作顺序错了就会失败打开网络连接面板右键物理网卡→属性→共享勾选允许其他用户...在下拉菜单选择你创建的Hyper-V虚拟交换机重点此时要等1分钟左右让系统配置生效有个隐藏技巧在PowerShell用管理员权限运行Set-NetConnectionProfile -InterfaceIndex (Get-NetAdapter -Name 以太网).ifIndex -NetworkCategory Private把网络类型从Public改为Private能避免很多权限问题。5. 防火墙的双向拦截问题就算前面都配对了还可能被防火墙坑。需要在宿主机和虚拟机双向配置宿主机端打开高级安全Windows Defender防火墙入站规则中启用文件和打印机共享(回显请求 - ICMPv4-In)出站规则启用Hyper-V虚拟交换机管理端口CentOS7端firewall-cmd --permanent --add-servicehttp firewall-cmd --permanent --add-servicehttps firewall-cmd --permanent --add-servicessh firewall-cmd --reload我曾遇到虚拟机可以ping通外网但无法yum update的情况就是因为没放行DNS端口。后来发现需要在防火墙加一条firewall-cmd --permanent --add-port53/udp6. 排查网络问题的终极命令当所有配置都检查过还是没网时按这个顺序排查宿主机层Test-NetConnection -ComputerName www.baidu.com -Port 80虚拟交换机层Get-VMSwitch | % { Get-VMNetworkAdapter -ManagementOS -SwitchName $_.Name }虚拟机层traceroute 114.114.114.114 cat /etc/resolv.conf journalctl -xe -n 50最魔幻的一次我发现居然是Hyper-V的虚拟交换机缓存问题。解决方法是用管理员CMD执行netsh int ip reset netsh winsock reset然后重启电脑。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2520371.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!