# Точки выхода и подсети

Устройство в mesh может раздавать доступ дальше, в интернет или в локальную сеть.

* **Точка выхода** пропускает через себя интернет-трафик других устройств. Через неё можно выходить в сеть с IP-адреса офиса или сервера в нужной стране.
* **Подсети** открывают доступ к локальной сети за устройством: к принтерам, NAS и серверам офиса. Ставить клиент на каждый хост не нужно.

Раздавать могут устройства на Linux и macOS на тарифах «Профи» и «Легенда». Пользоваться точками выхода и подсетями можно на любом тарифе и любой ОС, если владелец устройства дал доступ.

## Как раздать точку выхода

На устройстве, через которое пойдёт трафик, выполните:

```shell
tuna mesh up --advertise-exit-node

```

Точка выхода сразу появится в разделе **Mesh → Точки выхода** с типом **Полная**. Служба tunad сама включит пересылку пакетов и NAT. Если пересылку блокирует Docker, firewalld или ufw, tunad попробует её разрешить, а если не сможет, предупредит об этом в выводе `tuna mesh status`.

## Как раздать подсети

Перечислите подсети через запятую:

```shell
tuna mesh up --advertise-routes=192.168.10.0/24,10.20.0.0/16

```

Подсети не должны пересекаться с адресами mesh. Весь интернет (`0.0.0.0/0`) так раздать нельзя, для этого есть `--advertise-exit-node`. Хосты в локальной сети видят соединения с адреса раздающего устройства, поэтому прописывать на них обратный маршрут не нужно.

Подсети подключаются у других устройств автоматически, флаги не нужны. Проверьте строку `Subnet routes` в выводе `tuna mesh status`, а дальше обращайтесь к хостам по их локальным адресам:

```shell
ssh admin@192.168.10.15

```

> **Warning.** Флаги `--advertise-*` нужно указывать при каждом запуске `tuna mesh up`. Запуск без них, как и `tuna mesh down`, снимает объявленные точку выхода и подсети.

## Кто может пользоваться

Доступом к точке выхода и подсетям управляет владелец устройства в разделе **Mesh → Точки выхода → Разрешения**. Ваши собственные устройства могут пользоваться ими всегда.

![Раздел «Точки выхода»: office-gw раздаёт две подсети, prod-db-1 — полную точку выхода, доступ «только владелец»](/docs/img/mesh/exit-nodes.webp)

Остальным доступ выдаётся так:

* **Разрешить всей команде** — пользоваться может любое устройство команды;
* **Разрешить** конкретному устройству — индивидуальное разрешение;
* **Запретить** конкретному устройству — запрет действует даже при включённом «Разрешить всей команде».

![Окно «Индивидуальные разрешения»: переключатель «Разрешить всей команде» и выдача разрешения или запрета устройству](/docs/img/mesh/exit-node-permissions.webp)

Кнопка **Деанонсировать** снимает с устройства точку выхода или подсети. Администратор команды не выдаёт разрешения за владельца, но может принудительно снять точку выхода или подсеть в разделе [Команда → Точки выхода](https://tuna.am/docs/mesh/team.md#routes).

Точки выхода других участников, к которым у вас есть доступ, собраны на вкладке **Чужие точки выхода**.

## Как выйти через точку выхода

Укажите устройство при запуске сети:

```shell
tuna mesh up --exit-node=prod-db-1

```

Подходят имя устройства, имя с `.tuna` или его Mesh IP. Если у вас нет доступа, CLI ответит `exit-node access not granted by owner`. Локальная сеть, в которой вы находитесь, по-прежнему работает напрямую.

Через точку выхода можно пустить не весь трафик:

| Флаг                                    | Что делает                                                                              |
| --------------------------------------- | --------------------------------------------------------------------------------------- |
| `--exit-node-country-include=ru`        | через точку выхода идёт только трафик в одну страну                                     |
| `--exit-node-country-exclude=ru`        | трафик в одну страну идёт напрямую, остальной — через точку выхода                      |
| `--exit-node-routes-include=<CIDR,...>` | дополнительные подсети через точку выхода                                               |
| `--exit-node-routes-exclude=<CIDR,...>` | подсети, которые идут напрямую                                                          |
| `--fallback-to-direct`                  | если точка выхода недоступна дольше паузы, трафик пойдёт напрямую, а потом вернётся сам |
| `--fallback-to-direct-grace=60s`        | пауза перед переходом на прямое подключение, от 10 секунд до 10 минут                   |

Флаги стран принимают один код страны и работают только вместе с `--exit-node`. Указать оба флага сразу нельзя. Список кодов покажет `tuna mesh countries`.

```shell
tuna mesh up --exit-node=prod-db-1 --exit-node-country-exclude=ru --fallback-to-direct

```

[Правила доступа](https://tuna.am/docs/mesh/acl.md) действуют и на трафик через точку выхода: запрет на подсеть закроет её и через точку выхода.
