Как стать автором
Обновить

Комментарии 77

1) велосипед же, не?
я, например, сто лет как пользуюсь аналогичной замечательной прогой 3proxy… те же 5 строк конфига, но еще и юзеров поддерживает, проброс портов и много чего еще.
2) в айфончиках дёргать нативную качельку VPN лично я считаю удобнее. Поэтому на своём европейском сервере развернул как socks5, так и strongswan (для разворачивания которого, кстати, так же есть готовые скрипты из области yes->yes->done).

Родной vpn андроида разве умеет nat-passthrough?

к сожалению, не имею ни у себя, ни в ближайшем окружении ни одного андроида уже много лет, потому не интересовался вопросом...

Сравнив с 3proxy, вы упустили идею. Shadowsocks шифрует весь трафик между абонентом и сервером, а 3proxy, судя по документации, только пароль. А ещё он относительно новый, много админского софта не умеет ещё его распознавать.
но погодите,shadowsocks вроде не шифрует трафик как vpn, или я ошибаюсь?
Ошибаетесь. Трафик между клиентом и сервером полностью шифруется AESом. И отнюдь не по паролю для аутентификации, а как надо. Это трафик между приложением и клиентом не шифруется, но они либо на одной машине стоят, либо в доверенной локалке.
можете еще создать статью про отличия vpn и shadowsocks а то я нигде не нарыл, и еще вопрос от себя, смысл делать openvpn over shadowsocks если shadowsocks вроде бы как со своей задачей справляется?
Для статьи про отличия нажмите кнопку Home на клавиатуре. OpenVPN через Shadowsocks прокладывают для передачи того, что в Proxy не лезет, и для проброса портов.
Заработало, большой пасиб!
Ремарка: чтобы в Win 10 Заработал Windows Store, надо и в настройках клиента Shadowsocks включить System Proxy, и в настройках Windows сделать, как я сказал. Почему так — не знаю.

Кстати, пока разбирался с этой проблемой, нашёл диалог на сайте техподдержки Микрософта: человек спрашивает, почему у него через прокси не работает Windows Store, а техподдержка на полном серьёзе ему отвечает, что прокси используют только плохие хакеры, поэтому все встреченные прокси надо удалять. Хорошо хоть не посоветовали вызвать полицию.
Китайские хакеры стоят за многочисленными взломами международных компаний
habr.com/post/358110
А при чём тут китайские хакеры? Shadowsocks пилят обычные программисты для себя, его главная цель — пробивать китайский государственный файерволл. Косвеноо об эффективности говорит тот факт, что несколько лет назад одного из разработчиков навестила полиция и заставила удалить код из репозитория (надо ли говорить, что Git позволяет быстро отмотать любое изменение назад, поэтому никакого эффекта это удаление не возымело).
chacha20-ietf-poly1305, разработка Гугла для внутренних нужд

