Всем привет бандиты!
Уже пару недель читаю этот чудесный форум и решил таки зарегистрироваться и задать вопрос, ибо самому разобраться в проблемах не выходит пока. Кроме того, даже человек, который писал несколько гайдов по sing-box на гитхабе не смог мне помочь, либо ему было просто лень объяснять новичку
Надеюсь, тут кто-нибудь согласится потратить немного своего личного времени и поможет мне с тремя вопросами по настройке =)
Мой setup:
Установил последнюю openwrt на народный AX3000t, после чего накатил и настроил чистый sing-box (точечная маршрутизация мне не нужна, поэтому tproxy и nftables не настраивал). Кроме того, я не устанавливал никаких расширений для спуфинга dns типа DNScrypt2.
Все предварительные настройки sing-box тоже реализовал. Кратко перечислю, чтобы меня не считали уж совсем нубом:
/etc/config/sing-box:
config sing-box 'main'
option enabled '1'
option user 'root'
option conffile '/etc/sing-box/config.json'
option workdir '/usr/share/sing-box'
/etc/config/firewall:
config zone
option name 'tun'
option forward 'ACCEPT'
option output 'ACCEPT'
option input 'ACCEPT'
option masq '1'
option mtu_fix '1'
option device 'tun0'
option family 'ipv4'
config forwarding
option name 'lan-tun'
option dest 'tun'
option src 'lan'
option family 'ipv4'
Теперь о том, что я хочу достичь:
Банально ровной работы конфигов экспортированных из nekoray/ nekobox. Однако при чистом sing-box и попытках указать в конфиге правило работы dns конфиг просто не заводится и трафик через сервер не идёт. Остается ip провайдера. Я по-всякому пробовал менять значения работы с dns в конфиге, но dns просто не подхватываются и в итоге соединение идёт мимо конфига.
Вопрос №1:
Я так понимаю, что чистый sing-box не умеет сам обрабатывать dns запросы из конфига и нужно отдельно настраивать dns сервер верно? Если это так подскажите мне пожалуйста как это сделать? Насколько я догадываюсь для этого необходимо изменить настройки dnsmasq?
Далее, у меня есть конфиг для теста, VPS сервер которого может сам делать запросы dns локально. И на чистом sing-box у меня заводятся только такие конфиги. Все другие, где жёстко заданы правила делать запросы к google или CF не работают.
Вот этот конфиг (вместе с сылками формата vless и nekoray для удобства если заходите проверить их сами):
Спойлер
vless://76ad8213-4617-47eb-92cc-5392b39b45ce@172.67.73.163:80?security=&type=ws&path=/?ed%3D2048&host=eLOQuENt-caSE.ZUlaIR.orG.&encryption=none#%F0%9F%94%92%20VL-WS-NONE%20%F0%9F%8F%B4%E2%80%8D%E2%98%A0%EF%B8%8F%20NA-172.67.73.163:80
nekoray://vless#eyJfdiI6MCwiYWRkciI6IjE3Mi42Ny43My4xNjMiLCJuYW1lIjoi8J-UkiBWTC1XUy1OT05FIPCfj7TigI3imKDvuI8gTkEtMTcyLjY3LjczLjE2Mzo4MCIsInBhc3MiOiI3NmFkODIxMy00NjE3LTQ3ZWItOTJjYy01MzkyYjM5YjQ1Y2UiLCJwb3J0Ijo4MCwic3RyZWFtIjp7ImVkX2xlbiI6MCwiaG9zdCI6ImVMT1F1RU50LWNhU0UuWlVsYUlSLm9yRy4iLCJpbnNlY3VyZSI6ZmFsc2UsIm11eF9zIjowLCJuZXQiOiJ3cyIsInBhdGgiOiIvP2VkPTIwNDgifX0=
{
"dns": {
"independent_cache": true,
"rules": [
{
"outbound": "any",
"server": "dns-direct"
},
{
"query_type": [
32,
33
],
"server": "dns-block"
},
{
"domain_suffix": ".lan",
"server": "dns-block"
}
],
"servers": [
{
"address": "https://8.8.8.8/dns-query",
"address_resolver": "dns-local",
"detour": "proxy",
"strategy": "ipv4_only",
"tag": "dns-remote"
},
{
"address": "https://8.8.8.8/dns-query",
"address_resolver": "dns-local",
"detour": "direct",
"strategy": "ipv4_only",
"tag": "dns-direct"
},
{
"address": "rcode://success",
"tag": "dns-block"
},
{
"address": "local",
"detour": "direct",
"tag": "dns-local"
}
]
},
"inbounds": [
{
"domain_strategy": "",
"listen": "127.0.0.1",
"listen_port": 2080,
"sniff": true,
"sniff_override_destination": false,
"tag": "mixed-in",
"type": "mixed"
},
{
"auto_route": true,
"domain_strategy": "",
"endpoint_independent_nat": true,
"inet4_address": "172.19.0.1/28",
"interface_name": "neko-tun",
"mtu": 9000,
"sniff": true,
"sniff_override_destination": false,
"stack": "gvisor",
"strict_route": false,
"tag": "tun-in",
"type": "tun"
}
],
"log": {
"level": "info"
},
"outbounds": [
{
"domain_strategy": "",
"flow": "",
"packet_encoding": "",
"server": "172.67.73.163",
"server_port": 80,
"tag": "proxy",
"transport": {
"early_data_header_name": "Sec-WebSocket-Protocol",
"headers": {
"Host": "eLOQuENt-caSE.ZUlaIR.orG."
},
"max_early_data": 2048,
"path": "/",
"type": "ws"
},
"type": "vless",
"uuid": "76ad8213-4617-47eb-92cc-5392b39b45ce"
},
{
"tag": "direct",
"type": "direct"
},
{
"tag": "bypass",
"type": "direct"
},
{
"tag": "block",
"type": "block"
},
{
"tag": "dns-out",
"type": "dns"
}
],
"route": {
"auto_detect_interface": true,
"final": "proxy",
"geoip": {
"path": "C:/Users/user/Downloads/nekoray-3.26-2023-12-09-windows64/nekoray/geoip.db"
},
"geosite": {
"path": "C:/Users/user/Downloads/nekoray-3.26-2023-12-09-windows64/nekoray/geosite.db"
},
"rules": [
{
"outbound": "direct",
"process_name": [
"uTorrent"
]
},
{
"outbound": "dns-out",
"protocol": "dns"
},
{
"network": "udp",
"outbound": "block",
"port": [
135,
137,
138,
139,
5353
]
},
{
"ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
],
"outbound": "block"
},
{
"outbound": "block",
"source_ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
]
}
]
}
}
Открывая этот конфиг в nekoray заходя на browserleaks в информации об утечке DNS я вижу только локальные запросы от VPS сервера без любых сторонних хвостов от google или Cloudflare:
Однако, когда я экспортирую outbound этого конфига в sing-box (/etc/sing-box/config.json) на роутере и запускаю его, у меня помимо серверных dns появляются ещё локальные dns моего провайдера:
Вопрос №2
Как правильно настроить sing-box чтобы dns запросы себя вели так же, как они ведут себя в nekoray при работе с этим конфигом? То есть чтобы в утечке dns были только серверные dns запросы как на скриншоте из примера выше?
Уже всю голову сломал и не выходит. Если я в конфиге блокирую dns запросы провайдера, то и от vps сервера dns запросы пропадают.
Вопрос №3
Ну и последняя ситуация это конфиги, где жёстко заданы правила запросов днс от google либо Cloudflare.
Как добиться того, чтобы при указании в конфиге sing-box определённых правил работы с dns через google или Cloudflare это работало? Например, вот как в этом конфиге (тоже экспортировал с nekoray):
Спойлер
vless://0132166f-e702-48ed-a9e7-b07af768faf8@45.150.115.251:8880?security=&type=ws&path=/Telegram%F0%9F%87%A8%F0%9F%87%B3%20@WangCai2%20/?ed%3D2560&host=cf.d3z.net&encryption=none#%F0%9F%94%92%20VL-WS-NA%20%F0%9F%87%A8%F0%9F%87%BE%20CY-45.150.115.251:8880
nekoray://vless#eyJfdiI6MCwiYWRkciI6IjQ1LjE1MC4xMTUuMjUxIiwibmFtZSI6IvCflJIgVkwtV1MtTkEg8J-HqPCfh74gQ1ktNDUuMTUwLjExNS4yNTE6ODg4MCIsInBhc3MiOiIwMTMyMTY2Zi1lNzAyLTQ4ZWQtYTllNy1iMDdhZjc2OGZhZjgiLCJwb3J0Ijo4ODgwLCJzdHJlYW0iOnsiZWRfbGVuIjowLCJob3N0IjoiY2YuZDN6Lm5ldCIsImluc2VjdXJlIjpmYWxzZSwibXV4X3MiOjAsIm5ldCI6IndzIiwicGF0aCI6Ii9UZWxlZ3JhbfCfh6jwn4ezIEBXYW5nQ2FpMiAvP2VkPTI1NjAifX0=
{
"dns": {
"independent_cache": true,
"rules": [
{
"outbound": "any",
"server": "dns-direct"
},
{
"query_type": [
32,
33
],
"server": "dns-block"
},
{
"domain_suffix": ".lan",
"server": "dns-block"
}
],
"servers": [
{
"address": "https://8.8.8.8/dns-query",
"address_resolver": "dns-local",
"detour": "proxy",
"strategy": "ipv4_only",
"tag": "dns-remote"
},
{
"address": "https://8.8.8.8/dns-query",
"address_resolver": "dns-local",
"detour": "direct",
"strategy": "ipv4_only",
"tag": "dns-direct"
},
{
"address": "rcode://success",
"tag": "dns-block"
},
{
"address": "local",
"detour": "direct",
"tag": "dns-local"
}
]
},
"inbounds": [
{
"domain_strategy": "",
"listen": "127.0.0.1",
"listen_port": 2080,
"sniff": true,
"sniff_override_destination": false,
"tag": "mixed-in",
"type": "mixed"
},
{
"auto_route": true,
"domain_strategy": "",
"endpoint_independent_nat": true,
"inet4_address": "172.19.0.1/28",
"interface_name": "neko-tun",
"mtu": 9000,
"sniff": true,
"sniff_override_destination": false,
"stack": "gvisor",
"strict_route": false,
"tag": "tun-in",
"type": "tun"
}
],
"log": {
"level": "info"
},
"outbounds": [
{
"domain_strategy": "",
"flow": "",
"packet_encoding": "",
"server": "45.150.115.251",
"server_port": 8880,
"tag": "proxy",
"transport": {
"early_data_header_name": "Sec-WebSocket-Protocol",
"headers": {
"Host": "cf.d3z.net"
},
"max_early_data": 2560,
"path": "/Telegram🇨🇳 @WangCai2 /",
"type": "ws"
},
"type": "vless",
"uuid": "0132166f-e702-48ed-a9e7-b07af768faf8"
},
{
"tag": "direct",
"type": "direct"
},
{
"tag": "bypass",
"type": "direct"
},
{
"tag": "block",
"type": "block"
},
{
"tag": "dns-out",
"type": "dns"
}
],
"route": {
"auto_detect_interface": true,
"final": "proxy",
"geoip": {
"path": "C:/Users/user/Downloads/nekoray-3.26-2023-12-09-windows64/nekoray/geoip.db"
},
"geosite": {
"path": "C:/Users/user/Downloads/nekoray-3.26-2023-12-09-windows64/nekoray/geosite.db"
},
"rules": [
{
"outbound": "direct",
"process_name": [
"uTorrent"
]
},
{
"outbound": "dns-out",
"protocol": "dns"
},
{
"network": "udp",
"outbound": "block",
"port": [
135,
137,
138,
139,
5353
]
},
{
"ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
],
"outbound": "block"
},
{
"outbound": "block",
"source_ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
]
}
]
}
}
Как я написал выше, подозреваю, что нужно дополнить настройки в разделе dnsmasq, но я пока не особо понял как это правильно сделать. Буду очень рад если подскажете =)
Заранее спасибо!
PS: Конфиги который я закинул для примера расшарены и бесплатны.
PS2: Это моя первая тема и я мог ошибиться с категорией, надеюсь модератор поправит если нужно =)