Настройка прокси-сервера Shadowsocks-libev на Ubuntu 22.04 или 20.04

В данном руководстве мы рассмотрим процесс установки прокси-сервера Shadowsocks на операционной системе Ubuntu. Shadowsocks представляет собой легкий, быстрый и безопасный Socks5 прокси, предназначенный для обхода интернет-цензуры. Мы подробно обсудим, как настроить серверную часть, а также как произвести настройку клиента на рабочем столе Ubuntu. Существует множество реализаций Shadowsocks, и в этом руководстве мы сосредоточимся на использовании Shadowsocks-libev, поскольку

  • Он разработан на языке C и отличается высокой скоростью работы, даже на устройствах с ограниченными ресурсами.
  • Он находится в хорошей поддержке.
  • Это наиболее богатая функциональностью версия. Она поддерживает TCP fast open, многопользовательский режим, API для управления, режим перенаправления, туннельный режим, UDP реле, AEAD шифры и плагины.

Начальные условия

Для выполнения данного руководства вам потребуется виртуальный частный сервер (VPS), который способен беспрепятственно подключаться к заблокированным ресурсам, находящимся за пределами вашей страны или под воздействием интернет-фильтрации. Рекомендую обратить внимание на VPS от Kamatera, который предоставляет:

  • Бесплатный пробный период на протяжении 30 дней.
  • Стоимость начинается от 4 долларов в месяц за 1 ГБ оперативной памяти.
  • Мощный VPS, основанный на технологии KVM.
  • Девять дата-центров расположены по всему миру, включая такие страны, как США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.

Используйте инструкцию по указанной ссылке для настройки вашего сервера Linux VPS на платформе Kamatera.

  • Создание VPS-сервера на базе Linux на платформе Kamatera.

После того как вы получите VPS с установленной Ubuntu, выполните следующие шаги.

Инсталляция сервера Shadowsocks-libev на Ubuntu 22.04/20.04

Подключитесь к вашему удаленному серверу на базе Ubuntu через SSH. Shadowsocks-libev доступен в репозитории Ubuntu, поэтому его можно установить с помощью:

sudo apt update sudo apt install shadowsocks-libev

Библиотека криптографии libsodium будет установлена вместе с shadowsocks-libev. Это необходимо для использования надежного и быстрого метода шифрования ChaCha20-Poly1305. После завершения установки внесите изменения в файл конфигурации.

sudo nano /etc/shadowsocks-libev/config.json

По умолчанию содержимое файла имеет такой вид.

< "server":["::1", "127.0.0.1"], "mode":"tcp_and_udp", "server_port":8388, "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" >

Необходимо заменить 127.0.0.1 на 0.0.0.0, чтобы сервер Shadowsocks-libev принимал подключения на общедоступном IP-адресе. Далее измените server_port на другие значения портов, например, 8888. Пароль был сгенерирован случайным образом, поэтому его можно оставить без изменений.

Сохраните файл и закройте его. После этого перезапустите службу shadowsocks-libev, чтобы новые настройки начали действовать.

sudo systemctl restart shadowsocks-libev.service

Активируйте автоматический запуск при старте системы.

sudo systemctl enable shadowsocks-libev.service

Оцените его работоспособность. Убедитесь в том, что он функционирует.

systemctl status shadowsocks-libev.service

Если вы сталкиваетесь с этой ошибкой.

Эта система не предоставляет достаточной энтропии для быстрого генерации качественных случайных чисел. Служба не запустится, пока не будет собрана достаточная энтропия.

Эту ошибку можно устранить, установив пакет rng-tools.

Читайте также:  Как контролировать температуру процессора в Linux и что с этим нужно знать

sudo apt-get install rng-tools

sudo rngd - r /dev/urandom

Теперь у вас есть возможность запустить сервис Shadowsocks-libev.

Конфигурация брандмауэра

Если ваш сервер работает с брандмауэром iptables, вам потребуется открыть порты TCP и UDP, которые использует Shadowsocks. К примеру, если Shadowsocks настроен на порт 8888, выполните следующую команду:

sudo iptables - I INPUT - p tcp --dport 8888 - j ACCEPT sudo iptables - I INPUT - p udp --dport 8888 - j ACCEPT

Если вы применяете брандмауэр UFW, введите следующие команды:

sudo ufw allow 8888

Если вы работаете с AWS или Google Cloud, необходимо настроить брандмауэр через панель управления в интернете.

Установка и конфигурация клиента Shadowsocks-libev

Ubuntu Рабочий стол

Пакет shadowsocks-libev включает в себя как серверную, так и клиентскую части. Чтобы установить Shadowsocks-libev на рабочем столе Ubuntu 22.04 и 20.04, выполните следующие команды.

sudo apt update sudo apt install shadowsocks-libev

После установки Shadowsocks-libev (сервер) запустится автоматически. Вам необходимо остановить сервер Shadowsocks на вашем рабочем столе Ubuntu.

sudo systemctl stop shadowsocks-libev

Кроме того, отключите автоматический запуск при старте системы.

sudo systemctl disable shadowsocks-libev

Бинарный файл клиента Shadowsocks обозначается как ss-local. Для него предусмотрен шаблон юнита systemd, расположенный по адресу: /lib/systemd/system/[email protected] . Перед запуском клиента требуется создать конфигурационный файл для клиентской части. Мы можем скопировать настройки сервера Shadowsocks-libev в файл конфигурации клиента.

sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/client01.json

После этого внесите изменения в файл конфигурации клиента.

sudo nano /etc/shadowsocks-libev/client01.json

Смените адрес сервера на публичный IP-адрес вашего устройства и добавьте следующую строку, чтобы настроить клиента на прослушивание по адресу 127.0.0.1.

"local_address":"127.0.0.1",

Следовательно, конфигурационный файл клиента примет следующий вид:

< "server":"your-server-ip-address{"mode":"tcp_and_udp","порт_сервера":}8888"адрес_локальный":"127.0.0.1", "порт_локальный":1080, "пароль":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" >

Сохраните файл и закройте его. После этого можно запустить клиент, используя:

И активировать автоматический запуск при старте системы.

Оцените его работоспособность. Убедитесь в том, что он функционирует.

Теперь ss-local запущен на 127.0.0.1:1080 на вашем компьютере с Ubuntu и установленное соединение с вашим сервером Shadowsocks.

Рабочий стол Windows

Пользователи Windows могут загрузить клиент Shadowsocks. Сначала скачайте ZIP-архив и распакуйте его. После этого дважды кликните на исполняемом файле shadowsocks. Если Windows Defender блокирует запуск Shadowsocks, нажмите на «Дополнительная информация» и выберите «Запустить всё равно».

Затем необходимо интегрировать новый сервер в клиентское приложение.

  • Введите IP-адрес сервера, его порт (8888) и пароль.
  • Вы можете также настроить значение таймаута, которое должно быть меньше 20 секунд.
  • Сохраните остальные параметры без изменений.

Нажмите на кнопку «Применить».

клиент Shadowsocks для Windows

Если у вас имеется несколько прокси-серверов, вы можете нажать кнопку «Добавить», чтобы добавить дополнительные прокси. Учтите, что одновременно можно использовать только один прокси-сервер.

Конфигурация веб-браузера для работы с SOCKS-прокси

Для того чтобы ваша программа могла использовать SOCKS-прокси, она должна иметь такую поддержку. Некоторые приложения, такие как Firefox, Google Chrome и Dropbox, предоставляют пользователям возможность работать через прокси. Я расскажу, как произвести настройку в Firefox и Google Chrome.

Читайте также:  Отправка электронной почты с использованием JavaMail API

