Перейти к основному содержимому

Отправка сайтов через прокси 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).

  • Сет с доменами или адресами сайтов. См. Добавление сайтов в сет.

Настройка​

  1. Откройте Сеты и откройте сет или нажмите Создать сет и добавьте сайты на вкладке Цели.
  2. Откройте вкладку DNS & Маршрутизация, затем Маршрутизация трафика.
  3. Включите Включить маршрутизацию.
  4. В Режим маршрутизации выберите Upstream SOCKS5 proxy.
  5. Введите Хост upstream SOCKS5 и Порт upstream SOCKS5: для прокси на самом роутере - 127.0.0.1 и порт его входящего подключения SOCKS5.
  6. Заполните Имя пользователя (опционально) и Пароль (опционально), если прокси их требует.
  7. Включите Маршрутизировать UDP через upstream, только если прокси поддерживает UDP.
  8. Нажмите Сохранить или Создать сет для нового сета.

Передавать имя домена в upstream включено по умолчанию: прокси получает имя сайта и разрешает его сам. Поля описаны в разделе Upstream SOCKS5 proxy. Стратегия обхода сета в этом режиме не применяется: до сайтов доходит прокси.

Проверка результата​

  1. Добавьте ipinfo.io в домены сета на время проверки.

  2. На устройстве выполните curl -s https://ipinfo.io/ip или откройте этот адрес в браузере. Он покажет выходной адрес прокси.

  3. Откройте Логи. Строка соединения заканчивается пометкой [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, или пока через прокси идёт соединение к тому же назначению. Если исключить это устройство в Цели > Исходные устройства, его трафик останется вне сета.