Натройка Sing-box+TUN (пропускать РФ и RU)

Started by tuzzemets, January 23, 2026, 09:28:03 AM

Previous topic - Next topic
!!!СТАТЬЯ ВСЕ ЕЩЕ В РАЗРАБОТКЕ!!!

Всем привет. В общем, долгая дорога по настройке sing-box завершена, если кому интересно напишу список команд и конфиг файл(все заворачиваем в tun, но ru,рф ходят напрямую) пришлю :

Установка Sing-box:
1) pkg install bash
2)mkdir /tmp/sing-box
2) cd /tmp/sing-box
3) fetch https://github.com/Opnwall/Sing-box-for-OPNsense/releases/download/1.0.8/sing-box.for.OPNsense.zip
4) unzip sing-box.for.OPNsense.zip
5) chmod +x install.sh
6) bash ./install.sh
7) На этом этапе, должен появитья в opnsense в VPN "Proxy Suite", если нет, то просто перезагрузите страницу".

Настройка конфига sing-box:
1) Можно через веб интерфейс, в VPN > "Proxy Suite" скопировать и вставить мой конфиг (в моём конфиге нужно будет добавить информацию о своём ключе) и нажать на иконку дискеты, тем самым сохранив.
2) Вариант через терминал, просто открываем через редактор (vi,vim,nano) файл config.json по пути /usr/local/etc/sing-box/config.json, ну и удаляем из него все что написал дядюшка Ли и вставляем мой конфиг (в моём конфиге нужно будет добавить информацию о своём ключе) и сохраняем.
3) Перезапускаем сервис командой service sing-box restart
4) Проверям, что в VPN>Proxy Suite нет ошибок (во втором окне будет лог).

 #
Мой конфиг
{
"log": {
"disabled": false,
"level": "info",
"timestamp": true
},

"experimental": {
"clash_api": {
"external_controller": "0.0.0.0:9090",
"external_ui": "/usr/local/etc/sing-box/ui",
"default_mode": "Rule"
},
"cache_file": {
"enabled": true,
"path": "/usr/local/etc/sing-box/cache.db"
}
},

"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "tun_3000",
"mtu": 1450,
"address": ["172.19.0.0/24"],
"auto_route": false,
"strict_route": false,
"endpoint_independent_nat": false,
"stack": "system"
}
],

"outbounds": [
{
"tag": "select",
"type": "selector",
"default": "auto",
"outbounds": ["auto"]
},

{
"tag": "auto",
"type": "urltest",
"outbounds": ["vless-main"],
"url": "https://www.gstatic.com/generate_204",
"interval": "1m",
"tolerance": 50
},

{
"tag": "vless-main",
"type": "vless",
"server": "АДРЕС САЙТА VPS",
"server_port": 443,
"uuid": "ID Пользовательского ключа",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "www.google.com",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИЧНЫЙ КЛЮЧ",
"short_id": "НУ И SID"
}
}
},

{
"tag": "direct",
"type": "direct"
}
],

"route": {
"rules": [
{
"action": "sniff",
"inbound": "tun-in",
"sniffer": ["http", "tls", "quic"]
},

{
"action": "route",
"rule_set": ["GeoSite-Private"],
"outbound": "direct"
},

{
"action": "route",
"domain_keyword": ["yandex", "yastatic"],
"outbound": "direct"
},

{
"action": "route",
"domain": [
"vk.com",
"habr.com",
"avito.ru",
"4pda.to",
"aliexpress.ru",
"telegram.org",
"t.me",
"ytimg.com",
"cdninstagram.com"
],
"domain_suffix": [
".ru",
".рф",
".xn--p1ai"
],
"ip_cidr": [
"157.240.0.0/16",
"169.45.0.0/16",
"169.57.0.0/16",
"192.168.0.0/16",
"172.16.0.0/16",
"10.0.0.0/8"
],
"outbound": "direct"
},


{
"action": "reject",
"rule_set": ["Category-Ads"]
}
],

"rule_set": [
{
"tag": "Category-Ads",
"type": "remote",
"url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/category-ads-all.srs",
"format": "binary",
"download_detour": "direct"
},
{
"tag": "GeoSite-Private",
"type": "remote",
"url": "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@sing/geo/geosite/private.srs",
"format": "binary",
"download_detour": "direct"
}
],

"final": "select",
"auto_detect_interface": false
},

}




Настройка TUN интерфейса:
1) Переходи Interfaces → Assignments, проверям что интерфейс добавлен, если нет, то добавляем (лучше всего назвать его так же как он и отображается).
2) Добавляем шлюз для TUN, для этого переходим в System>Gateways>Configuration, наживаем на + и добавляем шлюз Name:GW_tun_3000, Interface: tun_3000(ну или как вы назвали), IP Address:172.19.0.1 и ставим галочку напротив Far Gateway и Upstream Gateway.
3) "Оно не обязательно, но мало ли..." Переходим в Interface>tun_3000(ну или как вы назвали), включаем интерфейс ставим галочку напротив Enable Interface в пункте IPv4 Configuration Type выбираем Static IPv4 и в самом низу в IPv4 address вводим 172.19.0.1 маска 24 (по умолчанию стоит 32).
4) Важно предоставить DNS этому интерфейсу, т.к. у меня настроен Unbound DNS, то у меня поумолчанию оно уже настроено.