Это вы что-то странное написали, chacha20 и poly1305 это известные открытые алгоритмы за авторством Daniel J. Bernstein (https://cr.yp.to/chacha.html, https://cr.yp.to/mac.html), референсные имплементации которых находятся в Public Domain.


Оба этих алгоритма, а также в каком-то смысле родственный им Curve25519/ed25519 (https://cr.yp.to/ecdh.html), проще, чем аналогичные им AES-GCM и RSA/ECDSA, у них меньше размер ключей при той же криптостойкости, и они сравнимы по скорости с аппаратными реализациями аналогов и быстрее софтверных. Собственно, поэтому они и появились в свежих версиях TLS и свежих имплементациях SSH. Кстати, на них же основана библиотека libsodium, которая дает ну очень простой и удобный API для шифрования, подписей и прочих операций.


Кстати, хорошей альтернативой для OpenVPN будет, имхо, Wireguard. Он гораздо проще в настройке чем OpenVPN и тем более другие виды VPN, он очень быстрый за счет того что по умолчанию идет как модуль ядра (хотя преполагается что будут и юзерспейсовые имплементации, особенно для не-Linux систем), основан на state-of-the-art криптографии (как раз вышеописанные chacha20, poly1305, ed25519), и очень активно развивается.

Алгоритмы Бернстейна находятся в Public Domain. А Гугл его активно и публично начал внедрять у себя, создавая софт, чем и продвинул в массы. Стал бы алгоритм применяться где-то ещё если бы не Гугл — неизвестно. Думаю, в недрах ГитХаба можно найти ещё много хороших, открытых и никому не нужных алгоритмов. Но в статье я уточню. AES быстрее, когда аппаратно ускоренный.

Wireguard — хорошая штука, но у него клиент только для линукса. К тому же, это снова VPN с виртуальной сетью. Настроить выборочное использование — большой бубен надо, однако.
Уже не только.
Windows и macOS — это ещё не смотрел.
Android — этим пользуюсь, работает отлично. Но выборочного использования к сожалению нет. Работает без бубнов на стоковом нексусовом ядре.
Под iPhone вроде нет.
НЛО прилетело и опубликовало эту надпись здесь
А, и еще — в Android Oreo ситуация с вечно висящими уведомлениями стала лучше — уведомления сервисного типа, как те которые генерирует Shadowsocks, теперь не так лезут на глаза.
НЛО прилетело и опубликовало эту надпись здесь
Интересная штука, надо попробовать, спасибо)
curl https://<что угодно> | sudo bash
Сомнительная практика.

Кто разбирается — могут сначала прочитать скрипт, он простой. Кто не разбирается — всё равно, чтобы настроить самому, придётся копипастить из интернета какие-то непонятные команды — невелика разница.


Понятно, что не надо так настраивать продакшн на котором деньги лежат, но купленный чисто для vpn виртуалку или контейнер — вполне приемлимо.

Эх, только для Ubuntu. Для Centos нету… Нет ли в запасниках подобного под Centos 7?

Лениво — под Ubuntu готовые пакетики уже есть, под CentOS руками собирать надо. Правда можно через докер его там запускать.


Хотя для обычного socks(danted) мне PullRequest с поддержкой CentOS прислали, может и для shadowsocks кто-нибудь осилит.

Почему же руками? Есть и пакеты в репозиториях. Я всё из них и ставил.

Ну так это же прекрасно. Осталось дописать это в скрипт и прислать мне PullRequest :)

Да если бы я в этом нормально разбирался, то не сетовал бы на то, что нет готового скриптика :) К сожалению, я потратил довольно много времени на настройку у себя на сервере и получилось у меня скорее методом тыка. Т.е. я не то что скрипт не напишу, я даже для себя инструкцию не готов составить. Вся надежда на добрых людей среди админов/программистов…

Octavian Dodita прислал патч, теперь скрипт работает также на CentOS и RHEL7(вдруг кто-то захочет купить за $349 ОС для VPS-сервера за $5/месяц :).

Отлично, спасибо вам обоим!
Дельный скрипт! Респект. Но под Debian 8 пришлось переделывать, отправил PullRequest (если еще не лениво его поддерживать).

Поддержка Debian 8 закончилась в июне 2018, LTS поддержка заканчивается в июне 2020. Я не могу принять PR для системы, под которую нет обновлений безопасности.


Но спасибо за PR и спасибо, что напомнили про скрипт. Пойду добавлю поддержку Ubuntu 20.04.

Хозяин-барин, как говорится!
Debian 8 сбалансированная система, еще долго проживет, а критичные обновления вручную всегда пересобрать можно.
На Jessie все установил и работает, а нужно будет и Debian 9 в свой fork добавлю.
У меня восьмерка ради Sovereign живет, на Debian 9 слишком хлопотно переносить пока что.

Способ 4: скачать Outline от Google, который сам вам сервер арендует и сам все настроит, не надо совершенно в консоль лезть + клиенты под все платформы и управление черёд GUI.

Да, хорошая штука, я смотрел. Но там автоматика только для DigitalOcean, а у него много подсетей РоскомПозор забанил(может уже разбанил, не слежу). Для остальных хостингов он говорит "заведите аккаунт сами, сделайте wget -qO- ... | bash и так далее :)

есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход.


А чтобы не было таких камней, рекомендуется посредством того же iptables дропать весь трафик, идущий не через tun интерфейс (за вычетом трафика самого vpn'a).

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

Альтернативный способ — убрать основной шлюз, а до vpn-сервера прописать прямой маршрут.

Поправьте конфиг, пропущена запятая после «method»:«aes-256-cfb»
иначе вылезает ошибка
image
Уупс. Сделал.
поднимал для телеги dante (5й носковый сервер) на копеечном vps — работает без проблем.
тестирую на том же копеечном vps нагрузку от shadowsocks — от одного юзера нагрузки нет.

как понимаю, для данной тулзы нужен ещё и отдельный софт на каждого клиента?

Да, нужен.

Да, потому что штатный протокол SOCKS5 шифрования не предусматривает, только аутентификацию.

У меня dante не завёлся, съел 3ГБ памяти на 1000 клиентов. Пришлось написать простой асинхронный сокс-сервер из одного файла на питоне: https://github.com/alexbers/tgsocksproxy. Он по умолчанию сконфигурирован для телеги, т.е. не пропускает трафик на другие сервера и поднимается в одну команду python3 tgsocksproxy.py. У меня работает без какого либо вмешательства уже три недели. Правда, сейчас телеграм и без проксей нормально работает

Ещё нашёл очень крутой проект https://github.com/StreisandEffect/streisand, который автоматически устанавливает на сервер кучу vpn'ов, включая shadowsocks. Судя по количеству коммитов и форков, проект очень популярен

О нем в каждой второй подобной теме вспоминают.
Только учтите, что он во-первых, резок на поворотах: недавно выкинули strongswan и у сообщества не спросили; во-вторых, глючит на OpenVZных виртуалках, и я даже не знаю, почему. У него нет интерфейса переконфигурации. То есть, если после установки решишь что-то поменять, то либо изучай, как всё устроено, либо форматируй сервак.
А под Windows Mobile клиента нет, хотя OpenVPN тоже:(
Я бы ещё понял windows phone, но windows mobile… Даже свой старенький HTC HD Mini давно перепрошил на андроид, потому что в стоковом WM6.5 всё совсем плохо, если не просто звонить/слать sms.
А сможет кто-нибудь дополнить как лучше настроить shadowsocks так, чтобы трафик шел частично — только для заблокированных подсетей хотя бы? В идеале конечно как настроить клиент прямо на роутере с openwrt
Ну вам частично распределять нужно трафик из браузера же? Ставьте туда расширение, которое я рекомендую в статье. С ним можно делать по-умолчанию выкл, а для нужных сайтов вкл. Там даже какой-то импорт списков имеется. Не знаю, не трогал.
Можно использовать PAC. Например. Поддерживает как домены, так и айпи\подсети.
Спасибо, как то проглядел что shadowsocks поддерживает pac списки
Насколько безопасно использовать в ss шифрование aes-128-cfb?
Вполне безопасно. AES 192 и 256 придумали для армейских бюрократов: они требовали шифр трёх разных уровней стойкости — получите. А что даже 128 достаточно для любых их целей — бюрократов не волнует.

Другое дело, что экспериментруя на своей VPS, я не заметил сколько-либо значимой разницы в потребляемых ресурсах для 128 и 256, потому что аппаратное ускорение.
Пробовал поднимать у себя. Всё было хорошо на домашнем пк и через wifi, но через мобильную сеть было просто чудовищно медленно, страницы в браузере открывались с задержкой в десяток секунд. KCPTUN делал чуть получше, но не принципиально. Батарейка улетала на глазах. При этом стоящий рядом, на том же сервере, l2tp/ipsec работает нормально.
1) не Obfs-proxy, а simple-obfs, оно может не только в невалидный ssl, но еще и в http
2) github.com/fconn/ss2ch/wiki
На волне, решил воспользоваться Outline от гугла, уже выше писали про него. Донельзя удобная штука, действительно вместе с оформление сервера, потратил 10 минут.

