Обновить
126
Vladislav Yarmak@YourChief

11x engineer

Отправить сообщение

Есть всякие dumbproxy с маскировкой, но там не такая тривиальная настройка цепочек прокси (не фанат писать JS), я бы не хотел на него перелезать без необходимости.

Там вышестоящий прокси тривиально настраивается параметром -proxy https://... Пример есть в ридми: https://github.com/SenseUnit/dumbproxy#using-with-other-applications

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

Телеграм сможет, если локально тоже запущен dumbproxy, нацеленный на удалённый dumbproxy по HTTPS: https://github.com/SenseUnit/dumbproxy#using-with-other-applications

Странно, что это стало вообще проблемой: conntrackd и keepalived существуют именно для этой задачи уже 20 лет.

Добавил readFile(path: string): string в v1.39.0.

Дефолтных настроек достаточно, они выведут все ошибки. Если вы запускаете по рецепту из статьи, то логи собирает systemd. Вывести последние 1000 строк можно так: `journalctl -u dumbproxy -n 1000`

Я мог бы прикрутить загрузку JSON из файла в JS скриптах, которые контроллируют доступ и выбирают прокси. Ну а Вы там себе конвертируйте геобазу из формата максмайнда в жсон, да смотрите из скрипта куда кого пульнуть. Как Вам такое?

О, тогда значит Вы могли бы мне помочь снова заставить их работать или хотя бы попытаться понять, что именно фильтруется.

Есть несколько вариантов, что может быть не так:

  • Прокси банят после активной пробы потому что он отвечает 407 ответом на запросы соединения без пароля. Лечится опцией hidden_domain в параметрах в урле авторизации на сервере. Либо просто реджектить другим кодом: `auth basicfile://?path=/opt/dumbproxy/dumbproxy.htpasswd&else=reject-static://?code=403`. Это не будет хорошо работать с браузерами, лучше подключаться к прокси через dumbproxy на клиенте: `dumbproxy -proxy h2://LOGIN:PASSWORD@vps.example.org`.

  • Могут банить по отпечатку TLS клиента. Решается использованием опции uTLS, если с сервером dumbproxy разговаривает тоже dumbproxy на клиенте: `dumbproxy -proxy h2://LOGIN:PASSWORD@vps.example.org?utls-fp=HelloChrome_Auto`

  • Можно убрать из запроса SNI, на клиенте: `dumbproxy -proxy h2://LOGIN:PASSWORD@vps.example.org?utls-fp=HelloChrome_Auto&sni=`

  • И можно попробовать заставить имитировать скачивание файла вначале соединения, чтобы обмануть фильтры по фильтру трафика. На клиенте:

    `dumbproxy -proxy h2://LOGIN:PASSWORD@vps.example.org?utls-fp=HelloChrome_Auto&sni=&fetchrandom=100000-500000`

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

Да, конфиг что надо.

Понятно. Ну голый SOCKS5 без шифрования скорее всего не пройдёт. Потребуется где-то запустить какую-то обёртку на стороне клиента, чтобы обеспечить мост SOCKS5 <-> TLS. Можно в dumbproxy на сервере включить TLS даже для socks5, но телевизор такое не примет. Можно на самом телевизоре запустить dumbproxy с опциями `-mode socks5 -proxy h2://LOGIN:PASSWORD@vps.example.org` и тогда он будет слать всё в шифрованном виде дальше. А сам ТВ настроить на использование этого сокса на адресе 127.0.0.1. Возможно, потребуется приложение терминала (типа Termux) добавить в исключения, если настройка прокси на TV заруливает все приложения в прокси.

Опция proxyproto вам вообще не нужна, скорее всего - она для тех, у кого dumbproxy стоит позади HAProxy или Nginx. Вычитывает метку адреса вначале соединения, если она там есть.

А где у вас stunnel был запущен на клиентской стороне? На ПК?

Проще всего будет иметь запущенными три разных экземпляра приложения. Но это довольно редкий случай, обычно нужно либо то, либо другое: либо dumbproxy запускают у себя на клиенте как "адаптер" к удалённому прокси и тогда там нет шифрования соединения (HTTP/SOCKS5), либо на удалённом сервере и тогда оно там действительно нужно (HTTPS).

CAA в DNS это ограничение, в которое должны смотреть УЦ при выпуске, а не клиенты при проверке.

Не, вообще первый раз про него слышу. Даже если и поддерживает, всё равно лучше сделать на уровне роутинга по SNI, как по ссылке, что я дал выше. dumbproxy работает в т.ч. по http/2, а nginx не поддерживает http/2 апстримы в принципе, поэтому эффективное мультиплексирование и некоторые другие фичи тогда работать не будут.

Там целый скриптовый движок есть чтобы любое сочетание правил нарисовать можно было. Опцией -js-access-filter задаём файл со скриптом:

const allowedIPs = new Set([
	"203.0.113.99",
]);

function ipFromAddrPort(addrPort) {
	return addrPort.replace(/\:[^:]+$/, "").replace(/^\[(.*)\]$/, "$1");
}

function access(req, dst, username) {
	const ip = ipFromAddrPort(req.remoteAddr);
	if (allowedIPs.has(ip)) {
		return true;
	}
	print(`rejecting IP address ${ip} due to IP filter restrictions`);
	return false;
}

Добавил рецепт в вики проекта: https://github.com/SenseUnit/dumbproxy/wiki/Recipe:-restricting-access-by-IP-address

А у софта нету никаких крутилок для ограничения трафика по логинам?

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

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

Мда, какой-то позор просто... Ну оставлю тогда рефералочку, но не знаю как там с оплатой из России дела обстоят. У меня весь вебсерфинг через неё, всё устраивает и стоит 2 евро в месяц.

https://webdock.io/en/pricing?ReferralCode=WDREFAJNY

Насчёт скорости дешёвых VPS слишком категоричное заявление. Масса дешёвых хостеров предоставляют гигабитный порт. Другое дело, что сейчас почти везде объём трафика лимитирован (однако, зачастую лимит вполне достаточный).

Да, и гигабит с полным дуплексом, насквозь.

Можно на уровне TCP форвардить, разделяя соединения с помощью nginx по SNI: https://github.com/SenseUnit/dumbproxy?tab=readme-ov-file#example-http-proxy-over-tls-pre-issued-cert-behind-nginx-reverse-proxy-performing-sni-routing

Либо можно просто вместо nginx использовать haproxy, который не имеет проблем с методом CONNECT.

1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Одесса, Одесская обл., Украина
Зарегистрирован
Активность

Специализация

Технический директор
Ведущий
От 15 000 $
Golang
Python
Базы данных
Linux
Системное программирование
Системное администрирование