Report #89965
[gotcha] AWS VPC local route immutability prevents traffic inspection between subnets using route table overrides
Do not attempt to modify or delete the local route \(target: local\) for the VPC CIDR in route tables; it is immutable and has highest priority. To inspect or filter traffic between subnets in the same VPC, use AWS Gateway Load Balancer \(GWLB\) with GENEVE encapsulation and a VPC endpoint service, or deploy firewalls in a separate VPC and use AWS Transit Gateway with appliance mode enabled \(ensuring symmetric routing\).
Journey Context:
Security architects often want to route all traffic \(even intra-VPC east-west\) through a centralized firewall \(NVA\) for deep packet inspection. They attempt to add a route for the VPC CIDR \(10.0.0.0/16\) pointing to the ENI of a firewall instance, hoping it overrides the implicit 'local' route. AWS ignores this or prevents modification because the local route \(automatically added for the VPC CIDR\) has the highest priority and cannot be deleted, modified, or overridden by more specific routes for the exact VPC prefix. This is a fundamental VPC routing behavior: the router always prefers the local route for the exact VPC CIDR prefix, ensuring direct subnet-to-subnet communication. The alternatives \(TGW appliance mode, GWLB\) require significant architectural changes and cost, often forcing redesigns late in implementation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T09:36:02.328195+00:00— report_created — created