网络隔离和安全性

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

使用网络命名空间隔离

每个容器终结点都放在其自己的网络命名空间中。 管理主机虚拟网络适配器和主机网络堆栈位于默认网络命名空间中。 为了在同一主机上的容器之间强制实施网络隔离,将为每个 Windows Server 容器创建一个网络命名空间,并在 Hyper-V 隔离下运行的容器将安装容器的网络适配器。 Windows Server 容器使用主机虚拟网络适配器连接到虚拟交换机。 Hyper-V 隔离使用综合 VM 网络适配器, (不向实用工具 VM 公开,) 附加到虚拟交换机。

使用综合 VM 网络适配器实现 Hyper-V 隔离

运行以下 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 防火墙 (中,默认允许所有。

使用防火墙实现 Hyper-V 隔离

Kubernetes pod

Kubernetes Pod 中,首先创建一个将终结点附加到的基础结构容器。 属于同一 Pod 的容器(包括基础结构容器和辅助角色容器)共享一个公用网络命名空间 (,例如相同的 IP 和端口空间) 。

Kubernetes Pod 网络

自定义默认端口 ACL

如果要修改默认端口 ACL,请在更改端口之前查看 主机网络服务 主题。 需要更新以下组件中的策略:

注意

对于透明和 NAT 模式下的 Hyper-V 隔离,目前无法重新配置默认端口 ACL,下表中的“X”反映了该端口 ACL:

网络驱动程序 Windows Server 容器 Hyper-V 隔离
透明 Windows 防火墙 X
NAT Windows 防火墙 X
L2Bridge 推送、请求和匿名 VFP
L2Tunnel 推送、请求和匿名 VFP
覆盖 推送、请求和匿名 VFP