- PVSM.RU - https://www.pvsm.ru -
В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего , — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.
И вот тут шикарный подарок нам сделал братский народ Китая. C 2012 года они пилят бесплатный открытый проект Shadowsocks. Это пара из программ для сервера и клиента, работающих по следующему принципу: клиент изображает из себя сервер SOCKS5 прокси, получает входящие соединения, шифрует их, транслирует на сервер и там выпускает в интернет. То есть, принцип работы похож на SSH туннель, но имеет массу достоинств и пару недостатков по сравнению с ним.
Пишем конфиг. Вот пример полного рабочего конфига.
{
"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, разработка Гугла для внутренних нужд, хорош для устройств, не умеющих аппаратный AES, а это совсем дешёвые мобильники и прочие умные утюги; и для параноиков, боящихся закладок в процессоре. Всем остальным использовать aes-256-cfb. Впрочем, оба шифра надёжные и проверенные временем.
Настройка fast_open уменьшает latency соединения, но требует ядро не ниже 3.7. И даже там работает не всегда, в частности, не работает, если виртуалка ваша сделана OpenVZ. На Scaleway-ских ARMах тоже не завелось. В общем, включайте, если работает.
Теперь, когда конфиг готов, устанавливаем пакет. Тут надо уточнить, что существуют две версии. Просто shadowsocks — референс, написанный на питоне, а shadowsock-libev это то же самое, но переписанное на чистом Си для скорости. Вот его и ставим. В самых новых линуксах он есть в основной репе, а для более старых — смотрите тут [4].
Ну и запускаем: ss-server -c config.conf. Всё должно работать. Не забудьте файрволл и автозапуск. Ликбез по администрированию линукса я тут писать не буду, поэтому если что-то не заработало, переходите к методу 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 для вас даже сам, без спроса, дырочку в файрволле для каждого порта просверлит, зараза такая.
Тут всё проще. Идём на сайт [2], качаем нужный клиент, настраиваем в интерфейсе. Для линуксоидов, естественно, есть консольный демон, кушающий конфиг из метода 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/ [5] и вбить в поиск 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 случайных символов.
Всё!
Автор: Barafu_Albino_Cheetah
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vpn/279727
Ссылки в тексте:
[1] VPS: https://www.reg.ru/?rlink=reflink-717
[2] Клиенты : https://www.shadowsocks.org/en/download/clients.html
[3] на нескольких портах: https://github.com/shadowsocks/shadowsocks/wiki/Configure-Multiple-Users
[4] смотрите тут: https://github.com/shadowsocks/shadowsocks-libev#install-from-repository
[5] https://duckduckgo.com/: https://duckduckgo.com/
[6] Источник: https://habr.com/post/358126/?utm_campaign=358126
Нажмите здесь для печати.