网络隔离和安全性
适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016
使用网络命名空间隔离
每个容器终结点都放在其自己的网络命名空间中。 管理主机虚拟网络适配器和主机网络堆栈位于默认网络命名空间中。 为了在同一主机上的容器之间强制实施网络隔离,将为每个 Windows Server 容器创建一个网络命名空间,并在 Hyper-V 隔离下运行的容器将安装容器的网络适配器。 Windows Server 容器使用主机虚拟网络适配器连接到虚拟交换机。 Hyper-V 隔离使用综合 VM 网络适配器, (不向实用工具 VM 公开,) 附加到虚拟交换机。
运行以下 Powershell cmdlet 以获取协议堆栈中的所有网络隔离舱:
Get-NetCompartment
网络安全性
根据所使用的容器和网络驱动程序,端口 ACL 由 Windows 防火墙和 Azure 虚拟筛选平台 (VFP) 的组合强制执行。
Windows Server 容器
以下值使用 Windows 主机的防火墙, (网络命名空间) 和 VFP:
- 默认出站:全部允许
- 默认入站:允许所有(TCP、UDP、ICMP、IGMP)未经请求的网络流量
- 拒绝不是来自这些协议的所有其他网络流量
注意
在 Windows Server 版本 1709 和 Windows 10 Fall Creators Update 之前,默认入站规则为 DENY all。 运行这些较旧版本的用户可以创建入站 ALLOW 规则,) docker run -p
(端口转发。
Hyper-V 隔离
在 Hyper-V 隔离中运行的容器具有自己的隔离内核,因此,使用以下配置运行自己的 Windows 防火墙实例:
- 在实用工具 VM) 和 VFP 中运行的 Windows 防火墙 (中,默认允许所有。
Kubernetes pod
在 Kubernetes Pod 中,首先创建一个将终结点附加到的基础结构容器。 属于同一 Pod 的容器(包括基础结构容器和辅助角色容器)共享一个公用网络命名空间 (,例如相同的 IP 和端口空间) 。
自定义默认端口 ACL
如果要修改默认端口 ACL,请在更改端口之前查看 主机网络服务 主题。 需要更新以下组件中的策略:
注意
对于透明和 NAT 模式下的 Hyper-V 隔离,目前无法重新配置默认端口 ACL,下表中的“X”反映了该端口 ACL:
网络驱动程序 | Windows Server 容器 | Hyper-V 隔离 |
---|---|---|
透明 | Windows 防火墙 | X |
NAT | Windows 防火墙 | X |
L2Bridge | 推送、请求和匿名 | VFP |
L2Tunnel | 推送、请求和匿名 | VFP |
覆盖 | 推送、请求和匿名 | VFP |