Skip to main content

PROXY Protocol support in TCP tunnels

· 2 min read

The console client tuna has added support for PROXY Protocol for TCP tunnels. Now you can pass the original client IP address and port directly to your application.

$ tuna tcp 54321 --proxy-protocol=2
INFO[22:08:58] Welcome to Tuna
INFO[22:09:00] Forwarding tcp://ru.tuna.am:22347 -> 127.0.0.1:54321

Go to documentation

Why do you need PROXY Protocol?

When using tunnels, your application sees connections from the tunnel server rather than from the real client. PROXY Protocol solves this problem — it passes the original client IP and port in the connection header, which allows you to:

  • Keep correct connection logs with real IP addresses
  • Apply access control rules at the application level
  • Collect accurate analytics on user geography

New flag

The tuna tcp command has a new --proxy-protocol flag that accepts the protocol version:

ValueFormatDescription
1TextHuman-readable format, easy to debug
2BinaryMore efficient, recommended for production

Usage examples

Basic example

tuna tcp 8443 --proxy-protocol=1
# or with an environment variable
TUNA_PROXY_PROTOCOL=1 tuna tcp 8443

Minecraft server

Some game server builds, for example Velocity, support PROXY Protocol. Enable it in the game config and in the tuna client:

tuna tcp 45678 --proxy-protocol=2

Compatibility

PROXY Protocol is widely supported by popular server software:

  • Haproxy — supports both versions, detects automatically
  • Nginx — supports both versions, detects automatically
  • Envoy — supports both versions
  • Many databases and applications via a proxy layer
tip

If you're not sure which version to choose — use version 2. The binary format is more efficient and is the recommended option in most cases.

Updating

To update, follow the instructions.

Leave feedback

If you enjoy using Tuna, or on the contrary you are not happy with something, please leave feedback.

Help

We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways: