В свете последних событий интернет в России уже начал закрываться. Например Facebook и Instagram уже заблокированы Роскомнадзором. Для того чтобы продолжить пользоваться этими сайтами вам понадобится VPN или прокси. Большинство распространённых протоколов VPN, вроде OpenVPN тоже можно заблокировать, что успешно делает Китай.
Однако есть решение. Для доступа к контенту из Китая была придумана технология Shadowsocks. Эта технология работает по принципу прокси, но с шифрованием. Она маскируется под https трафик, поэтому использование этого протокола сложно вычислить и заблокировать. В этой статье мы рассмотрим как выполняется настройка Shadowsocks Ubuntu, а также как подключится к серверу с Linux.
Содержание статьи
- Что вам понадобится
- Установка Shadowsocks из репозитория
- Установка Shadowsocks из исходников
- Настройка shadowsocks
- Подключение к Shadowsocks
- Выводы
Что вам понадобится
Прежде всего, обратите внимание, что для работы Shadowsocks, как собственно и для VPN вам понадобится сервер, в стране, где нужные вам сайты не заблокированы. Именно на этом сервере устанавливается сервер Shadowsocks. На вашем компьютере или телефоне устанавливается клиент, который подключается к этому серверу. Между вашим клиентом и сервером трафик будет зашифрован поэтому провайдер, не сможет понять какой сайт вы открываете, поэтому не заблокирует его. А уже на сервере запрос будет расшифрован и в открытом виде поступит на сайт.
Если вы планируете использовать digitalocean, то для вас всё может быть довольно просто. Вы можете использовать Outline Manager, разработанный в Google. Это панель управления, которая позволяет в несколько кликов развернуть Shadowsocks сервер на DigitalOcean или в облаке Google.
Но мы в этой статье не будем рассматривать Outline, мы сосредоточимся на ручной установке shadowsocks сервера. Я предполагаю, что у вас уже есть VPS или другой облачный сервер вне России, и вы можете подключится к нему по SSH.
Существует несколько вариантов сервера shadowsocks. Есть реализации на Python, Go и Си. В этой статье будет использоваться версия на Си (libev).
Установка Shadowsocks из репозитория
Реализация shadowsocks на Си есть в официальных репозиториях Ubuntu. Вы можете установить её с помощью команды:
sudo apt install shadowsocks-libev
Но если вы хотите получить самую последнюю версию, вам надо собрать программу из исходников.
Установка Shadowsocks из исходников
Шаг 1. Установка необходимых компонентов
Программу на Си придётся собирать из исходников, а поэтому надо установить необходимые компоненты, понадобится git, а также всё нужное для сборки. Команда для установки будет выглядеть так:
sudo apt install pkg-config gettext build-essential autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libudns-dev automake libmbedtls-dev libsodium-dev git libc-ares-dev devscripts equivs mk-build-deps
Шаг 2. Клонирование репозитория
Для клонирования репозитория с исходниками программы выполните команду:
git clone https://github.com/shadowsocks/shadowsocks-libev.git
Далее нужно перейти в папку с исходниками:
cd shadowsocks-libev/
Для получения исходников всех зависимостей выполните команду:
git submodule update --init --recursive
Шаг 3. Сборка исходников
Для генерации всех необходимых конфигурационных файлов выполните команду:
./autogen.sh
Затем для сборки .deb пакета достаточно выполнить:
dpkg-buildpackage -b -us -uc
Шаг 4. Установка
После завершения выполнения команды пакеты будут находится выше текущей папки на уровень. Для их установки надо выполнить:
sudo dpkg -i ../shadowsocks-libev*.deb
После этого установка shadowsocks будет завершена и можно переходить к настройке программы. Теперь вы знаете как установить shadowsocks из исходников.
Настройка shadowsocks
Конфигурационный файл shadowsocks находится по пути /etc/shadowsocks-libev/config.json и по умолчанию выглядит вот так:
Вот что означают эти сроки:
- server - IP адрес, на котором программа будет ожидать соединений, должно соответствовать внешнему IP адресу вашего сервера.
- mode - указывает какой протокол соединение использовать - tcp, udp или оба.
- server_port - порт сервера, который вы будете использовать для подключения, по умолчанию - 8388.
- local_port - порт клиента, к которому будет подключаться браузер по протоколу SOCS5.
- password - пароль, который будет использоваться клиентами для подключения.
- method - метод шифрования, по умолчанию используется chacha20-ietf-poly1305.
Для начала работы с shadowsocks надо установить в поле server внешний IP адрес вашего сервера. Его можно посмотреть командой:
wget -qO- eth0.me
Также в поле password, надо прописать пароль, который будет использоваться на клиенте для подключения к серверу. Всё остальное можно оставить по умолчанию. После внесения изменений конфигурационный файл может выглядеть вот так:
sudo vi /etc/shadowsocks-libev/config.json
Также после внесения изменений в конфигурационный файл необходимо перезапустить сервис:
sudo systemctl restart shadowsocks-libev
На этом базовая настройка закончена, можно переходить к подключению. Если вы хотите запустить сервер для отладки, чтобы видеть всё, что происходит, можете остановить systemd службу и запустить его вручную:
/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json
Теперь вы знаете как настроить shadowsocks. Давайте разберемся как подключится к настроенному серверу.
Подключение к Shadowsocks
Для подключения вам понадобится клиент. В Linux можно использовать GUI клиент от Outline. Однако и его мы не будем рассматривать в этой статье. Мы поговорим про использование консольного клиента. Его можно получить установив тот же пакет, что и для сервера. Вы можете собрать его из исходников, как описано выше или установить из репозиториев дистрибутива:
sudo apt install shadowsocks-libev
После установки нужно отредактировать конфигурационный файл, так чтобы он был таким же как и на сервере. Например:
sudo vi /etc/shadowsocks-libev/config.json
После этого можно запустить клиент:
sudo ss-local -v -c /etc/shadowsocks-libev/config.json
Опция -v здесь означает максимально подробный вывод, а -c - указывает путь к конфигурационному файлу. Клиент запущен, но ваш трафик ещё не перенаправляется через тоннель. Для этого надо настроить подключение к прокси в вашем браузере. Клиент ожидает соединений от браузера на порту 1080 (по умолчанию).
Для настройки прокси в Firefox откройте Настройки. В разделе Основные пролистайте в самый низ и найдите Параметры сети:
Тут нажмите Настроить и в открывшемся окне введите адрес 127.0.0.1 и порт 1080:
После этого Firefox будет использовать Shadowsocks для открытия сайтов. Если вы откроете сайт eth0.me, то увидите, что ваш IP адрес соответствует адресу сервера, на котором установлен Shadowsocks.
Обратите внимание, что многие провайдеры блокируют сайты по DNS, так что лучше в настройках своего роутера указать DNS Google - 8.8.8.8 или включить в браузере DNS over HTTPS.
Выводы
В этой статье мы рассмотрели как выполняется установка и настройка Shadowsocks в Ubuntu 20.04. Как видите, это довольно просто. А какими сервисами, технологиями вы пользуетесь для обхода блокировок сайтов в интернете? Напишите в комментариях!
А вот как теперь в России обновлять антивирусные базы Clamav? Вот вопрос...
На тему VPS за рубежом подмечено тонко, так как приобрести его с каждым днём всё сложнее и сложнее. Но можно попробовать завернуть трафик в тоннель и на территории России. Помнится, как-то ставил Outline (который также имеет в основе Shadowsocks) на дешёвый сервер в России. Удавалось заходить на сайты, которые были заблокированы на территории страны.
Если у кого-то уже есть свободная железка или арендованный VPS, попробуйте.
Спасибо за статью. Я поставил ShadowSocks-GO, и вроде все работало, но после того как попытался поставить обфускатор V2Ray все накрылось. Нет соединения. Прошу раскрыть тему обфускаторов для SS.
Много шума из ничего. Вот не знаю, живу в Краснодаре, провайдер билайн, браузер Iron и Opera. VPN встроен у обеих. Не вижу проблем. Может начнутся?
Спасибо. Никогда бы не подумал, что мне придется настраивать vps, shadowsocks и все в этом духе.. в свете текущих событий мне как обычному врачу приходится заниматься подобной ерундой.
Пакета mk-build-deps нету в репозитории, ставил без него.. работает.
На Яндекс Дзене есть актуальная инструкция ShadowsocksR. У него производительность выше и устанавливать легче
А windows клиент как настроить?
Только под него клиента нет для macOS.
Ошибка возникает на третьем шаге, после команды ./autogen.sh
~/shadowsocks-libev$ ./autogen.sh
./autogen.sh: 3: autoreconf: not found
С настройками SS клиента всё понятно. Но тема до конца не раскрыта. Рассказано как запустить клиент и подцепить на некий сервер. А далее идут настройки браузера, чтобы он цеплялся к SS клиенту. В Windows клиент SS устроен таким образом, что весь трафик компьютера можно направить через SS клиент. Возможно ли дополнить статью ещё настройками, чтобы весь трафик Linux машины направлялся через SS клиент?
Вы нашли ответ на свой вопрос?
На каждом шагу трубят про Shadowsoks Server, а про клиента для Linux тема не раскрыта.
Как Lidarr-Radarr подключить через "теневые носки"?
Я нашёл эту статью. По твоему это легче?) Там в два раза больше действий
Нужна информация о том, как запилить разом все приложения (весь трафик) через прокси. Редактирование environment не помогает. Через настройки тоже не получается. Отдельно браузер получается.