В этом пособии рассматривается процесс установки прокси-сервера Shadowsocks на VPS с Debian 10 (виртуальный частный сервер). Shadowsocks представляет собой легкий, высокоскоростной и безопасный Socks5 прокси, который помогает обходить интернет-цензуру. Также вы узнаете, как настроить клиент Shadowsocks-libev на компьютере с операционной системой Debian 10.
Существует множество версий Shadowsocks, и в данном руководстве рассматривается использование Shadowsocks-libev, так как
- Программа создана на языке C, отличается высокой скоростью работы даже на слабых устройствах.
- Он находится в отличном состоянии.
- Данная реализация обладает максимальной функциональностью. Она поддерживает TCP fast open, многопользовательский режим, API для управления, режим перенаправления, туннелирование, UDP-ретрансляцию, AEAD-шифры и плагины.
Содержание статьи
- 1 Начальные требования
- 2 Установка сервера Shadowsocks-libev на виртуальном сервере с операционной системой Debian 10.
- 3 Настройка и установка клиента Shadowsocks-libev на десктопе с операционной системой Debian 10.
- 4 Настройка браузера для работы через Socks-прокси
- 5 Проверка на утечку DNS
- 6 Активация TCP BBR
- 7 Активация TCP Fast Open
Начальные требования
Для выполнения данного руководства вам потребуются:
- VPS (виртуальный приватный сервер). Я советую обратить внимание на Vultr. У них есть VPS с KVM виртуализацией и 512 МБ оперативной памяти всего за 2,5 доллара в месяц — отличный выбор для создания личного прокси-сервера.
- Установите на ваш VPS операционную систему Debian 10.
Установка сервера Shadowsocks-libev на виртуальном сервере с операционной системой Debian 10.
После установки Debian 10 на ваш VPS необходимо войти на сервер через SSH. Shadowsocks-libev доступен в стандартных репозиториях Debian 10, однако его версия устарела. На моем сервере эта старая версия больше не функционирует. Рекомендую установить Shadowsocks-libev из репозитория buster-backports Debian 10, который содержит актуальную версию. Это обеспечит вам получение обновлений безопасности и исправлений ошибок.
Для активации репозитория buster-backports используйте следующую команду.
echo "deb http://deb. debian. org/debian buster-backports main" | sudo tee /etc/apt/sources. list. d/buster-backports. list
После этого обновите локальный индекс пакетов.
sudo apt update
Затем установите Shadowsocks-libev из репозитория buster-backports.
sudo apt - t buster-backports install shadowsocks-libev
Для проверки номера версии выполните следующие действия.
ss-server - v
shadowsocks-libev 3.3.4
Библиотека криптографии libsodium будет установлена вместе с shadowsocks-libev. Это необходимо для использования безопасного и быстрого метода шифрования ChaCha20-Poly1305. После установки Shadowsocks-libev запустится автоматически с конфигурационным файлом по умолчанию. Вы можете проверить его состояние с помощью:
systemctl status shadowsocks-libev
●shadowsocks-libev.service - Основной сервис Shadowsocks-libev Загружен: загружен (/lib/systemd/system/shadowsocks-libev.service; включен; предустановка поставщика: включена) Активен:активный (в работе) since Tue 2020-06-23 13:33:46 UTC; 14s ago Docs: man:shadowsocks-libev(8) Main PID: 20316 (ss-server) Tasks: 1 (limit: 558) Memory: 552.0K CGroup: /system. slice/shadowsocks-libev.service └─20316 /usr/bin/ss-server - c /etc/shadowsocks-libev/config.json
Если команда, указанная выше, не завершает выполнение мгновенно, нажмите Q, чтобы вернуть управление терминалом.
Он функционирует, и автозапуск при старте системы активирован. Если он не работает, вы можете запустить его вручную с помощью:
sudo systemctl start shadowsocks-libev
Для активации автозапуска при загрузке следуйте следующим шагам:
sudo systemctl enable shadowsocks-l
Поменяйте 127.0.0.1 на публичный IP-адрес вашего сервера на Debian. Вы можете установить другой номер порта, изменив server_port, но избегайте использования порта 8388. Затем выберите желаемый пароль, который будет использоваться для шифрования трафика. Рекомендуется заменить null на chacha20-ietf-poly1305 в качестве метода шифрования. Вот пример моей настройки.

