一种情况:192.168.0.0/16 的本地网络被分成多个子网,并且路由器已到位。Hyper-V 托管的虚拟机位于 192.168.X.0/24 子网中。任务是限制除给定列表之外的所有主机对此 VM 的访问,该列表包含来自 192.168.Y.0/24 子网的 IP 地址,其中 Y 与 X 不同,并且对 192.168.Y.0/24 子网的网络访问被路由。VM 的网络配置如下:
IPv4 Address: 192.168.X.10
Subnet mask: 255.255.255.0
Default gateway: 192.168.X.1
因此我对 Hyper-V 端口 ACL 进行了以下更改:
Add-VMNetworkAdapterAcl -vm $vm -RemoteIPAddress 192.168.Y.Z -action allow -direction both
Add-VMNetworkAdapterAcl -vm $vm -RemoteIPAddress any -action deny -direction both
令我惊讶的是,ping 192.168.Y.Z
虚拟机显示“目标主机无法访问”,从该主机 ping 虚拟机也返回相同的结果。另一方面,如果我向192.168.X.Z
同一台虚拟机添加 ACL 条目,则更改允许虚拟机轻松查看主机。
答案1
解决方案是为虚拟机的默认网关添加一个 ACL 条目,或者,如果是到 192.168.Y 子网的自定义路由,则添加路由目的地的 IP 地址,以允许数据包被路由到远程主机。
Add-VMNetworkAdapterAcl -vm $vm -RemoteIPAddress 192.168.X.1 -action allow -direction both
遗憾的是,任何有关配置 Hyper-V ACL 的教程中都没有提到这一点,可能是因为这些教程中的 LAN 尽可能简单,并且不包含路由段。