Outbound routing blackhole from EU region to AS212238 (Bunny CDN 79.127.0.0/16)
ntsantsarov
PROOP

a month ago

Our service running in Railway's EU region cannot open TCP connections to Bunny

CDN edge IPs in 79.127.0.0/16 (AS212238, "CDNEXT", Paris). SYN packets are

silently dropped — connect() times out (ETIMEDOUT), not refused or reset. The

same destinations are reachable from every other network we tested. Moving the

service to a US region immediately and fully resolved it, so this looks like a

routing/peering issue specific to the EU region's egress. But staying on US region is not an option for us as it's way slower for our users, we must move back to EU as soon as possible.

$20 Bounty

1 Replies

Railway
BOT

a month ago

This thread has been opened as a public bounty so the community can help solve it. The thread and any further activity are now visible to everyone.

Status changed to Open Railway about 1 month ago


youkamii
FREETop 5% Contributor

15 days ago

The region A/B test is the strongest evidence here: the same application and destination work from a US Railway region but time out from EU West, and the failure is a TCP connect timeout rather than an HTTP or TLS error. That rules out the application protocol and points to either destination-side filtering of the EU egress range or an IPv4 route/peering failure between Railway EU West and the destination network.

There is currently only one Railway EU region (EU West Metal in Amsterdam), so there is no second Railway EU region to move to. There are still two useful in-region tests that may provide a working path and will make the escalation actionable.

First, check whether the actual Bunny hostname has IPv6 and compare both address families from the affected deployment:

host='<actual-bunny-hostname>'

getent ahostsv4 "$host"
getent ahostsv6 "$host"
curl -4 -sv --connect-timeout 10 "https://$host/" -o /dev/null
curl -6 -sv --connect-timeout 10 "https://$host/" -o /dev/null

If the hostname has an AAAA record and IPv6 works, enable Settings -> Networking -> Outbound IPv6, redeploy, and use the IPv6-capable endpoint as the temporary EU path. Railway keeps IPv4 enabled when outbound IPv6 is enabled.

Second, if the service is on Pro, enable Static Outbound IPs and redeploy once. Record the source IPv4 before and after, then repeat the IPv4 connect test:

printf 'egress='; curl -4fsS --max-time 10 https://icanhazip.com
curl -4 -sv --connect-timeout 10 "https://$host/" -o /dev/null

This is a useful diagnostic even though a static IP is not guaranteed to be dedicated:

  • If the new static egress IP works, keep it as the mitigation and give Bunny/Railway the old and new egress IPs. The old NAT range was likely being filtered or taking a bad path.
  • If both EU egress addresses fail but the US region continues to work, the remaining fault is the EU West route/peering path. An application retry or DNS change will not repair it.
  • If IPv6 works and IPv4 fails, provide both results so Railway can focus on the IPv4 route.

For Railway's network team, provide one compact evidence set: affected deployment ID, RAILWAY_REPLICA_REGION, exact UTC timestamp, source egress IP, resolved destination IP, curl -4/curl -6 connect result, and the successful US deployment ID. Do not publish application credentials, request headers, or signed CDN URLs.

Relevant Railway documentation:

If neither IPv6 nor a changed static egress IP restores the connection, only Railway/Bunny can correct the route or filtering. The US-region success is already a valid temporary control and strong proof that this is not a general Bunny outage or application bug.


Welcome!

Sign in to your Railway account to join the conversation.

Loading...