Сохраните изменения в файле и закройте его. После этого перезапустите Shadowsocks-libev, чтобы обновления были применены.
sudo systemctl restart shadowsocks-libev
Настройка и установка клиента Shadowsocks-libev на десктопе с операционной системой Debian 10.
Пакет shadowsocks-libev включает в себя как серверные, так и клиентские компоненты. Таким образом, для установки Shadowsocks-libev на настольный компьютер с Debian 10 воспользуйтесь описанным ранее способом.
Важно: после установки на сервере Debian 10 Shadowsocks-libev запускается автоматически. Для этого вам потребуется остановить сервер Shadowsocks на настольном ПК с Debian 10.
sudo systemctl stop shadowsocks-libev
Также необходимо отключить автозапуск при старте системы.
sudo systemctl disable shadowsocks-libev
Двоичный файл клиента Shadowsocks именуется ss-local. Для него предусмотрен шаблон юнит-файла systemd: /lib/systemd/system/[email protected] . Прежде чем запустить клиента, необходимо подготовить конфигурационный файл для клиентской стороны.
sudo nano /etc/shadowsocks-libev/местоположение-вашего-сервера.json
Вы можете поменять местоположение вашего сервера на что-то вроде SFO или LAX. Скопируйте настройки сервера Shadowsocks-libev в конфигурационный файл клиента, после чего добавьте следующую строку, чтобы указать клиенту прослушивать на 127.0.0.1.
"local_address":"127.0.0.1",
В результате файл настройки клиента будет иметь следующий вид:
< "server":"ваш-ip-адрес-сервераПорт сервера:8388"локальный_адрес":"127.0.0.1", "локальный_порт":1080, "пароль":"focobguph", "timeout":60, "method":"chacha20-ietf-poly1305" >
Сохраните файл и закройте его. После этого мы можем запустить клиент следующим образом:
sudo systemctl start shadowsocks-libev-local@местоположение-вашего-сервера.service
Включите автоматический старт при загрузке системы.
sudo systemctl enable shadowsocks-libev-local@местоположение-вашего-сервера.service
Проверьте его состояние. Убедитесь, что он функционирует правильно.
systemctl status shadowsocks-libev-local@местоположение-вашего-сервера.service
Теперь служба ss-local активно работает на 127.0.0.1:1080 на вашем настольном компьютере с Ubuntu и установила соединение с вашим сервером Shadowsocks.
Настройка браузера для работы через Socks-прокси
Для того чтобы ваша программа могла работать через socks-прокси, она должна поддерживать этот тип прокси. Такие программы, как Firefox Quantum, Google Chrome и Dropbox, предоставляют возможность настройки прокси. Далее я продемонстрирую, как настроить прокси в Firefox и Google Chrome.
Firefox
В Firefox перейдите в Правка > Настройки >Сначала прокрутите вниз и откройте раздел "Настройки" в меню "Сетевой прокси". В появившемся окне выберите ручную настройку прокси. Затем выберите вариант SOCKS v5, так как Shadowsocks использует именно этот протокол. В поле "Хост SOCKS" введите 127.0.0.1, а в поле "Порт" укажите 1080. Не забудьте включить опцию использования прокси для DNS при выборе SOCKS v5. Нажмите "ОК" для сохранения изменений.

Гугл Хром
Версия Google Chrome и Chromium для Linux не предлагает графический интерфейс для настройки прокси, однако вы можете воспользоваться параметрами командной строки, как показано ниже.
google-chrome --proxy-server="socks5://127.0.0.1:1080"
chromium-browser --proxy-server="socks5://127.0.0.1:1080"
Вы можете установить и использовать расширение SwitchOmega для управления настройками прокси, что избавит вас от необходимости вводить команды в терминале.
Проверка на утечку DNS
Откройте сайт dnsleaktest.com. На экране отобразится IP-адрес вашего Shadowsocks сервера, что подтверждает корректную работу прокси.

Кликните на обычный тест и проверьте, чтобы ваш местный провайдер отсутствовал в итогах теста.

Активация TCP BBR
TCP BBR — это алгоритм управления перегрузкой в TCP, который способен значительно повысить скорость соединения. Ознакомьтесь с ниже представленным руководством для активации TCP BBR на сервере Debian 10. Нет необходимости включать его на настольной версии Debian 10. Данное руководство в основном разработано для Ubuntu, но также подходит и для Debian.
- Простой способ повысить скорость сети в Ubuntu — активировать TCP BBR.
Активация TCP Fast Open
Для повышения скорости работы Shadowsocks можно активировать функцию TCP Fast Open. TCP — это протокол, основанный на установлении соединения, что подразумевает обмен данными только после его создания через трехстороннее рукопожатие. Это означает, что в традиционном подходе данные начинают передаваться лишь по завершении этого рукопожатия. TCP Fast Open (TFO) — это технология, позволяющая начать обмен данными до завершения трехстороннего рукопожатия, что может сократить время на один круговой путь (RTT).
Поддержка TCP Fast Open была добавлена в ядро Linux начиная с версии 3.7 и активирована по умолчанию с версии 3.13. Чтобы узнать версию вашего ядра, выполните:
uname - r
Чтобы осуществить проверку конфигурации TCP Fast Open на сервере Debian, выполните следующие действия.
cat /proc/sys/net/ipv4/tcp_fastopen
Она способна возвращать четыре результата.
- 0 обозначает, что функция выключена.
- 1 указывает на то, что он активен для исходящего подключения (в роли клиента).
- 2 указывает на то, что он активен для приема входящих соединений (в роли сервера).
- 3 указывает на то, что он активен как для исходящих, так и для входящих подключений.
Все мои серверы на Debian вернули значение 1 после выполнения указанной команды. Мы стремимся установить tcp_fastopen на 3 на нашем сервере. Для этого необходимо внести изменения в файл конфигурации sysctl.
sudo nano /etc/sysctl.conf
После этого добавьте следующую строку в конец файла.
net. ipv4.tcp_fastopen=3
Обновите настройки sysctl, чтобы изменения начали действовать.
sudo sysctl - p
Затем необходимо активировать TCP Fast Open в конфигурационном файле Shadowsocks.
sudo nano /etc/shadowsocks-libev/config.json
Вставьте следующую строку.
"fast_open": true
Таким образом, конфигурационный файл вашего сервера Shadowsocks будет иметь следующий вид:
< "server":"your-server-ip-addressПорт сервера:8388"локальный_порт": 1080, "пароль": "focobguph", "timeout":60, "method":"chacha20-ietf-poly1305", "fast_open": true >
Учтите, что в последней строке конфигурации отсутствует запятая. Сохраните изменения и закройте файл, после чего перезапустите сервер Shadowsocks.
sudo systemctl restart shadowsocks-libev
Убедитесь, что он функционирует корректно. (Ошибки в конфигурационном файле могут вызвать проблемы в его работе.)

