# Распределенное развертывание

Иногда вы можете столкнуться с ситуацией, когда ваш телефон находится дома, а вы — в другом месте. Как им пользоваться? Вы можете использовать встроенный в FIRERPA клиент Frp или OpenVPN для реализации распределенного развертывания, что позволит вам подключаться к распределенным устройствам из любого места. Оба этих решения требуют наличия у вас публичного сервера и настройки соответствующего серверного программного обеспечения для корректной работы. В последующей документации описано, как развернуть серверы Frp и OpenVPN.

```{danger}
Операции, описанные в этой главе, могут сделать ваш телефон доступным из публичной сети, что повышает риски безопасности. Пожалуйста, прочтите внимательно.
```

В этой главе мы не будем затрагивать базовые операции, такие как открытие и закрытие портов брандмауэра. Мы предполагаем, что вы понимаете и уже выполнили необходимые настройки, а также имеете представление о Frp и OpenVPN. Подробное описание развертывания этих двух типов серверов приведено в этой статье и в последующих главах. Если вы решите развертывать самостоятельно, мы настоятельно рекомендуем использовать метод организации сети через OpenVPN.


## Через платформу FireRPA Hub

Вы также можете самостоятельно развернуть [firerpa/hub](https://github.com/firerpa/hub) + [firerpa/hub-bridge](https://github.com/firerpa/hub-bridge) для реализации P2P-доступа между устройствами. За подробными инструкциями обратитесь к документации проекта.

## Проброс на внутренний порт через Frp

Вам необходимо сначала загрузить серверную программу [fatedier/frp](https://github.com/fatedier/frp) и запустить ее, строго следуя приведенной ниже команде. Вы можете изменить порт и токен по своему усмотрению. Требуется версия frps > v0.45.0.

```{danger}
Проброс портов в публичную сеть — это очень опасное действие. Не надейтесь на удачу и не думайте, что IP-адрес и порт надежно скрыты. Обязательно включите проверку сертификатов для сервиса!
```

```bash
frps --token lamda --bind_addr 0.0.0.0 --bind_port 6009 --proxy_bind_addr 127.0.0.1 --allow_ports 10000-15000
```

В соответствии с командой, напишите следующие параметры конфигурации в `properties.local`:

```ini
fwd.host=Публичный IP-адрес вашего сервера
fwd.port=6009

fwd.rport=Порт назначения для проброса (должен быть в диапазоне allow_ports)
fwd.token=lamda

fwd.protocol=tcp
fwd.enable=true
```

Добавьте или запишите приведенную выше конфигурацию в `properties.local` и перезапустите сервис FIRERPA.


## Проброс на публичный порт через Frp

Если вы хотите иметь возможность подключаться к устройству из любого места, мы не рекомендуем этого делать из соображений безопасности. Если такая необходимость все же есть, рекомендуется использовать функционал OpenVPN, чтобы поместить устройство и ваш компьютер в один и тот же сетевой сегмент для доступа.

```{danger}
Проброс портов в публичную сеть — это очень опасное действие. Не надейтесь на удачу и не думайте, что IP-адрес и порт надежно скрыты. Обязательно включите проверку сертификатов для сервиса!
```

Если вы все же собираетесь использовать вышеописанный метод с frp для произвольного доступа, сначала убедитесь, что сервис FIRERPA запущен с использованием сертификата службы, и измените в команде запуска frps параметр `--proxy_bind_addr 127.0.0.1` на `--proxy_bind_addr 0.0.0.0`. Это приведет к тому, что порт из приведенного выше примера будет напрямую привязан к публичному IP-адресу. Если вы не используете сертификат службы при запуске FIRERPA, доступ сможет получить кто угодно, что очень и очень опасно. Будьте готовы к тому, что ваши данные могут быть злонамеренно доступны и уничтожены.

## Подключение к устройству, проброшенному через Frp

Поскольку в приведенной выше документации проброшенный порт привязан к `127.0.0.1` сервера, следующие действия необходимо проверять на самом публичном сервере, где развернут frps. Предположим, что ваш `fwd.rport` — это порт `12345`. Ниже показано, как подключиться к устройству с помощью библиотеки Python.

```python
from lamda.client import *
d = Device("127.0.0.1", port=12345)
```

Вы также можете открыть `http?s://127.0.0.1:12345` в браузере на сервере, чтобы получить доступ к удаленному рабочему столу устройства.


## Реализация через организацию сети OpenVPN

Пожалуйста, обратитесь к соответствующим главам о развертывании сервера OpenVPN, чтобы узнать, как подключить устройство к сети OpenVPN.

## Подключение к устройству в сети OpenVPN

После объединения в сеть OpenVPN работа с устройством ничем не отличается от обычного использования. Вам просто нужно добавить ваш персональный компьютер в эту же сеть OpenVPN, чтобы получить прямой доступ к устройству по его приватному адресу OpenVPN. Вы можете загрузить клиент `OpenVPN Connect` с официального сайта OpenVPN [openvpn.net/client](https://openvpn.net/client/) для подключения к той же сети.