SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.05.25 14:07
Оценка:
Хочу на маршрутизаторе под OpenWRT поднять простейший SOCKS5-сервер с авторизацией по паролю. Перечитал до хренища тем, но в подавляющем большинстве случаев народ обсуждает обратную задачу — как завернуть трафик с маршрутизатора на чужой SOCKS5-сервер в обход провайдера. Ситуация с поднятием собственного SOCKS5-сервера какая-то очень мутная.

На обычных линуксах принято ставить squid, но для моих целей он чрезмерен примерно на 95%. Perplexity порекомендовал microsocks, но я не нашел его в собранном виде под MT7620 (ramips), а морочиться со сборкой самому категорически не хочется.

Следующей рекомендацией идет shadowsocks-libev, я его поставил, но в упор не понимаю, как это чудо должно работать. В "config ss_local" задаются local_address и local_port (по умолчанию 1080), я так понял, что это и есть локальный сервер. Но, если разрешить только его, то порт 1080 никто не слушает. Порт открывается только при дополнительном разрешении "config server", но там нужно задавать server и server_port — это это и зачем? Еще там задается password, но нет возможности задать user, в то время как для аутентификации в SOCKS5 нужна пара user/password.

То, что у них называется "документацией", представляет собой крайне сумбурное перечисление конкретных примеров с комментариями, которые понятны только тем, кто уже прошел по всем предусмотренным граблям.

Сообщения в системном логе, как это принято у линуксового софта, предельно убоги и невнятны:

daemon.info /usr/bin/ss-local[31174]: listening at 0.0.0.0:1080
daemon.info /usr/bin/ss-local[31174]: running from root user
daemon.err /usr/bin/ss-local[31174]: getpeername: Socket not connected


"Описания" от ИИ ничуть не лучше:

Enable the SOCKS5 proxy and set:
Local Port: 1080 (default SOCKS5 port)
Server: Enter your Shadowsocks server details (IP, port, password, encryption method).

config socks5_proxy
option enabled '1'
option local_port '1080'
option server '<your-server-ip>'
option server_port '<server-port>'
option password '<your-password>'
option method 'aes-256-gcm'


Что здесь означают "local_port" и "server_port", если мне нужно поднять у себя локальный сервер? Эти люди вообще умеют выражаться так, чтоб для понимания смысла написанного не приходилось привлекать мировое сообщество?

P.S. Вообще, многие описания создают впечатление, что в них термин "server" означает непосредственно сервер, а "proxy" означает дополнительную клиентскую компоненту, которая заворачивает локальный трафик через указанный сервер. В этом случае понятие "proxy server" полностью теряет смысл. Подобная чехарда в описаниях еще допустима для тупых юзеров, но когда ее активно используют разработчики и админы — это уже какой-то сюр...
Отредактировано 31.05.2025 14:52 Евгений Музыченко . Предыдущая версия .
Re: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Stanislaw K СССР  
Дата: 31.05.25 15:02
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>"Описания" от ИИ ничуть не лучше:


ЕМ>

ЕМ>config socks5_proxy
ЕМ> option enabled '1'
ЕМ> option local_port '1080'
ЕМ> option server '<your-server-ip>'
ЕМ> option server_port '<server-port>'
ЕМ> option password '<your-password>'
ЕМ> option method 'aes-256-gcm'


ЕМ>Что здесь означают "local_port" и "server_port", если мне нужно поднять у себя локальный сервер?


local_port не нужен.

<local_port>
Set the local port number.
Not available in server nor manager mode.



server '<your-server-ip>' ip входящие пакеты на который обрабатывает сервис. иногда не очевидно какой нужен. Пишите "0.0.0.0"
server_port '<server-port>' порт, прослушиваемый сервисом, на котором он принимает входящие соединения.
password '<your-password>' пароль.


ЕМ>Эти люди вообще умеют выражаться так, чтоб для понимания смысла написанного не приходилось привлекать мировое сообщество?


Это линукс, без сообщества никак нельзя.

Можно приблизительно ориентироваться на https://manpages.debian.org/testing/shadowsocks-libev/shadowsocks-libev.8.en.html

Приблизительно потому, что в разных линуксах разный формат опций и разный набор опций. Но хотя бы общее представление будет.
Все проблемы от жадности и глупости
Re: ставь нормальный http/https проксик
От: Великий Мессия google
Дата: 31.05.25 15:15
Оценка: :)
https://github.com/tinyproxy/tinyproxy
Re[2]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.05.25 16:48
Оценка:
Здравствуйте, Stanislaw K, Вы писали:

SK>local_port не нужен.


Что значит "не нужен"?