Firefox

  1. В Firefox перейдите в Правка > Настройки > Основные (или Инструменты -> Настройки ->Основные моменты.
  2. Прокрутите вниз и выберите кнопку «Настройки» в разделе «Сетевые настройки».
  3. В разделе Настройки подключения выберите вариант с ручной конфигурацией прокси.
  4. После этого выберите SOCKS v5, так как Shadowsocks работает как SOCKS5-прокси.
  5. Введите 127.0.0.1 в поле для хоста SOCKS и укажите 1080 в качестве номера порта.
  6. Вы можете активировать DNS-прокси при использовании SOCKS v5 или настроить DNS через HTTPS. Оба метода являются приемлемыми.
  7. Нажмите кнопку «ОК», чтобы сохранить внесенные изменения.

shadowsocks-libev для Ubuntu 22.04

Google Chrome

Google Chrome Proxy SwitchyOmega

После установки расширения в Google Chrome выполните настройку прокси-сервера следующим образом:

  • Выберите протокол SOCKS5.
  • Задайте 127.0.0.1 в качестве IP-адреса сервера.
  • Настройте порт на 1080.

команда прокси для Google Chrome через командную строку

Внесите изменения. После этого кликните на иконку расширений в верхнем правом углу и выберите Proxy SwitchyOmega.

Прокси-сервер Swithy Omega на базе Shadowsocks-libev.

По умолчанию SwithyOmega применяет настройки прокси, установленные в операционной системе. Необходимо изменить это, переключив с системного прокси на другой прокси.

прокси по умолчанию для switchyomega

Теперь ваш прокси-сервер должен функционировать.

Проверка на утечку DNS

Зайдите на сайт dnsleaktest.com. Там вы сможете увидеть IP-адрес вашего сервера Shadowsocks, который подтвердит, что ваш прокси-сервер функционирует.

Установка shadowsocks-libev на Ubuntu.

Нажмите на стандартный тест. Убедитесь, что ваш местный интернет-провайдер не отображается в результатах тестирования.

shadowsocks-libev на Ubuntu 17.10

Прокси-сервер в терминале

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

sudo apt install tsocks

После этого внесите изменения в файл конфигурации.

sudo nano /etc/tsocks.conf

Найдите следующую строку:

server = 192.168.0.1

server = 127.0.0.1

Сохраните файл и закройте его. Теперь вы можете настроить вашу командную строку для использования прокси Shadowsocks следующим образом:

sudo tsocks apt update

Существует еще одна аналогичная программа, известная как proxychains.

Активирование функции 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 на сервере под управлением Ubuntu выполните следующие действия:

cat /proc/sys/net/ipv4/tcp_fastopen

Этот процесс способен возвращать четыре результата.

  • 0 указывает на то, что функция отключена.
  • 1 указывает на то, что оно активировано для исходящих соединений (в роли клиента).
  • 2 указывает на то, что функция активирована для входящих соединений (в роли сервера).
  • 3 указывает на то, что оно активно как для исходящих, так и для входящих соединений.
Читайте также:  Обратите внимание на уязвимости X11 при использовании пакета Snap на Ubuntu 16.04

Все мои VPS на Ubuntu отобразили 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

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

systemctl status shadowsocks-libev

Также потребуется изменить файл конфигурации клиента Shadowsocks и перезапустить его, чтобы активировать TCP fast open на настольной версии Ubuntu.

Активация TCP BBR

TCP BBR представляет собой алгоритм управления перегрузкой для TCP, способный существенно увеличить скорость соединения. Рекомендуем ознакомиться с данным руководством.

  • Простые шаги для повышения производительности сети в Ubuntu с помощью активации TCP BBR.

Чтобы узнать больше о Shadowsocks, пожалуйста, ознакомьтесь с руководством пользователя.

man shadowsocks-libev

Диагностика неисправностей

ERROR: server recv: Connection reset by peer

Ошибка, возвращаемая systemctl на стороне клиента, представляется следующим образом:

ERROR: remote_recv_cb_recv: Connection reset by peer

Не могу объяснить, почему так происходит, но перезапуск сервиса shadowsocks-libev на сервере может решить эту проблему.

sudo systemctl restart shadowsocks-libev

sudo crontab - e

Вставьте данную строку в конец документа.

0 */3 * * * /bin/systemctl restart shadowsocks-libev

Служба будет перезапускаться каждые три часа. Это означает, что перезапуск будет происходить в 12:00, 15:00, 18:00, 21:00 и так далее. Учтите, что время устанавливается с помощью cron и не зависит от продолжительности работы службы.

Если в журнале Shadowsocks-libev появляется следующая ошибка.

ERROR: unable to resolve www. youtube.com

Это указывает на то, что сервер Shadowsocks-libev не способен корректно разрешить DNS. Рекомендуется указать DNS-сервер в файле /etc/shadowsocks-libev/config.json. Для этого добавьте следующую строку в файл и перезапустите службу shadowsocks-libev.

"name_server":"1.1.1.1",

Если у вас имеется собственный DNS-резолвер, функционирующий на сервере Shadowsocks, вы можете установить 127.0.0.1 в качестве адреса DNS-сервера.

"name_server":"127.0.0.1",

Имейте в виду, что в JSON-файле последняя строка не должна оканчиваться запятой.

Заключение

Надеюсь, этот гид оказался для вас полезным в процессе установки прокси Shadowsocks-libev на Ubuntu. Как обычно, если данный материал оказался для вас ценным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше полезных советов и хитростей.