Настройка Firewall
В общем, тут мы будем настраивать что бы трафик пошёл через итерфейс tun_3000 для определенного VLAN или просто для интерфеса (не знаю как он у вас называется, возможно просто LAN), так что попытайтесь уследить за руками.
1) Переходим в Firewall>NAT>Outbound и там в Mode ввыбираем Hybrid outbound NAT rule generation(automatically generated rules are applied after manual rules) и сохраняем.
2) Далее настроим правило, перейдя в Firewall>Rules выбираем интерфейс, который требуется завернуть в tun_3000, для примера...LAN, добавляем новое правило нажав на "+" и выбираем Action:Pass, Interface:LAN, Protocol:TCP/UDP, Source:LAN net, Gateway:GW_tun_3000 и сохраняем.
3) Нужно поднять данное правило наверх (но ниже разрешающего правила доступа в интернет), сохраняем изменения.
4) Проверяем, что если зайти на 2ip.ru, то ваш ip будет провайдера, а если перейти на 2ip.me то ip будет вашего VPS.

Привет, зачем такие сложности. Ты используешь скрипт от китайцев. Он автоматически поднимает TUN и делает правило, чтобы весь трафик со всех интерфейсов заворачивался в TUN. Потом в конфиге sing-box делаешь route что идет через vless, а в конце правило defaul: direct. Соответсвенно, что явно не пропишешь через vless, пойдет напрямую.

{
  "log": {
    "disabled": false,
    "level": "error",// debug > info > warn > error > fatal После успешного тестирования измените debug на error, чтобы уменьшить объем хранилища журнала.
    "timestamp": true
  },
  "experimental": {
      "cache_file": {
            "enabled": true,
            "path": "/usr/local/etc/sing-box/cache.db"
        }
    },
  "inbounds": [
    {
      "mtu": 9000,
      "type": "tun",
      "tag": "tun-in",
      "auto_route": true,
      "strict_route": true,
      "interface_name": "tun_3000",
      "address": ["172.19.0.0/30"],
      "endpoint_independent_nat": false,
      "stack": "system" //system > mixed > gvisor
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "type": "direct"
    },
    {
      "type": "vless",
      "tag": "reality-outFX",
      "server": "0.0.0.0",
      "server_port": 443,
      "uuid": "000000000000000000000000000000",
      "packet_encoding": "xudp",
      "flow": "xtls-rprx-vision",
      "tls": {
            "enabled": true,
            "insecure": false,
            "server_name": "00000.nl",
            "utls": {
                    "enabled": true,
                    "fingerprint": "chrome"
            },
            "reality": {
                    "enabled": true,
                    "public_key": "00000000000000000000000",
                    "short_id": "0000000000"
            }
        }
    }
  ],
  "route": {
     "default_domain_resolver": {
      "server": "aghDNS",
      "rewrite_ttl": 60
      },
    "rules": [
      {
        "action": "sniff"
      },
      {
        "action": "hijack-dns", # в случае если будет добавлен tun или другой inbound
        "protocol": "dns"

      },
      {
        "action": "route",
        "ip_is_private": true,
        "outbound": "direct"
      },
      {
        "action": "route",
        "domain_suffix": [
            "reshutka.ru"
                ],
        "outbound": "direct"
      },
      {
        "action": "route",
        "rule_set": [
          "antizapret"
                ],
        "outbound": "reality-outFX"
      },
      {
        "action": "route",
        "domain_suffix": [
            ".youtube.com",
            ".googlevideo.com",
            ".nhacmp3youtube.com",
            ".1e100.net",
            ".ytimg.com",
            ".youtu.be",
            ".gvt1.com",
            ".googleusercontent.com",
            ".google.com",
            ".googleapis.com",
            ".gstatic.com",
            ".intel.com",
            ".caddy.community",
            ".caddyserver.com",
            ".gl-inet.com",
            ".ghcr.io",
            ".lscr.io",
            ".ntc.party",
            ".ghostbsd.org",
            ".pushover.net",
            ".gitlab.com",
            ".github.com",
            ".openbittorrent.com",
            ".desync.com",
            ".opentrackr.org",
            ".coppersurfer.tk",
            ".clamav.net",
            ".reddit.com",
            ".homenetworkguy.com",
            ".mmonit.com"
                ],
        "outbound": "reality-outFX"
      },
      {
        "action": "route",
        "domain_keyword": [
            "caddy",
            "caddyserver",
            "github",
            "4pda"
                ],
        "outbound": "reality-outFX"
      },
      {
        "action": "route",
        "ip_cidr": [
            "3.76.113.134",
            "3.5.6.213",
            "5.9.243.187",
            "5.100.80.204",
            "9.9.9.10",
            "23.50.131.142",
            "23.73.2.158",
            "31.13.72.52",
            "46.8.236.143",
            "57.144.45.32",
            "62.183.19.177",
            "82.209.105.218",
            "84.42.76.104",
            "85.140.0.237",
            "94.140.14.140",
            "94.140.14.141",
            "149.112.112.10",
            "157.240.0.60",
            "157.240.199.60",
            "157.240.31.60",
            "157.240.205.60",
            "157.240.209.60",
            "159.138.202.173",
            "163.70.158.60",
            "163.70.159.60",
            "172.233.41.171",
            "212.35.165.37"
            ],
        "outbound": "reality-outFX"
      },
      {
        "action": "reject",
        "protocol": "quic"
      }
      ],
    "rule_set": [
      {
        "tag": "antizapret",
        "type": "remote",
        "url": "https://github.com/savely-krasovsky/antizapret-sing-box/releases/latest/download/antizapret.srs",
        "format": "binary",
        "download_detour": "reality-outFX"
      }
     ],
    "auto_detect_interface": false,
    "final": "direct"
  },
  "dns": {
    "servers": [
      {
        "type": "udp",
        "tag": "aghDNS",
        "server": "127.0.0.1",
        "server_port": 53,
      }
    ],
    "strategy": "ipv4_only",
    "disable_cache": true,
    "disable_expire": true,
    "independent_cache": false,
    "cache_capacity": 0,
    "reverse_mapping": false
  }
}

Вот мой конфиг в секции "tag": "antizapret" идет скачивание списка РКН