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

  1. подключение к Интернету 24/7
  2. Full cone NAT (вы можете использовать этот инструмент, чтобы проверить тип вашего NAT. Свойства, которые вы ищете, – это независимое от адреса сопоставление и либо независимая от адреса, либо зависимая от адреса фильтрация)
  3. A server behind no or unrestricted NAT, with incoming UDP on the whole port range of cat /proc/sys/net/ipv4/ip_local_port_range open (or the range set using the optional -ephemeral-ports-range flag).

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

Настройка Docker

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

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

docker-compose up -d snowflake-proxy

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

Creating snowflake-proxy ... done

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

The docker-compose.yml contains a watchtower container, configured to automatically check for updates to the snowflake docker container every day, download them and run them. So if you are using that, your snowflake proxy will stay updated automatically! Otherwise, you will need to periodically pull the latest container and restart it manually.

Ansible

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

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

  1. Для начала вам потребуется установить и настроить компилятор Go для того, чтобы собрать прокси из исходных кодов. Please login using a user account with sudo rights or directly with root (in the later case omit the sudo part in the following commands). Если вы работаете на Ubuntu или Debian, вы можете установить Go при помощи команды sudo apt install golang. Если вы используете Fedora, Red Hat или Amazon Linux, используйте sudo yum install golang или sudo dnf install golang. В противном случае посетите https://golang.org/dl/. You will need Go 1.20 or newer to run the Snowflake proxy. Для проверки установленной версии воспользуйтесь командой go version.

  2. Вам потребуется git-клиент для загрузки исходных кодов Snowflake. Please login using a user account with sudo rights or directly with root (in the later case omit the sudo part of the following commands). Если вы работаете на 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 &
    

    Пожалуйста, проверьте, что это сработало: перезагрузите систему и проверьте логи. On some Linux installations this might not work.

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

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