- From the Network, to the CIDRs that routes send to the tunnel, and to its private services Preview.
- From the internet, to its public hostnames Preview.
From the User’s Network
Not an Interface, a Link, or a Route
Starting the tunnel process adds no interface and no route to the tunnel host. The host’s interfaces and routing table read the same before and aftertelnyx-edge tunnel run:
Tunnel host
Output
No Route Back to Telnyx
Hosts behind the tunnel need no route to Telnyx either. Every connection reaches them from the tunnel host, so their replies stay within the user’s network. The web service’s routing table holds only its own subnet and the site’s default route:10.20.3.7
Output
200, through the tunnel host 10.20.0.11.
No Listening Port
The tunnel opens no port within the user’s network, so there is nothing to scan or attack, from the internet or from the site’s other hosts. A scan ofdc1-tunnel-a from dc1-tunnel-b, while both run the tunnel process, finds every port closed:
Another host
Output
No Way Into Telnyx
No host within the user’s network, the tunnel host included, can open a connection through the tunnel toward the Network. A WireGuard peer is a host on the Network. It sends packets for the function’s address,172.27.0.2, into its WireGuard interface:
WireGuard peer
Output
Tunnel host
Output
10.20.3.7 through the tunnel.
No Address of Its Own
The tunnel has no IP address. Only the tunnel host has one. On the Network, the route names the tunnel as its next hop, where an attachment’s route names the attachment:Workstation
Output
From the Network
No IP Packets
The tunnel process re-originates each TCP connection. No packet from the Network crosses the tunnel, so routing protocols, other IP protocols, and multicast never reach the hosts behind it. A capture on the web service during two function requests shows two connections from the tunnel hosts, and no packet from the Network’s subnet:10.20.3.7
Output
[S] line opens a connection from a tunnel host. None of the 26 packets comes from 172.27.0.0/24.
Not the Client’s Address
The destination sees the tunnel host, never the client’s address on the Network. The function is172.27.0.2 on acme-prod, and the web service logs its request from the tunnel host 10.20.0.10:
10.20.3.7 access log
Nothing That Is Not Declared
Telnyx asks the tunnel process to dial only the destinations declared for the tunnel. The tunnel host reaches10.30.0.7:8080:
Tunnel host
Output
10.30.0.0/24 to the tunnel, so the function cannot reach it:
Function
TypeError: fetch failed once its connect timeout passes. Telnyx never sends it to the tunnel, so neither tunnel process receives it.