!!!СТАТЬЯ ВСЕ ЕЩЕ В РАЗРАБОТКЕ!!!
Всем привет. В общем, долгая дорога по настройке 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" идет скачивание списка РКН
Привет, разбираюсь с конфигом sing-box, однако, у меня уже есть IP шлюза 172.19.0.1, это шлюз основного интернета.
В таком случае ставим любую другую подсеть, и gateway-IP из этого другого диапазона ?
Ну или можешь пожалуйста подробнее расписать, как сделать правильно, если я уже поставил sing-box по скрипту от китайцев ?
Quote from: pavlon1988 on February 19, 2026, 11:53:24 AMПривет, разбираюсь с конфигом sing-box, однако, у меня уже есть IP шлюза 172.19.0.1, это шлюз основного интернета.
В таком случае ставим любую другую подсеть, и gateway-IP из этого другого диапазона ?
Ну или можешь пожалуйста подробнее расписать, как сделать правильно, если я уже поставил sing-box по скрипту от китайцев ?
Привет, все просто.
1. Ставишь по скрипту китайцев
2. В Настройках Opnsense: VPN->Proxy Suite->Sing-Box в окошке конфига пишешь IP для TUN, какой тебе надо, т.е меняешь эту строчку, но маску /30 оставляешь "address": ["172.19.0.0/30"]. Все должно работать, так как китайцы используют патчиную версию sing-box, который сам поднимает интерфейс TUN.
Quote from: scorpid on February 25, 2026, 02:33:59 PMкоторый сам поднимает интерфейс TUN.
это не совсем правда. Интерфейс tun вкорячивается в систему скриптом прямо в конфиг opnsense.
Quote from: _tribal_ on February 25, 2026, 09:33:48 PMQuote from: scorpid on February 25, 2026, 02:33:59 PMкоторый сам поднимает интерфейс TUN.
это не совсем правда. Интерфейс tun вкорячивается в систему скриптом прямо в конфиг opnsense.
А почему не совсем правда ? Интерфейс есть ? - есть,
а чем они ещё вкрячиваются ?))