默认 VPC NAT 策略规则¶
用途¶
默认 VPC 下的 Overlay 子网,打开 natOutgoing 开关时,Subnet 下的所有 Pod 访问外网都需要做 SNAT 成节点的 IP,但是有些场景我们并不希望子网内所有 Pod 访问外网都做 SNAT。
因此 NAT 策略就是为了提供一个接口让用户决定子网内的哪些 CIDR 或者 IP 访问外网做 SNAT。
使用方法¶
在 subnet.Spec 中开启 natOutgoing 开关, 并且添加字段 natOutgoingPolicyRules 如下:
spec:
natOutgoing: true
natOutgoingPolicyRules:
- action: forward
match:
srcIPs: 10.0.11.0/30,10.0.11.254
- action: nat
match:
srcIPs: 10.0.11.128/26
dstIPs: 114.114.114.114,8.8.8.8
以上案例表示有两条 NAT 策略规则:
- 源 IP 是 10.0.11.0/30 或者 10.0.11.254 的报文访问外网时不会做 SNAT。
- 源 IP 是 10.0.11.128/26 并且目的 IP 是 114.114.114.114 或者 8.8.8.8 的报文访问外网时会做 SNAT。
字段描述:
action:满足 match 对应条件的报文,会执行的 action, action 分为两种 forward 和 nat ,forward 表示报文出外网不做 SNAT, nat 表示报文出外网做 SNAT。 没有配置 natOutgoingPolicyRules 时,默认情况报文仍然是做 SNAT。
match:表示报文的匹配段,匹配段有 srcIPs 和 dstIPs, 这里表示从子网内到外网方向上的报文的源 IP 和 目的 IP。match.srcIPs 和 match.dstIPs 支持多个 CIDR 和 IP,之间用逗号间隔。
如果出现多个 match 规则重叠,则按照 natOutgoingPolicyRules 数组顺序进行匹配,最先被匹配的 action 会被执行。