Onionbalance или луковый балансировщик


Балансировка нагрузки - это способ распределить нагрузку на сервис на несколько внутренних экземпляров. Он делает сервисы более устойчивыми и надежными за счет устранения точек отказа. Для скрытых сервисов onion в сети TOR подходит OnionBalance
В OnionBalance реализована круговая балансировка нагрузки поверх сервисов Tor onion. Типичное развертывание OnionBalance будет включать один интерфейсный сервер и несколько серверных экземпляров.

Далее будет перевод для onion v3

Инструкция:

1. Настройка внешнего сервера (настройка Tor)

Начнем с входа на наш внешний сервер и установки Tor. Вам понадобится очень свежая версия Tor (так что она включает в себя # 31684 ), и поэтому я предлагаю вам использовать последнюю официальную версию Tor master:

$ git clone https://gitweb.torproject.org/tor.git
$ cd tor
$ ./autogen.sh && ./configure && make

к концу этого процесса у вас должен быть бинарный файл Tor в ./src/app/tor. Если это не так, вы можете пропустить различные зависимости C, такие как libssl-dev, libevent-devи т. Д.

Теперь настройте минимальный torrc с включенным портом управления. Например:

SocksPort 0
ControlPort 127.0.0.1:6666
DataDirectory /home/user/frontend_data/

Теперь запустите Tor и дайте ему сделать свою работу.

Не стесняйтесь настраивать свой torrc так, как вам хочется (также включите ведение журнала), но для целей данного руководства я предполагаю, что ваш порт управления находится на 127.0.0.1:6666.

2: Настройка внешнего сервера (настройка onionbalance)

Теперь, на внешнем хосте нам нужно настроить OnionBalance. Для onionbalance v3 нет пакета Debian, и поэтому нам придется делать это с помощью git.

$ git clone https://gitlab.torproject.org/asn/onionbalance.git
$ cd onionbalance
$ sudo python3 setup.py install
# Let's create an onionbalance config file.
# -n indicates how many empty backend address slots will be created.
# These can be easily modified with a text editor at any time.
$ onionbalance-config --hs-version v3 -n 2

После последней команды у вас должен быть ./config/config.yaml файл с базовой конфигурацией onionbalance. Луковый адрес вашей службы внешнего интерфейса можно найти в нижней части вашего конфигурационного файла. Так что, если это

key: dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.key

onion адрес FRONTEND является:

dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion.

А пока, запишите адрес onion внешнего интерфейса, и давайте перейдем к следующему шагу!

3. Настройка серверных экземпляров

Хорошо, теперь с записанным адресом onion внешнего интерфейса, давайте перейдем к настройке ваших внутренних экземпляров.

Войдите в один из ваших серверных экземпляров и давайте настроим Tor. Как и в предыдущем шаге, для работы OnionBalance вам потребуется использовать последний мастер Tor (из-за # 32709 ).

Как ранее:

$ git clone https://gitweb.torproject.org/tor.git
$ cd tor
$ ./autogen.sh && ./configure && make

Теперь вам понадобится файл torrc для вашего экземпляра бэкэнда. В вашем файле torrc должна быть установлена служба onion (и в данном случае v3), и я предполагаю, что вы знаете, как это сделать. Пока все хорошо, но вот далее:
Внутри HiddenService блока файла torrc, вам необходимо добавить следующую строку:

        HiddenServiceOnionBalanceInstance 1
    Обратите внимание, что если у вас нет существующей службы onion v3 и вы пытаетесь создать ее с нуля, вы должны сначала запустить Tor один раз без этой строки torrc, иначе она не запустится. После создания службы onion добавьте эту строку в свой файл torrc.
    В вашем скрытом каталоге услуг , где **hostname** и **hs_ed25519_public_key** файлы жизни (если вы переместили их ранее или начали Tor , как описано в предыдущем шаге , чтобы создавать их), необходимо создать новый файл с именем «ob_config» , который имеет следующую строку внутри:
    MasterOnionAddress dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion

но замените адрес лука выше на адрес лука вашего внешнего интерфейса. Запустите (или перезапустите, если в данный момент выполняется) процесс Tor, чтобы применить изменения.

Пункты (1) и (2) выше чрезвычайно важны, и если вы не сделали их правильно, ничто не сработает. Если вы хотите убедиться, что вы все сделали правильно, запустите Tor и убедитесь, что ваш файл журнала уведомлений содержит следующую строку:

    [notice] ob_option_parse(): OnionBalance: MasterOnionAddress dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion registered

Если вы этого не видите, значит, что-то пошло не так. Пожалуйста, попробуйте еще раз с начала этого раздела, пока вы не сделаете это! Это самая сложная часть руководства, поэтому, если вы можете сделать это, вы можете сделать что-нибудь (к примеру, сейчас мы находимся на 75% всей процедуры).

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

ОК, вы закончили с этим экземпляром бэкэнда! Теперь сделайте то же самое для других серверных экземпляров и запишите луковые адреса ваших серверных экземпляров, потому что они понадобятся нам для следующего и последнего шага.

4. Запустите onion сайт!

Хорошо, теперь давайте войдем обратно на внешний сервер! Перейдите в свой конфигурационный файл onionbalance и добавьте адреса ваших экземпляров в нужные поля. В конце это должно выглядеть так (для установки с 3 экземплярами бэкэнда):

    services:
    - instances:
      - address: wmilwokvqistssclrjdi5arzrctn6bznkwmosvfyobmyv2fc3idbpwyd.onion
        name: node1
      - address: fp32xzad7wlnpd4n7jltrb3w3xyj23ppgsnuzhhkzlhbt5337aw2joad.onion
        name: node2
      - address: u6uoeftsysttxeheyxtgdxssnhutmoo2y2rw6igh5ez4hpxaz4dap7ad.onion
        name: node3
      key: dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.key

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

Теперь давайте запустим onionbalance, выполнив следующую команду (при условии, что ваш параметр ControlPort torrc равен 6666, замените его, если он другой):

    $ onionbalance -v info -c config/config.yaml -p 6666

Если все прошло нормально, onionbalance должен запуститься, и примерно через 10 минут ваш интерфейс будет доступен по dpkhemrbs3oiv2fww5sxs6r2uybczwijzfn2ezy2osaj7iox7kl7nhad.onion адресу!

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

Что теперь?

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

Если вы обнаружите ошибки или быстро исправите их, отправьте их через Gitlab или Github !

Устранение неисправностей

Вот несколько общих проблем, с которыми вы можете столкнуться во время настройки.

Проблемы с разрешениями

Чтобы это работало, у пользователя, с которого вы пытаетесь запустить onionbalance, должны быть права доступа к cookie-файлам порта управления Tor. В противном случае вы увидите такую ошибку:

    [ERROR]: Unable to authenticate on the Tor control connection: Authentication failed: unable to read '/run/tor/control.authcookie' ([Errno 13] Permission denied: '/run/tor/control.authcookie')

Как всегда, мы не рекомендуем запускать что-либо от имени пользователя root, если вам это не нужно. В Debian Tor запускается отдельным пользователем debian-tor, но это не то же самое для других дистрибутивов Linux, поэтому вам нужно проверить. В Debian вы можете добавить пользователя, из которого вы запускаете onionbalance, в ту же группу sudoers, чтобы получить разрешение:

    $ sudo adduser $USER debian-tor

P.S. Перевод выполнен интернетом. Указания на ошибки приветствуются.


Comments 0