Pull to refresh
123
0
Vladislav Yarmak @YourChief

11x engineer

Send message

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

Три противоречащих точки зрения, конечно, лучше, чем две.

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

Допустим, у меня есть вот такой конфиг 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 ""
}

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

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

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

А с чего у вас уверенность, что цензор не может осуществлять пробы с ИП-адресов клиентов, которых видел?

Так там всё то же самое, если включить TLS. А если его не включать (или в dumbproxy убрать опцию -autocert) то шифрования не будет.

P.S. Если запускаете steady-tun где-то в локальной сети, то чтобы он принимал соединения не только со 127.0.0.1 нужно ещё добавить опцию -bind-address 0.0.0.0

Значит приложение стучится в проксю не через TLS.

Дело в том, что тут есть путаница. Eсть HTTPS-прокси как обычный HTTP-прокси, но он поддерживает метод CONNECT для прохождения HTTPS-трафика через него. А есть HTTPS-прокси который (обычно) умеет всё вышеперечисленное, но связь с самим прокси осуществляется через TLS (т.е. HTTP-proxy-over-TLS). В статье выше как раз про такой, защищённый прокси. Судя по документации proxifier под HTTPS-проксями понимает обычные HTTP-прокси.

Однако это не проблема, если приложение поддерживает только обычные прокси. Есть вот такой адаптер, который оборачивает соединение в TLS. Вы его запускаете где-то у себя (на клиенте или где-то в локалке) вот так:

steady-tun -dsthost proxy.example.com -dstport 443

И он будет слушать порт 57800 и пересылать соединения уже через TLS. На него уже можно подключаться как на обычный прокси (HTTPS-прокси в терминах proxifier). При этом, конечно же, proxifier должен быть настроен так, чтобы не перенаправлять соединения steady-tun в прокси, иначе работать не будет.

P.S. Документация: https://github.com/SenseUnit/dumbproxy#dumbproxy

Вики с несколькими полезными рецептами: https://github.com/SenseUnit/dumbproxy/wiki

В этом руководстве всё сделано через опцию -autocert, которая получает сертификаты автоматически через ACME (по умолчанию - LetsEncrypt). Сертификат выпускается сразу, как только приходит соединение для которого нет сертификата в кэше. Расположение кэша автоматически выписываемых сертификатов задаётся опцией -autocert-dir (по умолчанию в ~/.dumbproxy/autocert).

Если вам нужно задать свой сертификат, это можно сделать опциями -cert и -key.

А где вы здесь видите SOCKS?

Оптика оптике рознь. Если FTTX и свитч провайдера выключается вместе с общим электричеством, то нет. PON таким страдать не должны -- там всё оборудование пассивное. Буквально стекляшки просто без какого либо питания. Я живу в регионе, где часто и надолго выключают свет, поэтому только резервное питание роутера и PON-терминала спасает -- даже сотовые сети работают плохо.

Ориентированный означает, что пройти по такому графу можно только в одном направлении.

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

Так называемые L2-коммутаторы не являются участниками ip-сетей и в алгоритме кратчайших путей не участвуют. Они являются мостами для организации взаимодействия подключенных маршрутизаторов, позволяя экономить физические порты роутеров и уменьшать количество настроек.

Немного зауженный взгляд на свитчи. Нельзя сказать, что написанное Вами неверно, но я б сказал что свитчи являются для Ethernet примерно тем же, чем роутеры для IP-сетей.

Поиск по ресурсу выдал примерно 20 страниц со статьями, но к сожалению среди них не было ни одной подробной про работу алгоритма в ip-сетях.

Обычно алгоритм выбирают под задачу, а не ищут решения задачи с использованием какого-то алгоритма. Насколько я знаю, алгоритм Беллмана-Форда используется в RIP и BGP. Почему так? У меня только догадки. Может быть Вы могли бы в статье раскрыть свой выбор. Заодно и рассказать про оценку сложности конкретно вашей реализации на плюсах с использованием set вместо очереди с приоритетом для непосещённых узлов, что получается если её сравнить по вычислительной сложности и затратам памяти с тем же Беллманом-Фордом.

После прочтения я так и не понял, что для меня в этой статье, как бы я мог воспользоваться этим. Может разве что кто-то захочет написать свою реализацию протокола динамической маршрутизации. Отчасти статья выглядит как курсовая работа, раздутая до требуемого объёма листингами.

Защиту детей ещё приплетите.

Вы можете попробовать opera-proxy. Он предоставляет доступ к "VPN" оперы и поддерживает подключение через вышестоящий прокси, например Tor. См. опцию -proxy.

1
23 ...

Information

Rating
Does not participate
Registered
Activity