Skip to main content
Aviatrix DCF enforces firewall policies on Kubernetes workloads by their pod source IP. When worker nodes apply Source NAT (SNAT) to pod traffic, the pod IP is replaced with the node IP before the packet leaves the cluster — DCF then sees only the node, not the pod, and the policy targeting individual workloads breaks. You must disable SNAT on worker nodes regardless of cloud provider. Use the cloud-specific instructions below.
EKS uses the AWS VPC CNI plugin (aws-node DaemonSet). Set the AWS_VPC_K8S_CNI_EXTERNALSNAT environment variable to true.Terraform — using terraform-aws-modules/eks/aws:
Or imperatively via kubectl:
For background, see Enable outbound internet access for Pods in the AWS documentation.

Verification

Verifying SNAT-disabled directly from inside the cluster is awkward. With SNAT off, the pod’s source IP is private; an outbound curl from the pod will not reach an external echo service through the Aviatrix data plane the way a node-source-IP packet would. The cleanest verification is to route traffic from a pod through an Aviatrix Spoke Gateway with DCF and flow logging enabled, then check the source IP recorded in the DCF flow logs. The IP should match the pod IP, not the node IP. If pod IPs and node IPs are showing the same address in flow logs, SNAT is still active.