Glashkoff.com

Полезные советы и софт, создание и оптимизация сайтов на WordPress

Блог

Как настроить Shadowsocks (альтернатива VPN)

Зачем нужно защищать свой интернет

Раз читатели спрашивают, как настроить VPN на собственном сервере, напишу о том, как настроить Shadowsocks. Это прокси с шифрованием и авторизацией по паролю родом из Китая. Исходный код открыт, всё бесплатно (кроме аренды сервера и вашего времени, потраченного на настройку).

Shadowsocks пригодится:

  • для защиты ваших данных в ненадёжных сетях (при подключении к публичным точкам Wi-Fi),
  • для реализации права на свободу информации, если по каким-либо причинам интересующий сайт не открывается,
  • для защиты от перехвата трафика и внедрения на страницы сайтов рекламы (так любят поступать мобильные операторы),
  • для защиты от несанкционированных подписок на платные услуги, когда пользуетесь мобильным интернетом.

Если первые два пункта не нуждаются в пояснениях, это избитая тема, то ситуация с мобильными операторами требует пояснений. Пользователей мобильных операторов преследует проблема: провайдер может изменять странички как угодно, на лету внедряя скрипты отслеживания действий или рекламу. А ещё может перенаправить браузер на сайт, посещение которого автоматически включит платную подписку на какой-нибудь контент и с мобильного счёта начнут испаряться деньги. Насколько всё серьёзно, можете узнать в статье на Хабре «Как Мегафон спалился на мобильных подписках».

В условиях, когда доверять провайдерам интернета ну просто не получается из-за таких вот инцидентов, приходится защищать свои устройства и кошельки. Нужно шифровать трафик ПК, мобильных телефонов и планшетов. Бесплатные VPN сервисы, в том числе встроенный в браузер Opera, я не считаю безопасными, потому что нет точных сведений, что именно владельцы делают с историей сетевой активности. Поэтому единственный выход — купить собственный сервер и настроить шифрование трафика через него.

Что такое Shadowsocks

Это программа, которая ставится на сервер для работы в качестве шифрующего прокси-сервера. На компьютеры и мобильники ставится клиент Shadowsocks, благодаря которому все передаваемые данные будут надёжно зашифрованы.

Преимущество конкретно этого способа проксирования передачи данных — скорость. На выбор доступно несколько алгоритмов, среди них не требовательные к ЦП. За счёт быстрого шифрования и отсутствия каких-то довесков отклик получается быстрым. Даже онлайн-игры работают неплохо, пинг в играх типа Battlefield увеличивается на 5-10 мс, что весьма хороший результат.

Может быть, OpenVPN и Wireguard в чём-то лучше, тут спорить не собираюсь. Просто мне возможностей героя данной заметки хватает с лихвой.

  • Мощное шифрование — есть. Настолько мощное, что китайцам помогает обходить Великий Китайский Файрвол!
  • Авторизация по паролю — есть. Нельзя назначать разным устройствам по паролю, но какая разница, если вся аппаратура — личная?
  • Настройка по QR-коду — есть. Это мега-удобно.
  • Низкая нагрузка на процессор — есть. Работе сервера не мешает, а батарея телефона не садится сильно быстрее.
  • Клиенты для всех популярных операционных систем тоже есть. И эти программы удобные.

Самое замечательное то, что утилита shadowsocks-libev очень-очень легковесная и совсем не мешает работе других программ на сервере. Пускай на VDS лишь 512 Мб ОЗУ и какой-нибудь скромненький ARM процессор — проксирование будет работать нормально.

Что потребуется для Shadowsocks

Во-первых, собственный VPS. Лучше на Ubuntu, так настройка пройдёт проще. Сойдёт любой дешёвый виртуальный сервер. Кстати, я когда-то писал гайд по выбору сервера. Также вы можете зарегистрировать аккаунт на Digital Ocean по моей реферальной ссылке, привязать карту и вам на счёт упадёт аж 100 бонусных долларов. Однако в какой-то момент правила реферальной программы DO поменялись, поэтому читайте все надписи в админке, чтобы случайно не пополнить счёт реальными деньгами. Лучшим решением, imho, будет привязка карты с не более чем сотней рублей.

Во-вторых, требуется умение заходить по SSH. Впрочем, это можно сделать прямо через админку облачного провайдера, благо много команд вводить не придётся.

В-третьих, нужно поставить программы-клиенты на ПК и телефоны. Про устройства от Apple рассказать не смогу, так как у меня таковых нет, а настройка Shadowsocks на Windows и Android будет ниже.

Настройка сервера с Shadowsocks

Выбрали, где получить виртуальный сервер? Надеюсь, что с этим не было проблем. Далее все настройки будут на примере Digital Ocean
(я не навязываю пользоваться DO!).

В DO дроплет (виртуальный сервер) создаётся через меню Create — Droplets:


Подчеркну — достаточно самого дешёвого варианта. В DO это конфигурация с 1 Гб RAM и одноядерным ЦП c 25 Гб диском за 5$ в месяц:

Дешёвый тариф

Операционной системой лучше ставить Ubuntu 18.04. Это наиоптимальнейший вариант, благо управляется просто, наличествует нужный набор софта.

Выбор Ubuntu 18.04

Выбор дата-центра для VPS с нашим VPN будет на той же странице создания сервера в Digital Ocean. У других хостингов выбор местоположения может отсутствовать либо появится на другом шаге. На DO, пожалуй, лучше размещать в Амстердаме, там провайдеры пока что не занимаются активной фильтрацией трафика, поэтому проблем с сетью ожидается меньше всего. Однако за счёт нагруженности тамошнего дата-центра скорость сети будет не шибкой высокой — 30-60 Мбит.

После создания сервера обязательно проверьте его цифровой адрес на блокировку, так как IPv4 адресов в мире мало, а нехороших и глупых людей — много:

Помимо госсайтов для проверки IP на наличие санкций (спрашивается — что адреса сделали плохого?), в интернете живёт удобный сервис zapret.info:

К сожалению, реальность такова, что в 1 случае из 5 в Digital Ocean и у других популярных облачных провайдеров нужно пересоздавать сервер несколько раз, чтобы получить не заблокированный цифровой адрес. Мой «рекорд» — 31 неудачная попытка создания сервера подряд. Только после этого дроплет получил не заблокированный адрес.

Далее зайдите в терминал под пользователем root (пароль к нему придёт письмом). В DO для этого есть вебклиент, вызываемой кнопкой справа вверху панели управления VPS:

Хотя вы можете использовать Putty, Kitty или любую другую. При входе на сервер, может быть, он попросит сменить пароль — do it, благо это легко. После выполните следующую команду:

apt update && apt upgrade -y && apt install -y shadowsocks-libev

Репозиторий linux-софта обновится, сама Убунта проапгрейдится тоже, установится сервер Shadowsocks. После успешного выполнения вывод в терминале будет такой:

Shadowsocks-libev успешно установился

В отличии от прокси, к которому может подключиться любой желающий, в shadowsocks-libev можно и нужно поставить пароль. Также метод шифрования по умолчанию не оптимален. Поэтому обязательно отредактируйте файл конфигурации:

nano /etc/shadowsocks-libev/config.json

По умолчанию выглядеть config.json будет выглядеть так:

Нужно поправить файл конфигурации, добавив пару опций, приведя к такому виду:

{
    "server":"0.0.0.0",
    "server_port":ТУТ_СЛУЧАЙНЫЙ_ПОРТ,
    "local_port":1080,
    "password":"ТУТ_ВАШ_ПАРОЛЬ",
    "timeout":10,
    "method":"chacha20-ietf-poly1305",
    "fast_open":true,
    "workers":1,
    "mode":"tcp_and_udp"
}

Пройдусь по опциям.

  • IP в поле «server» должно быть именно 0.0.0.0 — это не ошибка, так shadowsocks-libev будет прослушивать все сетевые интерфейсы.
  • В качестве «server_port» нужно указать любой порт для доступа, отличный от стандартных 22, 80, 443 и 8388.
  • «local_port» оставляйте 1080, это для связи внутри сервера и в нашем случае не нужно.
  • «password» — конечно же, делайте пароль подлиннее да позаковыристее.
  • «timeout» — время, после которого софтина разрывает соединение, если не поступило никаких данных. Вместо 60 секунд лучше ввести 10, ну максимум 20. Большее значение клиент Shadowsocks для Windows не поддерживает, ни к чему рассогласовывать опции.
  • «method» — алгоритм шифрования. Стандартный «chacha20-ietf-poly1305» очень надёжен, такой трафик никакой злоумышленник не расшифрует. Однако если ваш телефон после установки Shadowsocks клиента начнёт быстро съедать батарею, переключите на «aes-256-cfb» и перезагрузите сервер. Этот алгоритм менее надёжен, но поможет снизить нагрузку на ЦП и сэкономить заряд аккумулятора, если процессор мобильного имеет поддержку аппаратного ускорения AES шифрования. Кстати, на моём дешёвом MTK6580 разница заметна.
  • «fast_open» — быстрое открытие соединений, если поддерживается ядром ОС.
  • «workers» — количество процессов shadowsocks-libev. Советую поставить соответственно количеству ядер у ЦП.
  • «mode»:»tcp_and_udp» включает передачу данных по UDP. Честно говоря, разницы не заметил, но люди в конфигах указывают. Хуже точно не будет.

После внесения правок жмите Ctrl+O и Enter для сохранения, Ctrl+X для закрытия.