local_port задается в разделе ss_local, а server_port — в разделах server и ss_server. При этом умолчание для local_port — 1080 (один из типовых номеров для SOCKS), а для server_port — 9001/9002 (вообще нетипичный номер).

Ну и, как я уже писал, если включать эти разделы по отдельности, то никакой из портов не открывается на прием. local_port открывается, если включить оба раздела, а ни один из server_port мне вообще ни разу не удалось увидеть открытым.

Эта явно нечеловеческая логика реально бесит. Ладно бы эти поделия клепали мышевозы-формошлепы, которые умеют только ставить галочки в пунктах вроде "activate service". А когда такое делают люди, претендующие на титул "программист-разработчик", то очень уж за профессию обидно.

SK>password '<your-password>' пароль.


А как этот пароль задать на стороне клиента? В протоколе ж указывается пара user/password. У меня, конечно, есть подозрение, что это чудо использует в качестве user текущего пользователя. Если так, что это уже запредельная тупость.

SK>Это линукс, без сообщества никак нельзя.


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

SK>Приблизительно потому, что в разных линуксах разный формат опций и разный набор опций.


Не понял. Как они добиваются того, чтобы формат опций программы в разных линуксах получался разным? Это задается в тексте, и при компиляции выбирается в зависимости от версии линукса? У них это называется "совместимостью"?
Re: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Слава  
Дата: 31.05.25 18:50
Оценка: 12 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>На обычных линуксах принято ставить squid, но для моих целей он чрезмерен примерно на 95%. Perplexity порекомендовал microsocks, но я не нашел его в собранном виде под MT7620 (ramips), а морочиться со сборкой самому категорически не хочется.


dante работает ли в вашем окружении?
Re[2]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.05.25 21:24
Оценка:
Здравствуйте, Слава, Вы писали:

С>dante работает ли в вашем окружении?


Вроде есть, я его поставил, но он выглядит еще более убого — установщик из пакета не создал даже дефолтного конфига. "Документация" на сайте написана как будто для тех, кто и так все знает, и нужно лишь освежить память. Понять, как именно задаются некоторые параметры, из описания невозможно. Это и есть тот самый "unix way"? Мне казалось, юниксоиды как раз должны уметь делать внятные описания.

Еще что-то непонятное с аутентификацией клиентов. Такое впечатление, что любая альтернатива полностью открытому серверу требует непременного создания отдельных пользователей в системе. Возможности тупо прописать user/password в конфиге не нашел.
Re[2]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.06.25 09:29
Оценка:
Здравствуйте, Слава, Вы писали:

С>dante работает ли в вашем окружении?


Запинал кое-как без аутентификации. Способа задать user/password непосредственно для сервера я не нашел — нужно создавать пользователя в системе. Это нынче считается фактором безопасности? Мне одному кажется, что утечка пароля даже непривилегированного пользователя более опасна, чем утечка пароля на доступ к SOCKS-серверу?

Еще он почему-то не дает указать в external 0.0.0.0 — требует или конкретный IP, или конкретный же интерфейс, а eth0 в маршрутизаторе не является интерфейсом по умолчанию.

Штатного способа завершения демона не имеет — только через kill. При этом он создает с десяток дочерних процессов, но не всегда завершает их все — приходится вручную прибивать по одному.

Блин, и это софт с двадцатилетней историей... Возможно, еще лет через десять в нем пофиксят пару мелких глюков.
Re[3]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Stanislaw K СССР  
Дата: 01.06.25 11:09
Оценка: -1 :))
Здравствуйте, Евгений Музыченко, Вы писали:

SK>>local_port не нужен.


ЕМ>Что значит "не нужен"?


"не нужен" = можно не указывать в командной строке / закомментировать в конфиге / если указать будет прогнорирован. В режиме сервера принимающего соединения ветка кода к которой относится этот параметр не исполняется.

Он используется только в режиме клиента, когда shadowsocks подключается к (другому) серверу. тогда shadowsocks принимает запросы на локал порт и пересылает на server_ip:server_port.

ЕМ>Эта явно нечеловеческая логика реально бесит. Ладно бы эти поделия клепали мышевозы-формошлепы, которые умеют только ставить галочки в пунктах вроде "activate service". А когда такое делают люди, претендующие на титул "программист-разработчик", то очень уж за профессию обидно.


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

SK>>password '<your-password>' пароль.


ЕМ>А как этот пароль задать на стороне клиента? В протоколе ж указывается пара user/password. У меня, конечно, есть подозрение, что это чудо использует в качестве user текущего пользователя. Если так, что это уже запредельная тупость.


Вот честно — хз. Мне никогда не приходилось использовать shadowsocks. Всегда обходился

