# TCP туннель

## Обзор

TCP туннель позволяет предоставить доступ к любому сервису, использующему TCP-протокол, наиболее популярные примеры:

* Базы данных ([mySQL](https://tuna.am/docs/tunnels/examples/mysql.md), [PostgreSQL](https://tuna.am/docs/tunnels/examples/postgresql.md), [MSSQL](https://tuna.am/docs/tunnels/examples/mssql.md))
* ПО для удаленного доступа ([SSH](https://tuna.am/docs/tunnels/examples/ssh.md), [RDP](https://tuna.am/docs/tunnels/examples/rdp.md))
* Игровые серверы ([Minecraft](https://tuna.am/docs/tunnels/examples/minecraft.md))

к сведению

Создание TCP туннеля доступно только по [подписке](https://tuna.am/#pricing).

## Примеры

примечание

Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:

```shell
tuna tcp --help

```

Почти для всех флагов есть аналогичные [переменные окружения](https://tuna.am/docs/guides/environment-variables.md).

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

```shell
tuna tcp 5432

```

### С передачей IP-адреса

```shell
tuna tcp 10.0.0.1:5432

```

### С указанием токена

Можно указать специфичный токен через флаг `--token` или переменную окружения `TUNA_TOKEN`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna tcp 8080 --token=tt_***

```

### С указанием региона для подключения

Можно указать специфичный [регион](https://tuna.am/docs/tunnels/guides/locations.md) через флаг `--location`/`-l` или переменную окружения `TUNA_LOCATION`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna tcp 8080 --location=nl

```

### Генерация QR кода с ссылкой

При добавлении флага `--qr` для ссылки будет сгенерирован QR код и напечатан в консоли. Это может быть удобно если вы тестируете сайт на мобильном устройстве.

![](/docs/img/examples/qr.png)

### Статичный порт

В качестве значения флага `--port`/`-p` может выступать алиас или назначенный порт. Порты можно резервировать в [личном кабинете](https://my.tuna.am/tcp_ports) и после перезапуска туннеля адрес останется прежним. Подробнее о портах читайте в отдельной [инструкции](https://tuna.am/docs/tunnels/ports.md).

```shell
tuna tcp 5432 --port=postgres
tuna tcp 5432 --port=35000

```

### Ограничение доступа по подсетям IP

Вы можете определить белый список [подсетей](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D1%81%D0%B5%D1%82%D1%8C) в CIDR-формате:

```shell
tuna tcp 3389 --cidr-allow="10.0.0.1/32"

```

Либо запретить доступ из определенных подсетей:

```shell
tuna tcp 3389 --cidr-deny="10.0.0.1/32"

```

Можно комбинировать, например указать широкую сеть и вычесть частные IP:

```shell
tuna tcp 3389 --cidr-allow="10.0.0.1/24" --cidr-deny="10.0.0.33/32"

```

Также можно передавать списки через запятую:

```shell
tuna tcp 3389 --cidr-allow="10.0.0.1/24,192.168.0.1/24" --cidr-deny="10.0.0.33/32,192.168.0.33/32"

```

### Proxy Protocol

Позволяет передавать оригинальный IP и Port клиента, если ваше приложение поддерживает это. В аргументе нужно передать версию 1 или 2, что соответствует версии Proxy Protocol, 1 - текстовый , 2 - бинарный. Haproxy или Nginx поддерживают оба и определяют автоматически.

```shell
tuna tcp 8443 --proxy-protocol=1
tuna tcp 8443 --proxy-protocol=2

```
