Эти рекомендации помогут настроить автономный прокси Snowflake на сервере для помощи пользователям, ограниченным цензурой, подключаться к сети Tor.
Единственным требованием является подключение к Интернету, однако одним из основных преимуществ автономных прокси Snowflake является то, что они могут быть установлены на серверах и предлагают более высокую пропускную способность и более надежный вариант для пользователей за ограничительными NAT и брандмауэрами.
Поэтому мы особенно рекомендуем:
- подключение к Интернету 24/7
- Full cone NAT (вы можете использовать этот инструмент, чтобы проверить тип вашего NAT.
Свойства, которые вы ищете, – это независимое от адреса сопоставление и либо независимая от адреса, либо зависимая от адреса фильтрация)
- Сервер, на котором нет или неограничен доступ к 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.
Компиляция и запуск из исходного кода
Для начала вам потребуется установить и настроить компилятор 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.20 или новее.
Для проверки установленной версии воспользуйтесь командой go version
.
Вам потребуется 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
.
В случае использования другого дистрибутива обратитесь к документации по используемому пакетному менеджеру.
Пожалуйста, выполняйте следующие шаги под аккаунтом, под которым должен запускаться прокси-сервер.
Не используйте root
.
Мы рекомендуем создать отдельного пользователя snowflake
с ограниченными правами.
Скопируйте исходные коды.
git clone https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
Скомпилируйте Snowflake.
cd snowflake/proxy
go build
Запустите Snowflake.
nohup ./proxy &
Если вам надо сохранить вывод прокси в файл журнала, вы можете использовать команду:
nohup ./proxy >snowflake.log 2>&1 &
Обеспечьте запуск прокси после включения системы:
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 &