Проксификация на Linux

Я скомпилил shadowsocks-rust

export RUSTFLAGS="-C target-cpu=native"
cargo build --release

Все работает
sslocal -b "127.0.0.1:1080" --server-url "ss://ID@IP:PORT"
Это пока что без всяких плагинов, обфускаций.
А вот как бы его пустить через вышестоящий прокси? Если такой опции нет, то печально. В линуксе проксификаторы почему-то толком не работает. Кстати, посоветуйте нормальный рабочий проксификатор.

Сижу читаю про redsocks, iptables… Блин, как же все-таки на винде все по человечески сделано в Proxifier.

V2fly поддерживает и любые комбинации/цепочки прокси, и «проксификацию» (создание входящего порта для приёма перенаправления через iptables), но для новичка его настроить нетривиально.

Я уже настроил redsocks.
Это было увлекательнейшее исследование. Зато iptables осилит наверняка и перенаправление виртуалки, с чем не справляется виндовый Proxifier.

Все потому что в Linux (iptables) нет per applications правил. Поэтому приходится городить других пользователей/группы.

Посмотрел трафик shadowsocks - чистый мусор по TCP. DPI его не должен детектить (если только не отсекать все неопознанное). Слабое место если спалится IP.
И вот интересно, соединение с shadowsocks сервером устанавливается только когда браузер/клиент сделает какой-нибудь запрос (через локальный socks 127.0.0.1:1080)

Можно настроить v2ray-plugin в режиме вебсокета и пустить трафик через клаудфлару. Отличимо от обычного HTTPS не будет, разве что будет палиться домен в ClientHello.

Это заблуждение: v2ray websocket-трафик через CDN отличается от обычного браузерного соединения, т.к. websocket-библиотека, используемая в v2ray, не поддерживает upgrade в http2-соединениях, и v2ray вынужден использовать http/1.1, что отражается в TLS ALPN.

Я уже настроил redsocks

DNS запросы идут мимо прокси :man_facepalming:
Там предполагается, что “тупой” DNS резолвер redsocks (на порту 5300?!, но он идет на UDP 53) вернет “усеченный” UDP ответ и клиент по стандарту должен повторить запрос по TCP:53 (что проксифицируется), но это не работает, конечно.

А логи redsocks удалось отключить только так:

/etc/redsocks.conf
log = "file:/dev/null";

Слишком много выводит.

И чего я голову ломал. proxychains и torsocks работают, оказывается. Без плясок, DNS пробрасывают. С aria2c не работают, может я поэтому их сбросил со счетов. Вернее, proxychains с aria2c работает, но только с опцией --check-certificate=false почему-то.
На руборде на эту арию тоже жаловались.
У меня еще раньше были траблы с Opera 12 (/usr/bin/opera скрипт запускает /usr/lib/opera/opera), но сейчас нет. Мистика.

На XP Proxifier вот эту арию пробрасывает.
И на линуксе proxychains и torsocks с этой статичной арией работают. А с системной траблы.

Боюсь, это невозможно — proxychains и torsocks перехватывают библиотечные вызовы динамически слинкованных программ, а со статически слинкованными они не работают, запросы идут вне прокси.

Да, вы правы. Недоглядел.
aria2c static проксируется redsocks+iptables, только DNS напрямую.
В бинарнике вообще нет динамического раздела (readelf -d и ldd ничего не показывают), довольно редкое явление.

Заодно проверил Proxifier 3.21 в XP:
TCP и DNS идут через прокси (если прокси недоступен, никуда не идут). Хотя, DNS в некоторых программах идет напрямую, например в nslookup.exe
ICMP не работает, завернут в localhost.
UDP идет напрямую мимо прокси.

Линуксовые наблюдения о не TCP протоколах:
proxychains ping: ICMP напрямую
torsocks ping: не работает с setuid приложением
proxychains traceroute: ICMP напрямую
torsocks ping: socket операция не позволена
proxychains fopnu torrent client: UDP напрямую
torsocks fopnu torrent client: операция не позволена, нет соединения с UDP

В общем, надежнее всего redsocks и torsocks. Но torsocks socks only, а мне больше нужен вышестоящий http прокси.

ICMP не поддерживается ни одним прокси-протоколом, вообще. Для полноценного туннеля существует VPN.

Отправка DNS напрямую (мимо http прокси) в redsocks проксификаторе имеет свои забавные положительные особенности. Дело в том, что мой http прокси блочит некоторые сайты (ну такая политика предоставления услуг, я с этим мирюсь, достойной альтернативы нет), а если отправлять DNS запросы мимо и соединяться через прокси по IP адресам, то все заблокированные сайты открываются. И в таком случае админ прокси видит только айпишники. Это видимо редкое явление, когда DNS запросы не разрешаются через http прокси. Таких настроек в браузерах даже нет. Вот socks штатно можно мимо разрешать.

@ValdikSS UDP, ICMP, IPv6 как раз желательно бы иметь возможность резать при проксификации. Но зависит от целей, часто это не требуется.

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