Сценарий настройки pac shadowsocks

В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету. И вот тут шикарный подарок нам сделал братский народ Китая. C 2012 года они пилят бесплатный открытый проект Shadowsocks. Это пара из программ для сервера и клиента, работающих по следующему принципу: клиент изображает из себя сервер SOCKS5 прокси, получает входящие соединения, шифрует их, транслирует на сервер и там выпускает в интернет. То есть, принцип работы похож на SSH туннель, но имеет массу достоинств и пару недостатков по сравнению с ним.

Из песочницы, Системное администрирование


Рекомендация: подборка платных и бесплатных курсов Java — https://katalog-kursov.ru/

В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.

И вот тут шикарный подарок нам сделал братский народ Китая. C 2012 года они пилят бесплатный открытый проект Shadowsocks. Это пара из программ для сервера и клиента, работающих по следующему принципу: клиент изображает из себя сервер SOCKS5 прокси, получает входящие соединения, шифрует их, транслирует на сервер и там выпускает в интернет. То есть, принцип работы похож на SSH туннель, но имеет массу достоинств и пару недостатков по сравнению с ним.

Достоинства Shadowsocks

  • Легкость настройки сервера: ниже я покажу, что стандартный конфиг — это всего 5 строчек, и не нужно возни с сертификатами. Ну правда, не банковскую сеть же делаем.
  • Легкость настройки клиента. Клиенты есть под всё, не побоюсь громкого слова. Конфиг клиента — это те же 5 строчек.
  • Клиенту для работы не нужны права админа. Мало того, его можно установить из pip. То есть любой программист сможет подключиться с работы.
  • Легко настраивать доступ на уровне отдельных программ. В браузере, с помощью дополнений типа FoxyProxy/OmegaSwitchy так вообще — на уровне отдельных адресов по сложным правилам. При использовании VPN такого можно добиться только поднимая локальные прокси на каждом клиенте.
  • В отличие от VPN, который на большинстве систем реализован через виртуальную сетевую карту, клиент Shadowsocks при обрыве связи никуда не девается. Так что ваш трафик не пойдёт сам по себе незащищённым путём. Кроме того, даже если упадёт само приложение Shadowsocks, программы не будут обращаться напрямую, если только не настроены это делать. При использовании VPN приходится реализовывать kill-switch, а они, особенно под Винду, ненадёжные и с побочными эффектами.
  • По сравнению с SSH туннелем — большая пропускная способность, поддерживает тысячи клиентов с кучей соединений от каждого. SSH туннель под, например, торрентами, ощутимо грустит; кроме того, мелкие неровности сети заметно снижают его скорость. Shadowsocks-у пофиг.
  • Гоняет меньше технической инфы по соединениям, что благоприятно для батарейки мобильных устройств.
  • Есть экзотические версии серверов, написанные в виде библиотек для разных языков. То есть можно добавить сервер в свою программу для шифрования доступа своим клиентам.
  • Графическая настройка клиентов. Можно сделать QR код, при сканировании которого клиенты мобильников и винды настраиваются сами. Один клиент под винду настроили, код сгенерировали, на 20 мобильников раскидали за минуту. Можно на сайт выложить, или на стенку повесить.

Недостатки Shadowsocks

  • В отличие от OpenVPN, не проходил официального аудита. Так-то его просматривала куча народу, благо код открытый и маленький, но официально — нет.
  • Не разделяет пользователей. Можно научить слушать на нескольких портах с разными паролями, но на одном порту — один пароль. Знание пароля не позволяет (в теории) слушать другого абонента того же порта.
  • Не умеет пробрасывать порт в обратную сторону. То есть все как за NAT сидят. Придётся воспользоваться SSH туннелем, если можно.
  • Клиент для Андроида держит аж два(!) неубираемых сообщения. Если их не скрыть, это очень мешает.
  • Есть пара упёртых программ под Винду, которые не лезут в Shadowsocks, как их не настраивай. Увы, автор программы может написать открытие соединения так, чтобы игнорировать настройки прокси, и так иногда делают, когда проверяют лицензии на софт. Ниже напишу хитрый трюк, как эти программы распознать.
  • Latency соединения выше, чем у OpenVPN. Не сильно, и гамать можно, но всё же.
  • Не умеет сжимать трафик архиватором. В век HTTPS это не важно, а вот для, скажем, несжатых текстовых файлов и настоящих образов Убунты — разница есть.
  • Документацию писали китайцы, на китайском английском, с кучей пропущенных пунктов и взаимных противоречий.