https://putty.org.ru/manual/chapter4#config-proxy

https://github.com/3proxy/3proxy

https://www.stunnel.org/



SK>>Приблизительно потому, что в разных линуксах разный формат опций и разный набор опций.


ЕМ>Не понял. Как они добиваются того, чтобы формат опций программы в разных линуксах получался разным? Это задается в тексте, и при компиляции выбирается в зависимости от версии линукса? У них это называется "совместимостью"?


В их лексиконе нет слова "совместимость".
Все проблемы от жадности и глупости
Re[4]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.06.25 20:15
Оценка:
Здравствуйте, Stanislaw K, Вы писали:

SK>Он используется только в режиме клиента, когда shadowsocks подключается к (другому) серверу. тогда shadowsocks принимает запросы на локал порт и пересылает на server_ip:server_port.


Вы, как обычно, с уверенным видом несете ахинею — прямо-таки наглядная иллюстрация синдрома Даннинга-Крюгера. Сильно подозреваю, что многие свои высказывания Вы копируете непосредственно из выдачи ИИ.

Правильный ответ таков: использование shadowsocks в качестве SOCKS-сервера (по RFC 1928) возможно исключительно в виде связки ss_local и ss_server. Первый работает в режиме "front-end", реализуя собственно протокол для клиента, а второй — в режиме "back-end", выдавая запросы целевым узлам и возвращая результаты. Между ними устанавливается шифрованный канал связи — для чего, собственно, и нужно указание метода шифрования.

Эти серверы называются "local" и "remote" потому, что первоначальной идеей было поднимать ss_local непосредственно на компьютере или сервере локальной сети, а ss_remote — где-то ближе к целевым узлам, и маскировать трафик между ними (разработчиком оригинала был китаец, который сделал его для обхода "великого файрвола"). Именно поэтому ss_local и не поддерживает авторизации — она тупо не имеет особого смысла в такой модели. Можно поднимать оба сервера на одном узле, тогда это будет SOCKS в одном флаконе, только открытый для всех.

К сожалению, в "документации" этот принцип описан довольно мутно, там постоянно путаются смыслы понятий "server", "proxy", "local" и "remote", отчего действительно создается ощущение, будто ss_server — это "собственно SOCKS-сервер", а ss_local — это некий "клиент", "редиректор" или еще что. Догадайся составители "документации" выбрать адекватную терминологию — не приходилось бы гадать и экспериментировать.

SK>В их лексиконе нет слова "совместимость".


В какой момент оно исчезло?
Re: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: aik Австралия  
Дата: 02.06.25 03:29
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>На обычных линуксах принято ставить squid, но для моих целей он чрезмерен примерно на 95%. Perplexity порекомендовал microsocks, но я не нашел его в собранном виде под MT7620 (ramips), а морочиться со сборкой самому категорически не хочется.


Не знаю про сокс (кроме "ssh -Dпорт"), но вообще почти всегда когда мне кажется "чрезмерно" (bind9 или apache2 против аналогов попроще) — я в итоге запускаю это самое чрезмерное, потому что именно оно умеет всё что мне в итоге надо, и гугл его знает. Эти тулзы допотопные и изначально написаны работать на чахлом железе, а современные роутеры для них это уже почти суперкомпьютер.

ЕМ>Следующей рекомендацией идет shadowsocks-libev, я его поставил, но в упор не понимаю, как это чудо должно работать.


Ну, как уже выяснили, это в первую очередь форвардилка к другому прокси, а не прокси сам по себе. https://en.wikipedia.org/wiki/Shadowsocks с этого начинает. Не то чтоб он принципиально не мог делать что ты хочешь, но и не обязан

А кстати почему именно socks, а не http-прокси? tinyproxy вполне годен (правда, пришлось хакнуть), чем socks лучше?
Re[5]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Stanislaw K СССР  
Дата: 02.06.25 06:21
Оценка: :)
Здравствуйте, Евгений Музыченко, Вы писали:

SK>>Он используется только в режиме клиента, когда shadowsocks подключается к (другому) серверу. тогда shadowsocks принимает запросы на локал порт и пересылает на server_ip:server_port.


ЕМ>Правильный ответ таков: использование shadowsocks в качестве SOCKS-сервера (по RFC 1928) возможно исключительно в виде связки ss_local и ss_server.


Весь этот увлекательный "богатый внутренний мир" shadowsocks не имеет отношения к заданному вопрос про его же внешние интерфейсы.

SK>>В их лексиконе нет слова "совместимость".


ЕМ>В какой момент оно исчезло?