Но вот с производительностью какая-то беда. Ощутимо быстрее садится батарейка под osx в рабочем режиме, а если качать торрент, или в принципе активно нагрузить канал до 30-40мбит — пару ядер может быть полностью нагружено, на сервере нагрузка тоже рисуется приличная. Любопытно, то ли что-то не так с outline реализацией от гугла, его клиентом под osx, или все-таки в принципе с самим shadowsocks?
Когда я смотрю с него 8k видео с Ютуба — потребление процессора на сервере достигает 8%. Это виртуалка с 1 ядром Intel® Xeon® CPU E5-2630 v3 @ 2.40GHz.
Попробуйте поменять алгоритм шифрования. Пощёлкайте настройку fast-open.
Ещё есть простой шифр rc4-md5
Все что «от Гугла» вызывает вопросы по конфиденциальности (вон данные в Инкогнито мод в Хроме собирали, попали под суд).
Отличный клиент по Мак ShadowsocksX-NG
  1. Основное достоинство shadowsocks, это то что у него нет синатуры то есть его трудно вычленить и заблокировать. OpenVPN, Tor и SSH довольно не плохо блокируются Великим Китайским. Для OpenVPN есть патчи, но я отвлекаюсь.
  2. На самом дешевом дроплете DO за $5 в моих тестах Shadowsocks показывал 50Mbps против 20Mbps на OpenVPN
  3. Китайские товарищи написали удобный комбаин https://github.com/ginuerzh/gost он позволяет поднять http proxy, выстроить цепочку proxy и еще много много чего. Я заменил им полумертвый polipo
  4. Для IOS есть клиент Potatso Lite он работает и бесплатен

А существует ли в природе клиент shadowsocks которые может слушать одновременно несколько лоакльных портов и пробрасывать их соответственно на разные сервера? Win64, если садится в трей — вообще было бы идеально.

Нет. Но я только что попробовал сделать копию клиента под Винду и запустить одновременно два — всё работает. Так что можете добиться желаемого, запуская несколько клиентов одновременно.

Клиент очень легкий, можно запускать несколько.

У меня на винде (shadowsocks-win) иногда бывают ситуации, когда он выдает ошибки, которые пропадают после обновления страницы («500 Internal Privoxy Error»). Таймаут в клиенте стоит 20 сек, на сервере 60. Можно ли что-то сделать с этим?
Поробуйте вкл-выкл fast-open. Так же попробуйте другие шифры, потому что вместе с ними меняется вся логика работы протокола. aes-128-gcm например, отличен от aes-128-cfb тем, что делает чексуммы на udp и имеет авторизацию сервера перед клиентом.
Сначала браузером, желательно примитивным «изкоробочным», а не основным, пройти на duckduckgo.com и вбить в поиск my ip.

Не благодарите
Спасибо!
А то ifconfig.me сбоит периодически.
Отдельное спасибо! Вообще чистый текст, без html.
❯ grep myip ~/.zshrc
alias myip="curl ifconfig.co"
ZSH может быть не установлен на VPS. Я на одноразовые вообще ничего не ставлю ничего, кроме требуемых сервисов.
alias работает везде: хоть в zsh, хоть bash, хоть в csh. разница только в названии файла конфига.
В целом работает, скорость пока не тестировал.
Небольшое «но» — поскольку пароль к серверу в plain text, да еще и в JSON конфиге, нужно быть осторожнее со спецсимволами. Не заметил, что в сгенерированном пароле попался символ \ — как результат, гадал, почему не заработало.

Помогите, пожалуйста, умные люди...

aes-256-cfb отсутствует в новых Windows-клиентах

Попробовал найти config.json и заменил там
aes-256-cfb на aes-256-gcm

Так вообще не подключается. Видимо, мало было сменить буквы в конфиге.

Как можно сменить режим шифрования корректно, чтобы сервер подхватил режим? Спасибо

Может, у меня старая версия сервера, которая не знает такого метода шифрования?...

Отвечу сам. Вписал метод ЧАЧА, и все заработало. )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации