Windows 虚拟机的网卡已经切换成桥接模式并且可以正常上网,可以访问局域网中的所有设备,但是主机和局域网中的其它设备不能访问虚拟机。例如虚拟机可以 ping 通主机,但主机不能 ping 通虚拟机:
PS C:\Users\ym> ping 192.168.0.104
正在 Ping 192.168.0.104 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
192.168.0.104 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
许多文章推荐的做法是直接把防火墙关掉。但这样会有安全隐患。如果你有强迫症,可以按照这篇文章去设置。这种是新建防火墙入站规则的做法,不会把防火墙彻底关掉。
首先在虚拟机设置中将网络适配器设置为桥接模式。(设置完成后建议重启)
然后打开虚拟机,搜索“高级安全 Windows Defender 防火墙”
打开高级安全 Windows Defender 防火墙后,新建入站规则。
规则类型选择自定义。
程序选择所有程序。
协议和端口 - 协议类型选择任何。(如果想限定协议类型使得虚拟机更安全,例如限定使用 TCP 连接并指定端口,可以修改为你所需要的设置)
作用域:在“此规则应用于哪些远程 IP 地址”中,选择“使用下列 IP 地址”,点击“添加”按钮,选择“预定义计算机集”,下拉选中“本地子网”,点击确定。(如果想限定可以连接至虚拟机的设备的 IP 地址,可以选择更严格的选项)
操作选择允许连接。
配置文件可以全选域、专用和公用。如果对这些网络有基本了解,可以取消掉你认为不安全的网络(例如公用)。
最后填写自定义的名称和描述,用以标识入站规则。
最后点击完成,即可让虚拟机被局域网中的其它设备访问了。
这时尝试主机 ping 一下虚拟机,能 ping 通:
PS C:\Users\ym> ping 192.168.0.104
正在 Ping 192.168.0.104 具有 32 字节的数据:
来自 192.168.0.104 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.0.104 的回复: 字节=32 时间=1ms TTL=128
来自 192.168.0.104 的回复: 字节=32 时间<1ms TTL=128
来自 192.168.0.104 的回复: 字节=32 时间<1ms TTL=128
192.168.0.104 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms