Menu

TCP tunnels

tnnl tcp <port> exposes a raw TCP service — SSH, Postgres, Redis, game servers, anything — on a dedicated public port.

$ tnnl tcp 22
  Tunnel ready:  tnnl.uz:2222

Public ports

By default the server picks a free public port and reports it, for example tnnl.uz:2222. To request a specific port, pass --remote-port N; it is granted if that port is free. Each TCP tunnel uses its own public port, unlike HTTP tunnels, which share port 443.

Opaque passthrough

A TCP tunnel is an opaque byte passthrough — there is no request parsing. Because of that, request inspection does not apply to TCP tunnels: only connection and byte counters appear in tnnl tunnels and in the dashboard.

Example: SSH

Expose your SSH daemon, then connect using the reported port:

$ tnnl tcp 22
  Tunnel ready:  tnnl.uz:2222
$ ssh -p 2222 user@tnnl.uz

Staying connected

TCP tunnels auto-reconnect if the connection drops. Press Ctrl-C to stop the tunnel.

Limits
Each tunnel counts toward your per-account limit. See Limits & permissions.