13
Настройка ruantiblock для совместной работы с прокси сервером sing‑box
gSpot edited this page 2025-12-25 04:19:06 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Прокси сервер sing-box поддерживает некоторые популярные протоколы проксификации и обфускации трафика (для обхода продвинутых методов блокировки средствами DPI), в том числе Shadowsocks, VLESS, VMess, Hysteria2, Trojan и прочие. Доступен в репозитории OpenWrt начиная с версии 23.05..

1. Установка sing-box:

OpenWrt >= 25.12:

apk update
apk add sing-box

OpenWrt <= 24.10:

opkg update
opkg install sing-box

2.1 Конфигурация sing-box с tun интерфейсом:

Для работы в связке с ruantiblock необходимо задать в настройках sing-box создание виртуального сетевого интерфейса для локальных клиентов в секции inbounds. Этот тип подключения, по сути, аналогичен VPN туннелю 3-го уровня (OpenVPN, Wireguard, PPTP и пр.). Соответственно, ruantiblock будет настроен в режиме VPN с перенаправлением трафика заблокированных хостов на интерфейс sing-box.

  • Бэкап стандартного конфига:

    cp /etc/sing-box/config.json /etc/sing-box/config.json.bak
    
  • Создание собственного конфига /etc/sing-box/config.json:

    {
      "log": {
        "level": "warn"
      },
      "inbounds": [
        {
          "type": "tun",
          "tag": "tun-in",
          "interface_name": "tun1",
          "inet4_address": "172.19.0.1/30",
          "auto_route": false,
          "strict_route": false,
          "sniff": true,
          "sniff_override_destination": true
        }
      ],
      "outbounds": [
        {
          "type": "shadowsocks",
          "tag": "ss-out",
          "server": "<SERVER>",
          "server_port": <PORT>,
          "method": "<METHOD>",
          "password": "<PASSWORD>"
        }
      ],
      "route": {
        "auto_detect_interface": true
      }
    }
    

    В этом примере важна секция inbounds с блоком типа tun ("type": "tun"). Этот блок отвечает за поднятие виртуального сетевого интерфейса tun1, на который sing-box будет принимать пакеты локальных клиентов. Секция outbounds определяет настройки для соединения с удалённым прокси сервером, через который пойдёт трафик до заблокированных сайтов. В примере - секция для протокола Shadowsocks (подстановки <SERVER>, <PORT>, <METHOD>, <PASSWORD> необходимо заменить соответствующими параметрами вашего shadowsocks сервера). Примеры секций для других протоколов можно найти в документации sing-box.

  • Проверка созданного конфига:

    sing-box --config=/etc/sing-box/config.json check
    

2.2 Включение и запуск sing-box:

    uci set sing-box.main.enabled="1"
    uci set sing-box.main.user="root"
    uci commit sing-box
    service sing-box enable
    service sing-box start

2.3 Настройка межсетевого экрана для режима tun:

Во-первых, необходимо создать новый неуправляемый сетевой интерфейс OpenWrt (SING_BOX_TUN) и связать его с виртуальным сетевым интерфейсом sing-box (tun1, который был задан в конфиге ранее):

    uci batch << EOI
    set network.SING_BOX_TUN='interface'
    set network.SING_BOX_TUN.proto='none'
    set network.SING_BOX_TUN.device='tun1'
    set network.SING_BOX_TUN.defaultroute='0'
    set network.SING_BOX_TUN.delegate='0'
    set network.SING_BOX_TUN.auto='1'
    EOI
    uci commit network
    service network restart

Во-вторых, добавить новую зону межсетевого экрана sing_box для интерфейса SING_BOX_TUN (разрешить входящий и исходящий трафик, маскарадинг и перенаправление из зоны lan):

    section_name=$(uci add firewall zone)
    uci batch << EOI
    set firewall.${section_name}.name='sing_box'
    set firewall.${section_name}.input='ACCEPT'
    set firewall.${section_name}.output='ACCEPT'
    set firewall.${section_name}.forward='ACCEPT'
    set firewall.${section_name}.masq='1'
    add_list firewall.${section_name}.network='SING_BOX_TUN'
    EOI
    section_name=$(uci add firewall forwarding)
    uci batch << EOI
    set firewall.${section_name}.src='lan'
    set firewall.${section_name}.dest='sing_box'
    EOI
    uci commit firewall
    service firewall restart

2.4 Настройка ruantiblock в режиме VPN

В настройках ruantiblock включаем режим VPN, задаём VPN-интерфейс tun1:

    uci set ruantiblock.config.proxy_mode='2'
    uci set ruantiblock.config.if_vpn='tun1'

Также, если необходимо, для пользовательских списков (на примере list1):

    uci set ruantiblock.list1.u_proxy_mode='2'
    uci set ruantiblock.list1.u_if_vpn='tun1'

Применение настроек:

    uci commit ruantiblock
    service ruantiblock restart

3.1 Конфигурация sing-box с прозрачным прокси TProxy:

Здесь sing-box будет принимать соединения в качестве локального прозрачного прокси. Ruantiblock будет настроен в режиме прозрачного прокси для заворачивания трафика заблокированных сайтов в sing-box.

  • Бэкап стандартного конфига:

    cp /etc/sing-box/config.json /etc/sing-box/config.json.bak
    
  • Создание собственного конфига /etc/sing-box/config.json:

    {
      "log": {
        "level": "warn"
      },
      "inbounds": [
        {
          "type": "tproxy",
          "tag": "tproxy-in",
          "listen": "0.0.0.0",
          "listen_port": 1100,
          "sniff": false
        },
      ],
      "outbounds": [
        {
          "type": "shadowsocks",
          "tag": "ss-out",
          "server": "<SERVER>",
          "server_port": <PORT>,
          "method": "<METHOD>",
          "password": "<PASSWORD>"
        }
      ],
      "route": {
        "auto_detect_interface": true
      }
    }
    

    Секция inbounds с блоком типа tproxy ("type": "tproxy") определяет параметры прозрачного прокси для входящих соединений. Прокси должен принимать соединения на всех адресах ("listen": "0.0.0.0"), это необходимо для приёма соединений как удалённых хостов из домашней сети, так и локальных приложений самого роутера. Параметры секции outbounds аналогичны описанным в разделе для tun конфигурации выше.

  • Проверка созданного конфига:

    sing-box --config=/etc/sing-box/config.json check
    

3.2 Включение и запуск sing-box:

    uci set sing-box.main.enabled="1"
    uci set sing-box.main.user="root"
    uci commit sing-box
    service sing-box enable
    service sing-box start

3.3 Настройка ruantiblock в режиме прозрачного прокси:

В настройках ruantiblock включаем режим прозрачного прокси, задаём тип прокси 1 (tproxy) и TCP-порт прокси:

    uci set ruantiblock.config.proxy_mode='3'
    uci set ruantiblock.config.t_proxy_type='1'
    uci set ruantiblock.config.t_proxy_port_tcp='1100'

Также, если необходимо, для пользовательских списков (на примере list1):

    uci set ruantiblock.list1.u_proxy_mode='3'
    uci set ruantiblock.list1.u_t_proxy_type='1'
    uci set ruantiblock.list1.u_t_proxy_port_tcp='1100'

Применение настроек:

    uci commit ruantiblock
    service ruantiblock restart