Примерно между 000.00.0001 и 000.00.0002 pre alfa. и именно это решение сообщества породило чрут докер снап прочие костыли.
Все проблемы от жадности и глупости
Re[2]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.06.25 10:33
Оценка: 3 (1)
Здравствуйте, aik, Вы писали:

ЕМ>>Следующей рекомендацией идет shadowsocks-libev


aik>как уже выяснили, это в первую очередь форвардилка к другому прокси, а не прокси сам по себе.


Это не "выяснили", а "ввели в заблуждение".

aik>почему именно socks, а не http-прокси? tinyproxy вполне годен (правда, пришлось хакнуть), чем socks лучше?


Он непрозрачный (не передает целевому узлу информацию о клиенте).
Re[6]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.06.25 10:35
Оценка:
Здравствуйте, Stanislaw K, Вы писали:

SK>Весь этот увлекательный "богатый внутренний мир" shadowsocks не имеет отношения к заданному вопрос про его же внешние интерфейсы.


Что такое "внешние интерфейсы"? Вопрос был задан о том, как поднять собственный SOCKS5-прокси. shadowsocks по определению не является таковым "в одном флаконе", он изначально разделен на две части, каждую из которых нужно устанавливать и настраивать отдельно, и ни одна из которых сама по себе не способна работать в качестве SOCKS5-прокси.
Re[7]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Stanislaw K СССР  
Дата: 02.06.25 11:13
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

SK>>Весь этот увлекательный "богатый внутренний мир" shadowsocks не имеет отношения к заданному вопрос про его же внешние интерфейсы.


ЕМ>Что такое "внешние интерфейсы"?


Интерфейсы через которые принимаются соединения от других (НЕ shadowsock) программ,

ЕМ>Вопрос был задан о том, как поднять собственный SOCKS5-прокси.




ЕМ>shadowsocks по определению не является таковым "в одном флаконе", он изначально разделен на две части, каждую из которых нужно устанавливать и настраивать отдельно, и ни одна из которых сама по себе не способна работать в качестве SOCKS5-прокси.


И теперь вы поняли что в конфиге серверной части параметр local_port (можно не указывать/игнорируется если указан) ?
Все проблемы от жадности и глупости
Re[8]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.06.25 11:32
Оценка:
Здравствуйте, Stanislaw K, Вы писали:

SK>И теперь вы поняли что в конфиге серверной части


У него обе части серверные.

SK>параметр local_port (можно не указывать/игнорируется если указан) ?


Нет, не понял, ибо я этого параметра вообще никогда не видел в разделе ss_server. Возможно, он там когда-то и был, но я не в курсе.

local_port указывается в разделе ss_local.
Re[9]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Stanislaw K СССР  
Дата: 02.06.25 11:46
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

SK>>И теперь вы поняли что в конфиге серверной части


ЕМ>У него обе части серверные.


Но одна более серверная.

{browser (client)}--->{(as "server") shadowsocks client}--->{shadowsocks server 2 ("as client to")}--->next hop
Все проблемы от жадности и глупости
Re[3]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Слава  
Дата: 03.06.25 14:36
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

С>>dante работает ли в вашем окружении?

ЕМ>Запинал кое-как без аутентификации.

А нет ли у вас желания сделать свой и нормальный socks5 сервер на C++ или Rust? Протокол вроде несложный, а со всеми вашими претензиями к имеющемуся софту я согласен. У squid и apache была чудесная документация, а у этих — дрянь какая-то.
Re: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Janus Россия  
Дата: 03.06.25 16:39
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Хочу на маршрутизаторе под OpenWRT поднять простейший SOCKS5-сервер с авторизацией по паролю. Перечитал до хренища тем, но в подавляющем большинстве случаев народ обсуждает обратную задачу — как завернуть трафик с маршрутизатора на чужой SOCKS5-сервер в обход провайдера. Ситуация с поднятием собственного SOCKS5-сервера какая-то очень мутная.

А зачем вам SOCKS5-сервер ? С трудом представляю использование SOCKS5-сервера в домашней сети . Вы опишите задачу
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
Re[2]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Великий Мессия google
Дата: 03.06.25 16:44
Оценка:
ему что бы на форуме сидеть
а сокс5 что бы трафик удобнее было снифать
Re[3]: SOCKS5-сервер на маршрутизаторе под OpenWRT
От: Janus Россия  
Дата: 03.06.25 19:09
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

ВМ>ему что бы на форуме сидеть

ВМ>а сокс5 что бы трафик удобнее было снифать

Ну предположим , а SOCKS5 через SSH уже отменили ? Или это не спортивно?
... Хорошо уметь читать между строк. Это иногда
приносит большую пользу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.