Настройка сервера Shadowsocks. Способ 1

Пишем конфиг. Вот пример полного рабочего конфига.

{
    "server":"111.222.333.444",
    "server_port":8390,
    "local_port":1080,
    "password":"buratino.ty.sam.sebe.vragg",
    "timeout":60,
    "method":"aes-256-cfb",
    "fast_open": true
}

Это конфиг одновременно для сервера и клиента. Имеем поочереди адрес и порт сервера(можно хоть 80-й); порт, с которого клиент будет принимать подключения(лучше не трогать); пароль открытым текстом; и время в секундах, после которого сервер закрывает ненужный канал. А о последних двух поподробнее.

Shadowsocks имеет на выбор кучу методов шифрования, однако практически применимы всего два. chacha20-ietf-poly1305, алгоритм за авторством Daniel J. Bernstein, разрабатываемый Гуглом для внутренних нужд. Хорош для устройств, не умеющих аппаратный AES, а это совсем дешёвые мобильники и прочие умные утюги; и для параноиков, боящихся закладок в процессоре. Всем остальным использовать aes-256-cfb. Впрочем, оба шифра надёжные и проверенные временем.

Настройка fast_open уменьшает latency соединения, но требует ядро не ниже 3.7. И даже там работает не всегда, в частности, не работает, если виртуалка ваша сделана OpenVZ. На Scaleway-ских ARMах тоже не завелось. В общем, включайте, если работает.

Теперь, когда конфиг готов, устанавливаем пакет. Тут надо уточнить, что существуют две версии. Просто shadowsocks — референс, написанный на питоне, а shadowsock-libev это то же самое, но переписанное на чистом Си для скорости. Вот его и ставим. В самых новых линуксах он есть в основной репе, а для более старых — смотрите тут.

Ну и запускаем: ss-server -c config.conf. Всё должно работать. Не забудьте файрволл и автозапуск. Ликбез по администрированию линукса я тут писать не буду, поэтому если что-то не заработало, переходите к методу 2.

Способ 2

Устанавливаем docker и docker-compose.

apt install docker docker-compose

Дальше, в файле, который должен обязательно называться docker-compose.yml, пишем конфиг такой:

version: '3'
services:
  shadowsocks:
    image: shadowsocks/shadowsocks-libev:latest   
    environment:
      - TZ=Europe/Moscow
      - PASSWORD=buratino.ty.sam.sebe.vragg
      - METHOD=aes-256-cfb
      - ARGS=--fast-open
    ports:
      - "8390:8390"
      - "8390:8390/udp"
    restart: unless-stopped

Обратите внимание на отступы, они важны. Если хочется, можно поднять сразу несколько серверов на разных портах, с разными паролями, для этого нужно просто продублировать весь блок shadowsocks: с разными именами. Когда конфиг готов, в той же папке запускаем

docker-compose up -d

и всё заведётся. Docker для вас даже сам, без спроса, дырочку в файрволле для каждого порта просверлит, зараза такая.

Конфигурация клиентов

Тут всё проще. Идём на сайт, качаем нужный клиент, настраиваем в интерфейсе. Для линуксоидов, естественно, есть консольный демон, кушающий конфиг из метода 1.

После настройки клиента у вас в системе на порту 1080 будет сидеть SOCKS5 прокси, по умолчанию недоступный извне. Но можно открыть, если вы в дружественной локалке. Важно понимать, что сами по себе программы туда не ломанутся. Нужно настроить системную проксю (если хотите, чтобы все программы шли через Socks) или каждую программу в отдельности, а лучше и то, и то — не повредит. На Windows 10 в панели управления есть пункт Network&Internet > Proxy. Там нужно вписать адрес прокси 127.0.0.1, порт как настроили (1080) и игнорировать для: локальной сети (обычно 192.168.0.1/24, хотя смотрите сами) и, для самого айпишника сервера. Если кто использует Linux Subsystem, то на неё эта конфигурация не распространяется, там надо объявлять переменную socks5_proxy. Полноценные линуксы обычно имеют в панели управления аналогичные настройки. Для браузеров рекомендую дополнения типа FoxyProxy (FF) и SwitchyOmega (Хром) для детальной настройки, к какому сайту ходить через прокси, а какому напрямую. В частности, прямой доступ надо настроить к ресурсам своего провайдера, и, возможно, к своему банку. Рекомендую так-же не удивлять Мосэнергосбыт счетами из-за границы — они там и так пугливые какие-то. Paypal, как ни странно, до лампочки. Не забудьте поставить галочку «DNS через proxy» или убедиться, что оно по умолчанию так.

Проверка работы

На этом этапе всё должно работать. Нужно сделать 2 теста. Сначала браузером, желательно примитивным «изкоробочным», а не основным, пройти на https://duckduckgo.com/ и вбить в поиск my ip. Адрес должен быть серверный. Затем, в настройках клиента, вписать неправильный пароль, и убедиться, что все программы перестали работать. Это проверка на то, что ни одна программа не лезет в обход прокси.

Дополнения

Расскажу о некоторых дополнениях к Shadowsocks, но не буду углубляться в их настройку. Спрашивайте, если что.

Polipo. Некоторые древние или уп[ёр/оро]тые программы не умеют SOCKS5, зато умеют HTTP_PROXY. В частности, официальный клиент Twitter для Андроид до сих пор не умеет использовать Shadowsocks если тот установлен не на мобильнике, а, скажем, на роутере. На этот случай можно установить http_proxy сервер Polipo, и в настройках его указать редирект на Shadowsocks. Все http proxy программы заброшены ввиду малой нужности, но Polipo пока работает без проблем.

Obfs-proxy. Позволяет завернуть трафик Shadowsocks в чистый, непримечательный SSL и так пустить на порт 443. Это если у кого уже белые списки протоколов.

KCPTUN. Протокол KCP — это надстройка над UDP для работы в совсем уж убогих сетях с большими потерями, типа сотового модема на грани приёма или тропосферной радиорелейной связи. Использование KCP позволит общаться чуть быстрее чистого UDP, а Shadowsocks — очень удобный способ завернуть свой трафик в KCP.

Fail2ban неплохо бы настроить ещё, чтобы отбивать попытки DDOSа на сервер. Но если вы не обижаете школьников, то кто вас будет DDOSить? Ставьте пароль подлиннее, благо его даже один раз в мобильники вбивать не придётся, и не парьтесь. Мой реальный пароль — 40 случайных символов.

Всё!

Shadowsocks Setup Guide for Windows

About Shadowsocks

  • Shadowsocks is an open-source encrypted proxy project, Typically, the client software will open a socks5 proxy on the machine it is run, which internet traffic can then be directed towards, similarly to an SSH tunnel.
  • Shadowsocks uses a self-designed protocol for secure communications. The encryption algorithms include AES, Blowfish, IDEA, and RC4. No handshaking is needed except for creating a TCP connection. Each request only forwards one connection and does not need to maintain the state of “always connected”, so it is relatively power-efficient on mobile devices. All traffic is algorithmically encrypted, allowing you to choose your own algorithm.
  • Clients are available on multiple major operating systems and platforms, including Windows, OSX, Android, Linux, and iOS systems and routers (OpenWrt).

System Requirements

Before you install, always make sure that your system meets the minimum system requirements.

You need Windows 7 SP1 or later to run Shadowsocks. If your operating system is older, upgrade to Windows 7 SP1 or later.

Installing Shadowsocks

Follow the instructions below to download and install Shadowsocks on Windows.

1. Download the client

Go to Shadowsocks download page.
Click on the latest version of Shadowsocks-x.x.x.zip to download (x.x.x is the version number).

download page

Or download form Client Portal

2. Unzip the client

Right-click on Shadowsocks-x.x.x.zip compressed file > «Extract all».
Click on «Browse» to select the directory where you want to unzip to> «Show extracted files when complete > «Extract».

Double-click on Shadowsocks.exe.

Shadowsocks.exe

3. Install the .NET Framework

After trying to run Shadowsocks.exe, you may see a dialog on your computer similar to the following one::

NetFramework errors

It means that your computer needs to install the .NET Framework.
Please click here to download the latest version of the .NET Framework.

Configure Shadowsocks Account

Log in to our website (https://portal.shadowsocks.ch) and do the following:

  • Click Services > My Services.
  • Select your available products & services> «Configuration file» > «Downloads» > «Download configuration file for Shadowsocks Windows».
  • You will get a gui-config.json file.

portal interface

On your computer, do the following:

  • Drag gui-config.json to the same directory as Shadowsocks.exe.

Drag gui-config.json to the same directory

Double-click on Shadowsocks.exe to see that the node information and account have been automatically filled.

  • On your system tray, right click ss icon > «Enable System Proxy».

Enable System Proxy"

You can also add nodes individually by QR code. On your computer, do the following:

This QR code also applies to other clients.

  • On your system tray, right click ss icon > «Servers»> «Scan QR Code from Screen».
  • Click «Enable System Proxy».

Enable System Proxy

Configure System Proxy Mode

  • On your system tray, right click alt text > «Mode» > «PAC Mode».

PAC Mode

  • If you cannot access the website using the PAC mode, click here to download the «pac configuration file» and drag pac.txt in the same directory as Shadowsocks.exe.

drag pac.txts

Attention

  • Global mode means that most of the traffic in the computer will go through a proxy, and it is not recommended for daily use, because it will easily let the torrent downloads through our proxy, and causing a serious consequence by receiving ISP complaints.

  • Load Balance and High Availability are used to spread traffic and improve usability. It is not for speeding up yor internet. If a node has better connection quality, it is recommended to select that server directly.

  • It is recommended to use PAC mode, which allows automatic proxy and access to non-blocked websites without proxying. (But in the Shadowsocks Win 2.x version, the built-in GFWList link has expired, causing the PAC regulations cannot be updated.)

  • You can choose to download the PAC file from our website, or when you encounter a website that cannot be accessed, edit the local PAC file to add that website address.

Shadowsocks Setup Guide for Windows

About Shadowsocks

  • Shadowsocks is an open-source encrypted proxy project, Typically, the client software will open a socks5 proxy on the machine it is run, which internet traffic can then be directed towards, similarly to an SSH tunnel.
  • Shadowsocks uses a self-designed protocol for secure communications. The encryption algorithms include AES, Blowfish, IDEA, and RC4. No handshaking is needed except for creating a TCP connection. Each request only forwards one connection and does not need to maintain the state of “always connected”, so it is relatively power-efficient on mobile devices. All traffic is algorithmically encrypted, allowing you to choose your own algorithm.
  • Clients are available on multiple major operating systems and platforms, including Windows, OSX, Android, Linux, and iOS systems and routers (OpenWrt).

System Requirements

Before you install, always make sure that your system meets the minimum system requirements.

You need Windows 7 SP1 or later to run Shadowsocks. If your operating system is older, upgrade to Windows 7 SP1 or later.

Installing Shadowsocks

Follow the instructions below to download and install Shadowsocks on Windows.

1. Download the client

Go to Shadowsocks download page.
Click on the latest version of Shadowsocks-x.x.x.zip to download (x.x.x is the version number).

download page

Or download form Client Portal

2. Unzip the client

Right-click on Shadowsocks-x.x.x.zip compressed file > «Extract all».
Click on «Browse» to select the directory where you want to unzip to> «Show extracted files when complete > «Extract».

Double-click on Shadowsocks.exe.

Shadowsocks.exe

3. Install the .NET Framework

After trying to run Shadowsocks.exe, you may see a dialog on your computer similar to the following one::

NetFramework errors

It means that your computer needs to install the .NET Framework.
Please click here to download the latest version of the .NET Framework.

Configure Shadowsocks Account

Log in to our website (https://portal.shadowsocks.ch) and do the following:

  • Click Services > My Services.
  • Select your available products & services> «Configuration file» > «Downloads» > «Download configuration file for Shadowsocks Windows».
  • You will get a gui-config.json file.

portal interface

On your computer, do the following:

  • Drag gui-config.json to the same directory as Shadowsocks.exe.

Drag gui-config.json to the same directory

Double-click on Shadowsocks.exe to see that the node information and account have been automatically filled.

  • On your system tray, right click ss icon > «Enable System Proxy».

Enable System Proxy"

You can also add nodes individually by QR code. On your computer, do the following:

This QR code also applies to other clients.

  • On your system tray, right click ss icon > «Servers»> «Scan QR Code from Screen».
  • Click «Enable System Proxy».

Enable System Proxy

Configure System Proxy Mode

  • On your system tray, right click alt text > «Mode» > «PAC Mode».

PAC Mode

  • If you cannot access the website using the PAC mode, click here to download the «pac configuration file» and drag pac.txt in the same directory as Shadowsocks.exe.

drag pac.txts

Attention

  • Global mode means that most of the traffic in the computer will go through a proxy, and it is not recommended for daily use, because it will easily let the torrent downloads through our proxy, and causing a serious consequence by receiving ISP complaints.

  • Load Balance and High Availability are used to spread traffic and improve usability. It is not for speeding up yor internet. If a node has better connection quality, it is recommended to select that server directly.

  • It is recommended to use PAC mode, which allows automatic proxy and access to non-blocked websites without proxying. (But in the Shadowsocks Win 2.x version, the built-in GFWList link has expired, causing the PAC regulations cannot be updated.)

  • You can choose to download the PAC file from our website, or when you encounter a website that cannot be accessed, edit the local PAC file to add that website address.

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

Расскажу об интересной штуке — Shadowsocks. Это средство для обеспечения защищённой связи с шифрованием и авторизацией по паролю.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выбор Ubuntu 18.04

Выбор дата-центра для VPS будет на той же странице создания сервера в 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

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

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

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 — перечисленного выше достаточно. Остальное — по вашему усмотрению.

5 Настройка 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. Однако, скорее всего, такая утилита вам не понадобится — браузеры с прокси работают нормально.

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

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

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

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

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

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

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

7 Подчеркну

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

В свете последних событий интернет в России уже начал закрываться. Например Facebook и Instagram уже заблокированы Роскомнадзором. Для того чтобы продолжить пользоваться этими сайтами вам понадобится VPN или прокси. Большинство распространённых протоколов VPN, вроде OpenVPN тоже можно заблокировать, что успешно делает Китай.

Однако есть решение. Для доступа к контенту из Китая была придумана технология Shadowsocks. Эта технология работает по принципу прокси, но с шифрованием. Она маскируется под https трафик, поэтому использование этого протокола сложно вычислить и заблокировать. В этой статье мы рассмотрим как выполняется настройка Shadowsocks Ubuntu, а также как подключится к серверу с Linux.

Что вам понадобится

Прежде всего, обратите внимание, что для работы Shadowsocks, как собственно и для VPN вам понадобится сервер, в стране, где нужные вам сайты не заблокированы. Именно на этом сервере устанавливается сервер Shadowsocks. На вашем компьютере или телефоне устанавливается клиент, который подключается к этому серверу. Между вашим клиентом и сервером трафик будет зашифрован поэтому провайдер, не сможет понять какой сайт вы открываете, поэтому не заблокирует его. А уже на сервере запрос будет расшифрован и в открытом виде поступит на сайт.

Если вы планируете использовать digitalocean, то для вас всё может быть довольно просто. Вы можете использовать Otuline Manager, разработанный в Google. Это панель управления, которая позволяет в несколько кликов развернуть Shadowsocks сервер на DigitalOcean или в облаке Google.

Но мы в этой статье не будем рассматривать Outline, мы сосредоточимся на ручной установке shadowsocks сервера. Я предполагаю, что у вас уже есть VPS или другой облачный сервер вне России, и вы можете подключится к нему по SSH.

Существует несколько вариантов сервера shadowsocks. Есть реализации на Python, Go и Си. В этой статье будет использоваться версия на Си (libev).

Реализация 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

{
"server": "176.97.65.151",
"mode":"tcp_and_udp",
"server_port":8388,
"local_port":1080,
"password":"55jOHcL9H01Y",
"timeout":86400,
"method":"chacha20-ietf-poly1305"
}

Также после внесения изменений в конфигурационный файл необходимо перезапустить сервис:

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

{
"server": "176.97.65.151",
"mode":"tcp_and_udp",
"server_port":8388,
"local_port":1080,
"password":"55jOHcL9H01Y",
"timeout":86400,
"method":"chacha20-ietf-poly1305"
}

После этого можно запустить клиент:

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. Как видите, это довольно просто. А какими сервисами, технологиями вы пользуетесь для обхода блокировок сайтов в интернете? Напишите в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Написал(а):

robot

3 лет,5 месяцев назад

https://github.com/shadowsocks/shadowsocks-windows

C#
If you want to keep a secret, you must also hide it from yourself.

[logo] Shadowsocks for Windows

Build Status

中文说明

Features

  1. System proxy configuration
  2. PAC mode and global mode
  3. GFWList and user rules
  4. Supports HTTP proxy
  5. Supports server auto switching
  6. Supports UDP relay (see Usage)
  7. Supports plugins

Download

Download the latest release from release page.

Requirements

Microsoft .NET Framework 4.7.2 or higher, Microsoft Visual C++ 2015 Redistributable (x86) .

Basic

  1. Find Shadowsocks icon in the notification tray
  2. You can add multiple servers in servers menu
  3. Select Enable System Proxy menu to enable system proxy. Please disable other
    proxy addons in your browser, or set them to use system proxy
  4. You can also configure your browser proxy manually if you don’t want to enable
    system proxy. Set Socks5 or HTTP proxy to 127.0.0.1:1080. You can change this
    port in Servers -> Edit Servers

PAC

  1. You can change PAC rules by editing the PAC file. When you save the PAC file
    with any editor, Shadowsocks will notify browsers about the change automatically
  2. You can also update PAC file from GFWList (maintained by 3rd party)
  3. You can also use online PAC URL

For Windows10 Store and related applications, please execute the following command under Admin privilege:

netsh winhttp import proxy source=ie

Server Auto Switching

  1. Load balance: choosing server randomly
  2. High availability: choosing the best server (low latency and packet loss)
  3. Choose By Total Package Loss: ping and choose. Please also enable
    Availability Statistics in the menu if you want to use this
  4. Write your own strategy by implement IStrategy interface and send us a pull request!

UDP

For UDP, you need to use SocksCap or ProxyCap to force programs you want
to be proxied to tunnel over Shadowsocks

Multiple Instances

If you want to manage multiple servers using other tools like SwitchyOmega,
you can start multiple Shadowsocks instances. To avoid configuration conflicts,
copy Shadowsocks to a new directory and choose a different local port.

Plugins

If you would like to connect to server via a plugin, please set the plugin’s
path (relative or absolute) on Edit Servers form.
Note: Forward Proxy will not be used while a plugin is enabled.

Details:
Working with non SIP003 standard Plugin.

Global hotkeys

Hotkeys could be registered automatically on startup.
If you are using multiple instances of Shadowsocks,
you must set different key combination for each instance.

How to input?
  1. Put focus in the corresponding textbox.
  2. Press the key combination that you want to use.
  3. Release all keys when you think it is ready.
  4. Your input appears in the textbox.
How to change?
  1. Put focus in the corresponding textbox.
  2. Press BackSpace key to clear content.
  3. Re-input new key combination.
How to deactivate?
  1. Clear content in the textbox that you want to deactivate,
    if you want to deactivate all, please clear all textboxes.
  2. Press OK button to confirm.
Meaning of label color
  • Green: This key combination is not occupied by other programs and register successfully.
  • Yellow: This key combination is occupied by other programs and you have to change to another one.
  • Transparent without color: The initial status.

Server Configuration

Please visit Servers for more information.

Experimental

Experimental Features

Development

  1. Visual Studio 2017 & .NET Framework 4.7.2 Developer Pack are required.
  2. It is recommended to share your idea on the Issue Board before you start to work,
    especially for feature development.

License

GPLv3

Open Source Components / Libraries

Caseless.Fody (MIT)    https://github.com/Fody/Caseless
Costura.Fody (MIT)     https://github.com/Fody/Costura
Fody (MIT)             https://github.com/Fody/Fody
GlobalHotKey (GPLv3)   https://github.com/kirmir/GlobalHotKey
Newtonsoft.Json (MIT)  https://www.newtonsoft.com/json
StringEx.CS ()         https://github.com/LazyMode/StringEx
ZXing.Net (Apache 2.0) https://github.com/micjahn/ZXing.Net

libsscrypto (GPLv2)    https://github.com/shadowsocks/libsscrypto
Privoxy (GPLv2)        https://www.privoxy.org
Sysproxy ()            https://github.com/Noisyfox/sysproxy

Понравилась статья? Поделить с друзьями:
  • Сценарий настоящий полковник
  • Сценарий наставник года
  • Сценарий наследники традиции
  • Сценарий наследие ядвиги
  • Сценарий нас водила молодость