Ник |
Пост |
Дата |
Buttercup | Приветствую всех, прошу помощи в настройке Sing-Box, необходимо чтобы все запросы DNS шли на локальный адрес 127.0.0.1 там их будет обрабатывать DNS сервер, проблема в том что все DNS запросы уходят через outbound proxy на сервер vless и там успешно обрабатывается, пробовал версию 1.12, 1.11, сейчас стоит 1.10.4, у каждой версии свои настройки судя по оф сайту синга, к сожалению так и не удалось заставить отравлять запросы локально, Ubuntu 22.04 ниже конфиг
Спойлер
{
"log": {
"level": "debug",
"output": "/var/log/sing-box.log"
},
"dns": {
"servers": [
{
"tag": "local-dns",
"address": "127.0.0.1",
"strategy": "prefer_ipv4",
"detour": "direct"
}
],
"rules": [
{
"domain": "any",
"server": "local-dns"
}
]
},
"inbounds": [
{
"type": "mixed",
"listen": "0.0.0.0",
"listen_port": 2080,
"sniff": true,
"sniff_override_destination": true,
"users": []
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "vless",
"tag": "proxy",
"server": "ИП СЕРВАКА",
"server_port": 443,
"uuid": "УАЙДИ",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "САЙТ ПРИКРЫТИЯ",
"utls": {
"enabled": true,
"fingerprint": "БРАУЗЕР"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИК КЛЮЧ",
"short_id": "ШОРТ"
}
}
},
{
"tag": "dns",
"type": "dns"
},
{
"type": "block",
"tag": "block"
}
],
"route": {
"rules": [
{
"protocol": "dns",
"outbound": "dns"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
"rule_set": "block-ads",
"outbound": "block"
},
{
"domain_suffix": ["СУФИКСЫ ДОМЕНОВ"],
"outbound": "direct"
},
{
"domain": [
"ДОМЕН"
],
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"outbound": "proxy"
}
],
"rule_set": [
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
}
],
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
}
}
}
| 2025-03-12T09:40:16.645Z |
OctopusBrigade |
Я не уверен, что это валидное правило, скорее всего, Sing-Box будет искать совпадение имени домена со строкой “any”.
Попробуйте:
"rules": [
{
"outbound": "any",
"server": "local-dns"
}
]
Или:
"rules": [
{
"domain_regex": ".*",
"server": "local-dns"
}
]
| 2025-03-12T09:55:59.708Z |
0ka(0ka) | сервер один, если бы был tun, то никаких правил чтобы он был использован не нужно. но здесь inbound - socks, а ему нужно route rule - resolve а не procotol: dns | 2025-03-12T09:58:50.839Z |
Buttercup | к сожалению не одно не сработало, так же всё на сервер гонит | 2025-03-12T10:04:05.017Z |
Buttercup | подробнее пожалуйста | 2025-03-12T10:04:46.288Z |
0ka(0ka) | {
"dns": {
"servers": [
{
"address": "127.0.0.1:53",
"detour": "direct",
"tag": "localhost-dns"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"listen": "0.0.0.0",
"listen_port": 1080,
"tag": "mixed-in",
"type": "mixed"
}
],
"log": {
"disabled": false,
"level": "debug"
},
"outbounds": [
#add your outbound
{
"tag": "direct",
"type": "direct"
}
],
"route": {
"rules": [
{
"action": "sniff"
},
{
"protocol": "dns",
"action": "hijack-dns" # в случае если будет добавлен tun или другой inbound
},
{
"inbound": "mixed-in",
"action": "resolve"
}
]
}
}
если на сервере включен сниффинг, то в случае сингбокса sniff_override_destination быть не должно, в случае xray должен быть включен RouteOnly, иначе будет использоваться днс который на сервере | 2025-03-12T10:17:11.670Z |
Buttercup | спасибо за предложенные изменения, версия 1.10.4 не стартует, на 1.11.4 запустил, но поведение то же, гонит днс через прокси на сервак
вот поный конфиг после изменений, я где то накосячил?
Спойлер
{
"log": {
"level": "debug",
"output": "/var/log/sing-box.log"
},
"dns": {
"servers": [
{
"address": "127.0.0.1",
"detour": "direct",
"tag": "localhost-dns"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"type": "mixed",
"listen": "0.0.0.0",
"listen_port": 2080,
"sniff": true,
"users": []
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "vless",
"tag": "proxy",
"server": "ИП СЕРВАКА",
"server_port": 443,
"uuid": "УАЙДИ",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "САЙТ ПРИКРЫТИЯ",
"utls": {
"enabled": true,
"fingerprint": "БРАУЗЕР"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИК КЛЮЧ",
"short_id": "ШОРТ"
}
}
},
{
"type": "block",
"tag": "block"
}
],
"route": {
"rules": [
{
"action": "sniff"
},
{
"protocol": "dns",
"action": "hijack-dns"
},
{
"inbound": "mixed",
"action": "resolve"
},
{
"rule_set": "block-ads",
"outbound": "block"
},
{
"domain_suffix": ["СУФИКСЫ ДОМЕНОВ"],
"outbound": "direct"
},
{
"domain": [
"ДОМЕН"
],
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"rule_set": "ПРАВИЛО",
"outbound": "direct"
},
{
"outbound": "proxy"
}
],
"rule_set": [
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
},
{
"tag": "ПРАВИЛО",
"type": "remote",
"format": "binary",
"url": "СЕРВЕР ОБНОВЫ ПРАВИЛ"
}
],
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
}
}
}
если outbound сменить на direct то запросы идут на 127.0.0.1
{
"outbound": "direct"
}
но в моём случае должно быть outbound proxy, т.е. я использую правила исключения для коннекта на прямую а весь трафик идёт за бугор, и понятно почему днс туда же идут, но возможность настройки есть а реализовать так и не вышло
{
"outbound": "proxy"
}
даже если стоит outbound proxy то правило "ip_is_private"должно отправлять 127.0.0.1 на direct, не понимаю почему этого не происходит
{
"ip_is_private": true,
"outbound": "direct"
}
| 2025-03-12T11:04:00.211Z |
OctopusBrigade | Если к примеру конфига добавить только outbound без route правил, то проблема остается?
Если нет, то добавляйте к рабочему конфигу не всё сразу, а частями, чтобы определить проблемную часть. | 2025-03-12T14:36:16.239Z |
Buttercup | проблема остаётся, так же бегает на удалённый, даже без правил, оставил только dns
Спойлер
"route": {
"rules": [
{
"action": "sniff"
},
{
"inbound": "mixed",
"action": "resolve"
},
{
"outbound": "proxy"
}
],
},
}
| 2025-03-12T16:02:21.081Z |
0ka(0ka) | зачем вы добавляете последнее правило с outbound proxy? первый outbound это дефолтный, ставьте первым свой vless. я посмотрел на ваш конфиг выше и вы кажется так и не попробовали взять мой конфиг и отредачить его, а стали менять свой и поменяли не до конца (т.к. у mixed in остался sniff который уже не поддерживается, и даже нет tag и значит правило resolve никогда не сработает). ну и ещё: все десяток правил с rule_set, domain, domain_suffix можно сделать в 1 правило | 2025-03-12T16:09:37.933Z |
Buttercup | без данного правила не идет трафик через proxy, вот ваш конфиг вставил свой outbound и естественно без правил данный конфиг становится бесполезным, без правил не работают маршруты
мой конфиг рабочий и маршруты работают, то что их больше одного это работе не мешает, проблема только в dns
Спойлер
{
"dns": {
"servers": [
{
"address": "127.0.0.1:53",
"detour": "direct",
"tag": "localhost-dns"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"listen": "0.0.0.0",
"listen_port": 1080,
"tag": "mixed-in",
"type": "mixed"
}
],
"log": {
"disabled": false,
"level": "debug"
},
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "vless",
"tag": "proxy",
"server": "ИП СЕРВАКА",
"server_port": 443,
"uuid": "УАЙДИ",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "САЙТ ПРИКРЫТИЯ",
"utls": {
"enabled": true,
"fingerprint": "БРАУЗЕР"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИК КЛЮЧ",
"short_id": "ШОРТ"
}
}
},
{
"type": "block",
"tag": "block"
}
],
"route": {
"rules": [
{
"inbound": "mixed",
"action": "sniff"
},
{
"inbound": "mixed",
"action": "resolve"
},
]
}
}
| 2025-03-12T16:35:25.275Z |
0ka(0ka) |
зато мне мешают когда я читаю конфиг
потому что вы ставите vless вторым outbound.
inbound с тегом “mixed-in”, в правиле вы пишете “mixed” | 2025-03-12T16:36:02.048Z |
Buttercup | Спасибо вам огромное! с вашими рекомендациями всё получилось, DNS остаётся в локале, ниже выложу рабочий конфиг для DNS на 127.0.0.1 может кому пригодится
Спойлер
{
"dns": {
"servers": [
{
"address": "127.0.0.1:53",
"detour": "direct",
"tag": "localhost-dns"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"listen": "0.0.0.0",
"listen_port": 2080,
"tag": "mixed",
"type": "mixed"
}
],
"log": {
"disabled": false,
"level": "debug"
},
"outbounds": [
{
"type": "direct",
"tag": "direct"
},
{
"type": "vless",
"tag": "proxy",
"server": "ИП СЕРВАКА",
"server_port": 443,
"uuid": "УАЙДИ",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "САЙТ ПРИКРЫТИЯ",
"utls": {
"enabled": true,
"fingerprint": "БРАУЗЕР"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИК КЛЮЧ",
"short_id": "ШОРТ"
}
}
},
{
"type": "block",
"tag": "block"
}
],
"route": {
"rules": [
{
"inbound": "mixed",
"action": "sniff"
},
{
"inbound": "mixed",
"action": "resolve"
},
]
}
}
| 2025-03-12T17:03:07.243Z |
Dr4tez(Dr4tez) | В вашем последнем конфиге в конце ошибка- запятая после }, закрывающей последнее правило. Ещё по этому конфигу весь трафик пойдет в директ.
А с DNS "address": "local" не пробовали? Вот поправил немного последний конфиг, не люблю когда маячат лишние, ни на что не влияющие строки, убрал их. Применил более логичное правило в конце, убрал лишнюю запятую и сделал чтобы весь трафик шёл в proxy. Конфиг для версии 1.11.
{
"log": {
"level": "debug"
},
"dns": {
"servers": [
{
"address": "local"
}
],
"strategy": "ipv4_only"
},
"inbounds": [
{
"type": "mixed",
"listen": "0.0.0.0",
"listen_port": 2080
}
],
"outbounds": [
{
"type": "vless",
"server": "ИП СЕРВАКА",
"server_port": 443,
"uuid": "УАЙДИ",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "САЙТ ПРИКРЫТИЯ",
"utls": {
"enabled": true,
"fingerprint": "БРАУЗЕР"
},
"reality": {
"enabled": true,
"public_key": "ПУБЛИК КЛЮЧ",
"short_id": "ШОРТ"
}
}
}
],
"route": {
"rules": [
{
"action": "sniff"
},
{
"protocol": "dns",
"action": "hijack-dns"
}
]
}
}
| 2025-03-12T19:18:58.015Z |
0ka(0ka) | эти новые конфиги это уже флуд, сингбокс ту запятую сожрёт нормально, а ваш конфиг неправильный т.к. будет гонять днс через сервер (а точнее пакеты сокс прокси с доменом внутри, а не c ip), вы удалили ключевое правило resolve…
я рабочий уже давал Настройка DNS на Sing-Box - #6 by 0ka и учёл что в будущем могут добавить tun и правила роутинга с доменами | 2025-03-12T20:44:01.642Z |
Dr4tez(Dr4tez) | Вы бы хоть сначала попробовали, а потом делали заключения о том, что и как в нём работает и работает ли вообще. На убунту не имел возможности проверить, но если очень захочу, то проверю и на нём. Но андроиде работает как задумано последним конфигом Buttercup, только трафик идёт не в директ, а в туннель. Dns запросы при проверке поймал именно на домашнем dns сервере, а не на поднятом на vps. Честь вам и хвала, что учли возможное добавление tun, я предпочитаю не учитывать возможное, а только то, что имеем.
Можете задать вопросы по смущающим вас частям конфига или их отсутствию. Я приведу свои аргументы, вы свои, может я что-то новое узнаю. Я же не утверждаю, что познал sing-box полностью и что мои решения единственно верные. Но этот конфиг рабочий. А основной его смысл в предложении использовать “address”: “local” вместо прописывания ip адреса локалхоста, так что я бы не сказал что мой пост с конфигом- флуд. | 2025-03-13T03:58:51.522Z |
0ka(0ka) | логи вашего конфига:
на клиенте в логе никаких упоминаний о днс, а на сервер пришел пакет с доменным именем и резолвинг произошёл именно там, неожиданно?
проверялось через curl -x socks5h://127.0.0.1 2ip.me , буква h в socks5h важна т.к. она включает резолвинг через сокс прокси а не через системный днс, вы скорее всего не учли данный момент когда тестировали (т.е. ваш софт не умеет socks5h, а только socks5) | 2025-03-13T08:46:30.489Z |
Dr4tez(Dr4tez) | Я, честно говоря, впервые слышу про socks5h. Расскажу как я тестировал. Этот свой конфиг запускал в приложении sing-box на ТВ боксе с 9 андроидом. Подключался к нему как к socks5 серверу с приложения sing-box на мобильнике. Конфигом на мобильнике весь трафик, включая и днс запросы, направляется в туннель до sing-box на тв-боксе. Всё это находится в домашней сети. Так же в домашней сети в lxc контейнере proxmox на мини-пк работает Adgurad Home, локальный ip которого роутером назначается всем устройствам dns сервером. И на vps работает AGH в качестве dns сервера для туннелируемого туда трафика. Если в sing-box на тв-боксе запущен этот конфиг, являющийся по факту серверным, а на мобильнике запущен конфиг, являющийся для него клиентским, и я в браузере на мобильнике открываю конкретные сайты, то днс запросы к этим конкретным сайтам фиксируются в AGH дома, а в AGH на vps не фиксируются. Если в этом конфиге вместо “address”: “local” я вписываю “address”: “127.0.0.1”, то выходит наоборот- днс запросы фиксируются в AGH на vps, а в AGH дома не фиксируются. Логично же сделать вывод, что в первом случае резолв идёт через локалхост, а во втором через туннель на vps? | 2025-03-13T12:26:44.826Z |
0ka(0ka) | Логично только на половину т.к. у вас не используется socks5h (а напр в firefox используется именно он если в настройках вписать сокс прокси и поставить галку resolve through socks), в вашем случае (прозрачный прокси или же tun через socks) при загрузке 1 сайта происходит два запроса к прокси серверу: днс запрос (который ловится правилами sniff и hijack-dns) и https запрос на ip адрес, в случае с firefox и curl (socks5h) при загрузке 1 сайта происходит один запрос к прокси серверу: https запрос на доменное имя (которое может быть поймано через правило resolve).
Ваш конфиг работает только для socks5, мой конфиг работает для socks5 и socks5h (и скорее всего для http прокси тоже). Если не учитывать это и прописать прокси напр firefox или другом софте, то вы не заметите как будет использоваться удаленный днс и правила роутинга по ip перестанут работать.
Надеюсь это последний пост в теме и для остальных повторяю что рабочий конфиг Настройка DNS на Sing-Box - #6 by 0ka | 2025-03-13T15:16:30.420Z |
Dr4tez(Dr4tez) | Точно. Проверить через просто прокси расширение (FoxyProxy) в файрфоксе как-то в голову не пришло, не пользуюсь я такими методами. Проверил. Действительно, при подключении к конфигу через FoxyProxy, днс запросы при “address”: “local” уходят в AGH на vps. Делаю вывод, что это зависит от реализации клиента. Если клиент на sing-box, в моём случае с tun inbound и socks5 outbound, то работает как я описал выше, если клиент, например, FoxyProxy в браузере, тот тут уже “address”: “local” не канает без дополнительных правил в серверном конфиге. Хорошо, ваш конфиг самый лучший). И спасибо за науку, реально полезно. А всем остальным- не пользуйтесь моим конфигом ни в коем случае, а то я вас плохому научу). За сим откланиваюсь. | 2025-03-13T16:01:33.047Z |