Why Inter-VPC Traffic Diverges
Dead Paths vs Asymmetric State Drops
eth0, but the server's own routing table indicates that the best path back to the source IP address is out through eth1, strict RPF considers the packet spoofed and drops it inside the kernel before it even reaches the listening socket.
For engineers dealing with MTU issues over transit links, this behavior is often confused with fragmentation problems. You can explore how MTU black holes behave under transit gateways in our notes on debugging IPsec MTU black holes across cloud transit gateways.
Capturing Bidirectional Evidence
traceroute or curl from the source host only shows that the connection fails; it cannot tell you if the request failed to arrive or if the response failed to return. You must collect packet captures concurrently on both the source and the destination.
To demonstrate this clearly, set up two terminals: one logged into the source instance (for example, 10.0.1.10) and one on the destination instance (10.10.2.20). Start a capture on both machines filtering specifically for the target port.
BASH
# On the destination host (10.10.2.20):
sudo tcpdump -nn -i any port 3306
# On the source host (10.0.1.10), in a separate terminal:
sudo tcpdump -nn -i any port 3306nc (netcat) or curl:
BASH
nc -zvw3 10.10.2.20 3306-
The Dead Path Signature: On the source host, you see multiple
[SYN]packets sent with increasing backoff intervals (retransmissions). On the destination host, the capture stays completely blank. The packets are disappearing somewhere in the transit fabric before reaching the target subnet. -
The Asymmetric Stateful Drop Signature: On the source host, you see repeated
[SYN]packets. But on the destination host, you see the incoming[SYN]arrive, followed immediately by the destination host sending a[SYN, ACK]. However, that[SYN, ACK]never appears on the source host's packet capture. The outbound route from the destination back to the source is dropping the response. -
The Local Host RPF Drop Signature: On the destination host,
tcpdumpshows the incoming[SYN], but the destination never emits a[SYN, ACK]at all, even though a service is actively listening on that port. This usually means the Linux kernel dropped the packet during ingress route verification.
Checking Kernel Reverse Path Forwarding
net.ipv4.conf.
You can inspect the RPF settings across all interfaces with a single read-only command:
BASH
sysctl -a 2>/dev/null | grep '\.rp_filter'0(Disabled): No source address verification. The kernel processes the packet regardless of which interface it arrived on.1(Strict Mode): The incoming packet is dropped if the interface it arrived on is not the best reverse path to the source IP, according to the local routing table.2(Loose Mode): The incoming packet is accepted as long as the source IP is reachable through any interface on the system, even if it is not the interface the packet arrived through.
eth1 but default egress traffic routes out through a centralized NAT gateway on eth0—strict mode (1) will silently discard valid incoming connections. Changing the interface to loose mode (2) allows the host to process asymmetric flows while still offering basic protection against entirely unroutable source addresses.
What Is Easy to Misunderstand
traceroute from host A to host B, you are only discovering the forward path of TTL-expired messages. The routers returning the ICMP Time Exceeded packets generate their own return paths back to host A. A clean traceroute in one direction tells you nothing about whether host B's TCP responses can follow that same path in reverse.
Finally, support engineers often assume that if a network partition occurs inside a cloud provider's backbone, transit routes will automatically withdraw. In reality, SDN control planes can maintain static transit gateway attachments even when the underlying data plane spine between two availability zones or regions is impaired. The route table entry remains active, pointing traffic into a black hole or forcing partial failovers that break flow symmetry.
Testing the Behavior Safely
iptables to simulate an asymmetric stateful drop:
BASH
# Simulate a stateful firewall dropping out-of-order replies on the test receiver
sudo iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j DROPtcpdump on both ends. You will observe the exact pattern discussed earlier: the client sends repeated SYNs, the receiver receives them, but the output rule drops the SYN-ACK before it hits the wire. Once you learn to recognize that signature in a safe environment, you will instantly identify asymmetric routing drops when real cross-VPC links misbehave.