Отправка сайтов через прокси SOCKS5
Сет в режиме Upstream SOCKS5 proxy передаёт соединения своих сайтов прокси SOCKS5, например Xray или sing-box на роутере или на другом хосте в сети. Устройствам не нужны собственные настройки прокси. Режим помогает и там, где блокировка построена по белому списку и прямые соединения к остальным адресам отбрасываются.
Требования
-
Прокси SOCKS5, доступный с роутера, его адрес и порт. Xray и sing-box передают UDP, только если UDP включён на их входящем подключении.
-
Поддержка TPROXY в ядре. На OpenWrt с nftables:
opkg install kmod-nft-tproxy kmod-nft-socketНа сборках с
apkте же пакеты ставитapk add. Остальные системы перечислены в разделе Требования. Кнопка Информация о системе в Настройки > Система > Сервис показывает в разделе Возможности ядра, доступен ли Прозрачный прокси (TPROXY). -
Сет с доменами или адресами сайтов. См. Добавление сайтов в сет.
Настройка
- Откройте Сеты и откройте сет или нажмите Создать сет и добавьте сайты на вкладке Цели.
- Откройте вкладку DNS & Маршрутизация, затем Маршрутизация трафика.
- Включите Включить маршрутизацию.
- В Режим маршрутизации выберите Upstream SOCKS5 proxy.
- Введите Хост upstream SOCKS5 и Порт upstream SOCKS5: для прокси на самом роутере -
127.0.0.1и порт его входящего подключения SOCKS5. - Заполните Имя пользователя (опционально) и Пароль (опционально), если прокси их требует.
- Включите Маршрутизировать UDP через upstream, только если прокси поддерживает UDP.
- Нажмите Сохранить или Создать сет для нового сета.
Передавать имя домена в upstream включено по умолчанию: прокси получает имя сайта и разрешает его сам. Поля описаны в разделе Upstream SOCKS5 proxy. Стратегия обхода сета в этом режиме не применяется: до сайтов доходит прокси.
Проверка результата
-
Добавьте
ipinfo.ioв домены сета на время проверки. -
На устройстве выполните
curl -s https://ipinfo.io/ipили откройте этот адрес в браузере. Он покажет выходной адрес прокси. -
Откройте Логи. Строка соединения заканчивается пометкой
[proxy]:TCP 192.168.1.37:20854 → 34.117.59.81:443 ipinfo.io sni-set=ipinfo.io [proxy]
Если пометки [proxy] нет, соединение не перехвачено, обычно потому, что его адреса нет в сете. Один адрес проверять надёжнее, чем обычный сайт, который подгружает части с других хостов.
Прямое подключение при отказе прокси
Прямое подключение при недоступности upstream соединяет напрямую, пока прокси недоступен. Сайты продолжают открываться, но без прокси, и провайдер видит, куда идут соединения. Выключенное значение, оно же по умолчанию, подходит для блокировки по белому списку, где прямое соединение всё равно не работает, и для схем, где сбой должен быть заметен.
Когда upstream недоступен
Пока прокси не отвечает, каждое соединение к адресам сета зависает и затем обрывается, на любом TCP-порту. Адрес CDN, общий с посторонними сайтами, ломает и их. b4 показывает это:
- в разделе Требует внимания на дашборде: Сет X: прокси ... недоступен, с окончанием «трафик этого сета не проходит» или, при включённом откате, «трафик идёт напрямую»;
- пометкой прокси недоступен рядом с сетом на панели Сеты дашборда;
- в логе, не чаще раза в минуту, и ещё раз, когда прокси снова отвечает.
Причина - на стороне прокси: он не запущен, слушает другой порт или адрес в сете указан неверно.
Если не работает
- Нет пометки
[proxy]. Обычно адреса, к которому подключилось устройство, нет в сете. Устройство с шифрованным DNS скрывает свои запросы от b4; помогает отключить на нём защищённый DNS или перечислить домены сайта в сете. - Устройства в сети зависают, а соединения самого роутера работают. Включён bridge netfilter, как его включает пакет
dockerdна OpenWrt. Это видно в строке Bridge netfilter окна Информация о системе, а исправление описано в разделе Bridge netfilter. - Не работает UDP или QUIC. Если Маршрутизировать UDP через upstream включено, а прокси не поддерживает UDP, UDP сета отбрасывается, и лог называет сет. SOCKS-порт Tor UDP тоже не поддерживает. Если опция выключена, b4 отклоняет QUIC сета, и браузеры идут через прокси по TCP.
- Часть соединений идёт мимо прокси по IPv6. Пока Поддержка IPv6 выключена, b4 обрабатывает только IPv4, а дашборд показывает Трафик IPv6 обходит все сеты.
- Прокси работает на другом устройстве, а сет покрывает его сервер. Собственные соединения прокси на роутере b4 узнаёт по процессу. На другом устройстве - только у сета, нацеленного на
0.0.0.0/0или::/0, или пока через прокси идёт соединение к тому же назначению. Если исключить это устройство в Цели > Исходные устройства, его трафик останется вне сета.