Комментарии 10
А можно добавить поддержку proxy protocol на слушающем сокете ? Полезно, если dumbproxy стоит за nginx, разруливающем подключения на основе sni.
Патч могу прислать, но там буквально несколько строчек кода listener обернуть (ну и параметр командной строки добавить)
Вот, кстати, у меня недоступен из СПб. Недели 2-3 назад начались проблемы с мегафоном (перестали резолвится поддомены). А сейчас (я только пару дней назад приехал и начал разбираться) и сам сайт не доступен (timeout), в том числе и по проводу, В списке заблокированых не значится. Traceroute умирает где-то недалеко от Вашингтона (из Европы - доходит до конца, но по совершенно другой траектории).
На андроиде проблема с DNS решается включением Private DNS, на Windows 11 DoH, до iPhone/iPad жены еще не добрался.
Есть такое, да. Потому и встал вопрос альтернатив. Может с их стороны заблокировано. А передвину-ка я его на последнее место, раз такое дело.
Заюзайте `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.
dumbproxy — что нового?