LINUX.ORG.RU
решено ФорумAdmin

Shadowsocks [+ simple-tls] = работает частично

 ,


0

1

Всем привет. Решил я в общем сделать себе на VPS выход в мир, так сказать. И в принципе, я его даже сделал, но никак не могу победить некоторые сайты, например Рутрекер.

Началось все с обычного Outline, который я поставил и настроил, и в принципе, меня он устраивал, но проксировать весь трафик довольно быстро перехотелось из-за ограничений со стороны российских сайтов.

Далее я случайно узнал, что оказывается, сервер Outline можно использовать как обычную Shadowsocks проксю, что и было сделано. Локально был поднят клиент, на Firefox накачен FoxyProxy и вбито туда все, что нужно.

И вот тут я столкнулся с проблемой: одним из того, что нужно, был рутрекер и вот его я никак не могу победить. Если пытаюсь на него зайти через Shadowsocks, то получаю в FF ошибку PR_END_OF_FILE_ERROR. При этом, если я пускаю весь трафик через тот же клиент Outline, то все работает. Если использую какой-нибудь чужой прокси, то тоже все работает.

Я попробовал сделать то же самое с хромом и результат аналогичный.

Что интересно, рутрекер - это, наверное, единственное, что у меня не хочет работать. Остальные https сайты работают нормально.

Я подумал, что ну может меня DPI какой-то режет или что-то такое и сделал себе чистый shadowsocks-rust сервер, заодно применив к нему simple-tls плагин. Никаких отличий от простого Shadowsocks я не заметил.

Что я делаю не так? Конфиг Shadowsocks сервера:

{
    "server": "0.0.0.0",
    "server_port": PORT,
    "password": "PASSWORD",
    "timeout": 120,
    "method": "chacha20-ietf-poly1305",
    "no_delay": true,
    "fast_open": true,
    "reuse_port": true,
    "workers": 1,
    "ipv6_first": false,
    "nameserver": "8.8.8.8",
}

Systemd Unit simple-tls плагина:

[Unit]
Description=simple-tls standalone server service
Documentation=man:shadowsocks-rust(8)
After=network.target
[Service]
Type=simple
User=nobody
Group=nogroup
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
LimitNOFILE=51200
ExecStart=/etc/shadowsocks-rust/simple-tls-plugin -b :443 -d 127.0.0.1:PORT -s -key /etc/shadowsocks-rust/my_ecc_cert.key -cert /etc/shadowsocks-rust/my_ecc_cert.cert
[Install]
WantedBy=multi-user.target

Локальный конфиг клиента:

{
    "servers": [
        {
            "address": "ADDRESS",
            "port": 443,
            "password": "PASSWORD",
            "method": "chacha20-ietf-poly1305",
            "plugin": "/etc/shadowsocks-rust/simple-tls-plugin",
            "plugin_opts": "n=DOMAIN;no-verify;cert-hash=HASH"
        },
    ],
    "local_port": 1090,
    "local_address": "127.0.0.1"
}

Так может там обращение к другому домену есть? Открой вкладку сеть и посмотри, куда он стучится. Может часть вызовов идёт напрямую без прокси?

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

Такая мысль мне в голову приходила. Но я получаю такую же ошибку даже если устанавливаю свой прокси в качестве прокси на весь FF.

Slaviro ()
Ответ на: комментарий от Slaviro

На каком этапе и в каком конфиге что нужно поправить не скажу, но:

PR_END_OF_FILE_ERROR - означает, что FF дошел до конца своего списка поддерживаемых cipherов и не нашел о чем согласоваться с ответной стороной.

BOOBLIK ★★ ()
Ответ на: комментарий от ValdikSS

Надо будет посмотреть, спасибо. Возможно это получше, чем то, что у меня, хотя впн конечно не совсем то, что хотелось бы. Хочется именно прокси, чтобы просто вбить все адреса, которые мне нужны, и забыть.

Slaviro ()
Последнее исправление: Slaviro (всего исправлений: 2)

В общем, оказалось, что проблема была в DNS. Arubacloud, у которого я взял серверы, видимо, режет некоторые сайты, типа того же рутрекера. Судя по всему, я немного неправильно настроил прокси, в результате DNS шли к Aruba, а не гуглу, к которому должны были. При этом Outline направляет DNS не на Aruba, но куда-то географически близко к нему, поэтому все и работало. В общем, поправил конфиг и теперь все хорошо. Всем спасибо.

Slaviro ()
Ответ на: комментарий от Slaviro

С обычным socks 5 всё прекрасно работает. Используй обычный ssh, в нём уже есть socks прокси и пропиши его в браузер.

AVL2 ★★★★★ ()
25 мая 2022 г.

Привет))искал в инете инструкцию по настройке клиента shadowsocks5+simple tls и наткнулся на ваш пост,можете помочь? Проблема вот в чëм,сервак я настроил с плагином,всë ок,и клиентов на винде и андроиде настроил,всë пашет,делал вот по этому гайду: https://4pda.to/forum/index.php?showtopic=744431&st=3060#entry113691884

Но в этой инструкции к сожалению есть настройка только лишь для винды и андроида,а хочется всë это дело запустить на убунте домашней))))))не пойму что делать(((((из рускоязычных обрывков в инете понял,что клиентский конфиг такой же как и на серваке,а вот что делать с tls плагином не пойму,как настроить,куда чë вписывать?……..как в автозапуск shadowsocks5+simpl tls запихнуть,в линуксе новичëк))))))поможете?

artfikx ()
Ответ на: комментарий от artfikx

Привет. В целом, особо ничего сложного. Я и на сервере и дома использую shadowsocks-rust. По поводу его установки, вроде на гитхабе написано как минимум. В общем, по результату, тебе нужно понять две вещи:

  1. Куда он установился
  2. Как его включить при старте системы

Дальше делаешь примерно следующее:

  1. Идешь в директорию куда класть конфиг
  2. Создаешь там файл конфига.

Путь до директории и имя конфига зависят от системы, пакета и положения звезд на небе. У меня это /etc/shadowsocks-rust/config.json. Имя и путь можно подсмотреть, когда будешь сервис запускать, он скорее всего, выругается, что не может найти конфиг и скажет, где он это сделать пытался. Ну, либо в service файле для systemd тоже можно глянуть.

  1. Качаешь simple-tls плагин и пихаешь его рядом с конфигом. В целом, делаешь все то, что в инструкции написано применительно к серверу.

  2. В конфиг пишешь что-то типа:

{
    "servers": [
        {
            "address": "SERVER_IP",
            "port": SERVER_PORT,
            "password": "PASSWORD",
            "method": "METHOD",
            "plugin": "/etc/shadowsocks-rust/simple-tls-plugin",
            "plugin_opts": "n=DOMAIN;no-verify;cert-hash=HASH"
        },
    "local_port": LOCAL_PORT,
    "local_address": "127.0.0.1"
}

SERVER_IP - IP сервера

SERVER_PORT - порт по которому работает simple-tls, то, что после его опции -b, например, 443.

PASSWORD - пароль от shadowsocks сервера

METHOD - метод шифрования shadowsocks сервера

DOMAIN - домен, под который генерил сертификат

HASH - хэш сертификата

LOCAL_PORT - порт на котором это добро локально будет сидеть.

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

Slaviro ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.