Эти рекомендации помогут настроить автономный прокси Snowflake на сервере для помощи пользователям, ограниченным цензурой, подключаться к сети Tor. Единственным требованием является подключение к Интернету, однако одним из основных преимуществ автономных прокси Snowflake является то, что они могут быть установлены на серверах и предлагают более высокую пропускную способность и более надежный вариант для пользователей за ограничительными NAT и брандмауэрами. Поэтому мы особенно рекомендуем:

  1. подключение к Интернету 24/7
  2. Full cone NAT (вы можете использовать этот инструмент, чтобы проверить тип вашего NAT. Свойства, которые вы ищете, – это независимое от адреса сопоставление и либо независимая от адреса, либо зависимая от адреса фильтрация)
  3. Сервер, на котором нет или неограничен доступ к NAT, с открытым входящим UDP по всему диапазону портов cat /proc/sys/net/ipv4/ip_local_port_range (или диапазону, установленному с помощью необязательного флага -ephemeral-ports-range).

Существует несколько способов настройки и запуска автономного прокси-сервера Snowflake.

Настройка Docker

Для начала необходимо установить Docker и docker-compose.

У нас есть Docker image, чтобы упростить настройку прокси-сервера Snowflake. Сначала скачайте docker-compose.yml. Затем разверните прокси-сервер, выполнив:

docker-compose up -d snowflake-proxy

После этого вы увидите следующее:

Creating snowflake-proxy ... done

ваш прокси запущен и работает!

docker-compose.yml содержит контейнер watchtower, настроенный для автоматически проверять наличие обновлений для докер-контейнера Snowflake каждый день, загружать их и запускать. Так что, если вы это используете, ваш прокси-сервер Snowflake будет обновляться автоматически! В противном случае вам придется периодически извлекать последний контейнер и перезапускать его вручную.

Ansible

Теперь есть Ansible-роль для установки прокси Snowflake на Debian, Fedora, Arch Linux, FreeBSD и Ubuntu, созданная Jacobo Nájera. Следуйте инструкциям, чтобы запустить Snowflake с Ansible.

Компиляция и запуск из исходного кода

  1. Для начала вам потребуется установить и настроить компилятор Go для того, чтобы собрать прокси из исходных кодов. Пожалуйста, войдите в систему, используя учетную запись пользователя с правами sudo или напрямую с root (в последнем случае опустите часть sudo в следующих командах). Если вы работаете на Ubuntu или Debian, вы можете установить Go при помощи команды sudo apt install golang. Если вы используете Fedora, Red Hat или Amazon Linux, используйте sudo yum install golang или sudo dnf install golang. В противном случае посетите https://golang.org/dl/. Для запуска прокси Snowflake вам понадобится Go 1.21 или новее. Для проверки установленной версии воспользуйтесь командой go version.

  2. Вам потребуется git-клиент для загрузки исходных кодов Snowflake. Пожалуйста, войдите в систему, используя учетную запись пользователя с правами sudo или напрямую с root (в последнем случае опустите часть sudo в следующих командах). Если вы работаете на Ubuntu или Debian, вы можете установить git при помощи команды sudo apt install git. Если вы используете Fedora, Red Hat или Amazon Linux, используйте sudo yum install git или sudo dnf install git. В случае использования другого дистрибутива обратитесь к документации по используемому пакетному менеджеру.

  3. Пожалуйста, выполняйте следующие шаги под аккаунтом, под которым должен запускаться прокси-сервер. Не используйте root. Мы рекомендуем создать отдельного пользователя snowflake с ограниченными правами.

  4. Скопируйте исходные коды.

    git clone https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
    
  5. Скомпилируйте Snowflake.

    cd snowflake/proxy
    go build
    
  6. Запустите Snowflake.

    nohup ./proxy &
    

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

    nohup ./proxy >snowflake.log 2>&1 &
    
  7. Обеспечьте запуск прокси после включения системы:

    crontab -e
    

    Введите следующую строку (пример, измените путь в соответствии с настройкам вашей системы)

    @reboot nohup /home/snowflake/snowflake/proxy/proxy > /home/snowflake/snowflake/proxy/snowflake.log 2>&1 &
    

    Пожалуйста, проверьте, что это сработало: перезагрузите систему и проверьте логи. В некоторых установках Linux это может не работать.

Для поддержания актуальности прокси snowflake, периодически выполняйте предложенные команды раз в несколько недель под аккаунтом, использованным во время установки прокси:

kill -9 $(pidof proxy)
cd snowflake/
git pull
cd proxy
go build
nohup ./proxy >snowflake.log 2>&1 &