Следующие команды включат сервис Shadowsocks на сервере с Ubuntu, чтобы он включался автоматически:

systemctl enable shadowsocks-libev
systemctl restart shadowsocks-libev

И финальный штрих — тюнинг настроек ядра сервера для максимальной производительности:

nano /etc/sysctl.conf

Листайте этот конфиг до самого низа и вставляйте вот этот набор твиков:

fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Сохраните так же, как и предыдущий конфиг, введите «sysctl -p» для применения настроек, перезагрузите машину командой «reboot» и… всё, ваш персональный супер-быстрый прокси-сервер настроен! Осталось задействовать его на устройствах.

Конечно, можно закрыть лишние порты файрволлом, включить fail2ban и сделать кучу других полезных действий, но в контексте создания прокси-сервера на Ubuntu — перечисленного выше достаточно. Остальное — по вашему усмотрению.

Настройка Shadowsocks в Windows

Утилита для компьютеров отличается простотой в установке. Она портативная, её можно носить с собой на флешке или распространить на все домашние ПК. Каких-то специфичных дополнительных настроек для отдельных машин нет, настройки всегда одинаковые.

Зайдите на страницу релизов shadowsocks-windows и скачайте zip-архив с именем Shadowsocks-[тут_версия].zip.

Распакуйте этот архив в любую папку. Например, C:\Shadowsocks.

Запустите исполняемый файл Shadowsocks.exe. Раз это первый запуск, появится окно добавления сервера, где нужно ввести IP, порт, пароль и алгоритм шифрования.

Добавление сервера Shadowsocks в Windows

После нажатия ОК сервер добавится в список слева и окно скроется. При необходимости его можно вызвать нажатием правой кнопкой мыши по значку Windows-клиента Shadowsocks в трее — ServersEdit Servers.

Настройка Shadowsocks

Чтобы инициировать подключение к настроенному серверу, нужно переключить системный прокси: в меню System-ProxyGlobal. Пункт Disable выключает проксирование. Также советую, чтобы не запускать программу каждый раз при включении ПК, отметить галкой пункт Start on Boot.

Включение автозапуска программы и подключение прокси

На этом с настройкой в Windows всё. Теперь, если зайти через любой браузер на сервис определения IP адреса (yandex.ru/internet/), окажется, что вы сидите не из дома:

Также я протестировал получившуюся скорость интернета. К сожалению, входящую скорость больше 50 Мбит на тестовом сервере получить не удалось:

В действительности дела обстоят лучше и потери в скорости составляют не более 10% от тарифа интернета. Наверное, тестируемый VPS работает с соседстве с чересчур нагруженными проектами.

Ещё один момент: не все программы в Windows учитывают системные настройки прокси. Например, Магазин приложений может пойти в обход. Для решения этой проблемы существует SocksCap64. Однако, скорее всего, такая утилита вам не понадобится — браузеры с прокси работают нормально.

Настройка Shadowsocks на Android

С телефонами на Andoid всё просто — есть клиент Shadowsocks. Абсолютно бесплатный.

В телефонной программе можно точно так же заполнить поля, указав сервер и мучительно набрав сложный пароль на экранной клавиатуре, а можно выбрать «Сканировать QR-код» и навести камеру на экран компьютера.

На компьютере в Windows-версии настройки генерируются через пункт меню Servers — Share Server Config. Это удобно.

Настройка Shadowsocks VPN на телефоне
Настройка Shadowsocks VPN на телефоне

После настройки нужно лишь нажать кнопку в главном меню, чтобы на телефоне создалось VPN-соединение.

В зависимости от производительности процессора телефона и качества связи скорость получается сильно разной. К сожалению, пинг сильно страдает, поэтому во время звонков по WhatsApp собеседник услышит вас на полсекунды позже обычного, незащищённого разговора. Комфорт снижается, зато никакие мобильные подписки вам не подключится, реклама от оператора исчезнет.

Подчеркну

Этот или подобный софт не обязательно использовать ради доступа к запрещённым ресурсам. В конце концов, если арендовать сервер на территории великой и необъятной, в этом плане ничего не изменится. Зато провайдер не сможет вмешаться в трафик. Если вас также, как и меня, беспокоит факт того, что мобильные операторы считают нормальным вешать на сайтах рекламу, которую владельцы не ставили, то различные прокси и VPN сервисы — это технологичный способ защититься. Так что ставьте Shadowsocks на здоровье)

Написать комментарий

Правила:
  • 1. Уважайте стороннее мнение. Токсичные комментарии удаляются.
  • 2. Комментарии со ссылками видны после проверки модератором.
  • 3. Обсуждение нелицензионного софта и других незаконных тем запрещено.

Тема Rowling от Anders Norén. Копирование материалов сайта разрешается только с указанием автора и активной ссылкой на источник.