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

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

А можно добавить поддержку proxy protocol на слушающем сокете ? Полезно, если dumbproxy стоит за nginx, разруливающем подключения на основе sni.

Патч могу прислать, но там буквально несколько строчек кода listener обернуть (ну и параметр командной строки добавить)

А давайте. Если есть настроение, то присылайте пуллрек.

Отлично: на днях потестирую с актуальной версией и отправлю.

https://freemyip.com/

Вот, кстати, у меня недоступен из СПб. Недели 2-3 назад начались проблемы с мегафоном (перестали резолвится поддомены). А сейчас (я только пару дней назад приехал и начал разбираться) и сам сайт не доступен (timeout), в том числе и по проводу, В списке заблокированых не значится. Traceroute умирает где-то недалеко от Вашингтона (из Европы - доходит до конца, но по совершенно другой траектории).

На андроиде проблема с DNS решается включением Private DNS, на Windows 11 DoH, до iPhone/iPad жены еще не добрался.

Есть такое, да. Потому и встал вопрос альтернатив. Может с их стороны заблокировано. А передвину-ка я его на последнее место, раз такое дело.

Может с их стороны заблокировано

HTTP/HTTPS - возможно, хотя обычно заглушку вешают на страницу, но еще и их DNS-сервер ns-1.freemyip.com (IP адрес тот-же) на DNS запросы из СПб не отвечает (тот же timeout).

Заюзайте `set-src-hints://?hints=X.X.X.X` не только для PBR, но и для форварда трафика через конкретные интерфейсы, будет пушка-ракета.

Так уже можно делать.

Допустим, у меня есть вот такой конфиг Wireguard для Proton VPN:

[Interface]
# Key for ws
# Bouncing = 3
# NAT-PMP (Port Forwarding) = off
# VPN Accelerator = on
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
Address = 10.2.0.2/32
# DNS = 10.2.0.1
PreUp = ip rule add from 10.2.0.2 lookup 1000
PostDown = ip rule del from 10.2.0.2 lookup 1000
Table = 1000

[Peer]
# NL-FREE#106
PublicKey = ExWwfvm2QK3oJhrz4s0tsBLt1PVBiONhljwh5jt40Bk=
AllowedIPs = 0.0.0.0/0
Endpoint = 185.182.193.108:51820

Строка 11 задаёт, что маршруты для этого соединения будут добавлены не в главную таблицу маршрутизации, а в дополнительную с номером 1000. Т.е. интерфейс не станет маршрутом по умолчанию.

Строки 9 и 10 добавляют и удаляют при старте правило, что для исходящего адреса 10.2.0.2 используется таблица маршрутизации с номером 1000. Всё, этого достаточно для избирательной отправки в разные интерфейсы. Уже упомянутый выше скрипт

function getProxy(req, dst, username) {
	const normalizedHostname = dst.originalHost.replace(/\.$/, "").toLowerCase()
	if (normalizedHostname === "2ip.ru" || normalizedHostname.endsWith(".2ip.ru")) {
		return "set-src-hints://?hints=10.2.0.2"
	}
	return ""
}

отправит трафик в заданный домен избирательно.

443 порт получается занят, а nginx со стандартным портом хочется для разного. nginx в метод connect не умеет нормально. Может ли dumbproxy форвардить запросы с методами отличными от connect на другой порт, без проверок авторизации ?

Можно на уровне 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.

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

Публикации