[Блог](https://tuna.am/blog.md)|[Релизы tuna-cli](https://tuna.am/blog/tags/releases)

# Поддержка PROXY Protocol в TCP туннелях

28 января · 2 мин

В [консольном клиенте](https://tuna.am/docs/guides/install/install-cli.md) **tuna** добавлена поддержка [PROXY Protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) для TCP туннелей. Теперь вы можете передавать оригинальный IP-адрес и порт клиента напрямую вашему приложению.

```shell
$ 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

```

[Перейти к документации](https://tuna.am/docs/tunnels/tcp.md#proxy-protocol)

## Зачем нужен PROXY Protocol?

При использовании туннелей ваше приложение видит подключения от туннельного сервера, а не от реального клиента. PROXY Protocol решает эту проблему — он передаёт оригинальный IP и порт клиента в заголовке соединения, что позволяет:

* Вести корректные логи подключений с реальными IP-адресами
* Применять правила контроля доступа на уровне приложения
* Собирать точную аналитику по географии пользователей

## Новый флаг

В команде `tuna tcp` появился новый флаг `--proxy-protocol`, принимающий версию протокола:

| Значение | Формат    | Описание                                        |
| -------- | --------- | ----------------------------------------------- |
| `1`      | Текстовый | Человекочитаемый формат, легко отлаживать       |
| `2`      | Бинарный  | Более эффективный, рекомендуемый для продакшена |

## Примеры использования

### Базовый пример

```shell
tuna tcp 8443 --proxy-protocol=1
# или с переменной окружения
TUNA_PROXY_PROTOCOL=1 tuna tcp 8443

```

### Minecraft сервер

Некоторые сборки игровых серверов, например [Velocity](https://docs.papermc.io/velocity/configuration/#advanced-section), поддерживают PROXY Protocol. Включите его в конфиге игры и в клиенте tuna:

```shell
tuna tcp 45678 --proxy-protocol=2

```

## Совместимость

PROXY Protocol широко поддерживается популярным серверным ПО:

* **Haproxy** — поддерживает обе версии, определяет автоматически
* **Nginx** — поддерживает обе версии, определяет автоматически
* **Envoy** — поддерживает обе версии
* Многие базы данных и приложения через прокси-слой

> **Подсказка.** Если вы не уверены какую версию выбрать — используйте версию `2`. Бинарный формат эффективнее и является рекомендуемым в большинстве случаев.

## Обновление

Для обновления следуйте [инструкции](https://tuna.am/docs/guides/update.md).

## Оставьте отзыв

Если вам нравится пользоваться Tuna, или наоборот вы недовольны чем либо, то пожалуйста [оставьте отзыв](https://my.tuna.am/?show_feedback=1).

![](/blog/img/2024-08-22/feedback.gif)

## Новости

Анонсы новых функций и статей публикуем в [Telegram-канале](https://t.me/tuna_am). Подписывайтесь, чтобы ничего не пропустить.

## Помощь

Мы ценим наших пользователей и детально изучаем все обращения, если у вас возникли проблемы с tuna – обязательно свяжитесь с нами одним из способов:

* [Электронная почта](mailto:info@tuna.am)
* [Telegram сообщество](https://telegram.me/+Kgbtt0_gJwI5ZmEy)

Категории: [Релизы tuna-cli](https://tuna.am/blog/tags/releases)

[← новееНовые названия тарифов](https://tuna.am/blog/tariff-rename.md)[старее →🆕 Мониторы - новый функционал](https://tuna.am/blog/monitors.md)
