Closed Andrewprvrzv closed 3 months ago
I didn't install any entware packages. The flash drive with entware is used here simply as a place for the sing-box binary file and the files it creates. Have you tried this config.json in sing-box on other platforms? You can show it here, after replacing sensitive data with X's, as it is done in my config.json template. What kind of router do you have? Do you speak Russian? Maybe it's more convenient to use it?
{
"log": {
"level": "info",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "dns-direct",
"address": "XX.XX.XX.XX",
"strategy": "prefer_ipv4",
"detour": "direct"
},
{
"tag": "dns-block",
"address": "rcode://success"
}
],
"rules": [
{
"query_type": [
"NIMLOC",
"SRV"
],
"server": "dns-block"
},
{
"domain_suffix": ".lan",
"server": "dns-block"
}
],
"final": "dns-direct",
"strategy": "prefer_ipv4",
"independent_cache": true
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "tun0",
"mtu": 9000,
"inet4_address": "172.19.0.1/28",
"auto_route": true,
"endpoint_independent_nat": true,
"stack": "system",
"sniff": true,
"sniff_override_destination": true
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "XXXXXXXXXXXXXXXX",
"server_port": 443,
"uuid": "XXXXXXXXXXXX",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "XXXXXXXX",
"utls": {
"enabled": true,
"fingerprint": "XXXXXXX"
},
"reality": {
"enabled": true,
"public_key": "XXXXXXXXXXXXX",
"short_id": "XXXXX"
}
},
"packet_encoding": ""
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "direct",
"tag": "bypass"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"route": {
"rules": [
{
"protocol": "dns",
"outbound": "dns-out"
},
{
"network": "udp",
"port": [
135,
137,
138,
139,
5353
],
"outbound": "block"
},
{
"rule_set": [
"geoip-ru",
"geoip-by",
"geosite-yandex",
"geosite-telegram",
"geosite-whatsapp",
"geosite-github",
"geosite-tiktok"
],
"outbound": "direct"
},
{
"rule_set": [
"geosite-youtube",
"geosite-intel",
"geosite-intel-dev"
],
"outbound": "proxy"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
"domain_suffix": [
".ru",
"blizzard.com",
"battle.net",
"like.video",
".xn--d1acj3b",
".xn--80adxhks",
".xn--80asehdb",
".xn--c1avg",
".xn--p1acf",
".xn--p1ai",
".xn--80aswg"
],
"domain_keyword": [
"steam",
"google",
"steampowered"
],
"ip_cidr": [
"91.108.56.0/22",
"91.108.4.0/22",
"91.108.8.0/22",
"91.108.16.0/22",
"91.108.12.0/22",
"149.154.160.0/20",
"91.105.192.0/23",
"91.108.20.0/22",
"185.76.151.0/24",
"2001:b28:f23d::/48",
"2001:b28:f23f::/48",
"2001:67c:4e8::/48",
"2001:b28:f23c::/48",
"2a0a:f280::/32"
],
"outbound": "direct"
},
{
"ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
],
"outbound": "block"
},
{
"source_ip_cidr": [
"224.0.0.0/3",
"ff00::/8"
],
"outbound": "block"
}
],
"rule_set": [
{
"type": "remote",
"tag": "geoip-ru",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-ru.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geoip-by",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-by.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-youtube",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-youtube.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-intel-dev",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-intel-dev.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-intel",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-intel.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-yandex",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-yandex.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-telegram",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-telegram.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-whatsapp",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-whatsapp.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-github",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-github.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-tiktok",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-tiktok.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
}
],
"final": "proxy",
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
},
"clash_api": {
"external_controller": "0.0.0.0:19090",
"external_ui": "/opt/root/sing-box/ui",
"secret": "XXXX"
}
}
}
This is my config, its work perfect on debian/ubuntu. But with your script on my AX86U with latest werlin-wrt I have an error:
ERROR clash-api: download external ui error: Get "https://github.com/MetaCubeX/Yacd-meta/archive/gh-pages.zip": exchange4: context canceled | exchange6: context canceled
Same error with github links.
Update: delete "dns" block of config and it's start!
But now have new problem. Execute on router curl --interface tun0 ipinfo.io
return Failed to connect to ipinfo.io port 80 after 15149 ms: Couldn't connect to server
. From local machines same result. All trafiic go through provider. No error in sing-box.
Router is the default gateway in network (DHCP). Any idea?
First, remove the line "auto_route": true,
from the config,
the router will not allow such impudence)
The script itself configures the necessary routes and iptables rules.
So how about continuing the discussion in Russian?
Давай по русски) Не помогло. Текущий конфиг
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "tun0",
"mtu": 9000,
"inet4_address": "172.19.0.1/28",
"endpoint_independent_nat": true,
"stack": "mixed",
"sniff": true
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "XXXXXXXXXXXXX",
"server_port": 443,
"uuid": "XXXXXXXXXXX",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "XXXXXXX",
"utls": {
"enabled": true,
"fingerprint": "XXXXXX"
},
"reality": {
"enabled": true,
"public_key": "XXXXXXXXXXXX",
"short_id": "XXXX"
}
},
"packet_encoding": ""
},
{
"type": "direct",
"tag": "direct"
},
{
"type": "direct",
"tag": "bypass"
},
{
"type": "block",
"tag": "block"
},
{
"type": "dns",
"tag": "dns-out"
}
],
"route": {
"rules": [
{
"rule_set": [
"geoip-ru",
"geoip-by",
"geosite-yandex",
"geosite-telegram",
"geosite-whatsapp",
"geosite-github",
"geosite-tiktok"
],
"outbound": "direct"
},
{
"rule_set": [
"geosite-youtube",
"geosite-intel",
"geosite-intel-dev"
],
"outbound": "proxy"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
"domain_suffix": [
".ru",
"blizzard.com",
"battle.net",
"like.video",
".xn--d1acj3b",
".xn--80adxhks",
".xn--80asehdb",
".xn--c1avg",
".xn--p1acf",
".xn--p1ai",
".xn--80aswg"
],
"domain_keyword": [
"steam",
"google",
"steampowered"
],
"ip_cidr": [
"91.108.56.0/22",
"91.108.4.0/22",
"91.108.8.0/22",
"91.108.16.0/22",
"91.108.12.0/22",
"149.154.160.0/20",
"91.105.192.0/23",
"91.108.20.0/22",
"185.76.151.0/24",
"2001:b28:f23d::/48",
"2001:b28:f23f::/48",
"2001:67c:4e8::/48",
"2001:b28:f23c::/48",
"2a0a:f280::/32"
],
"outbound": "direct"
}
],
"rule_set": [
{
"type": "remote",
"tag": "geoip-ru",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-ru.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geoip-by",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-by.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-youtube",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-youtube.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-intel-dev",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-intel-dev.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-intel",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-intel.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-yandex",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-yandex.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-telegram",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-telegram.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-whatsapp",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-whatsapp.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-github",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-github.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-tiktok",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-tiktok.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
}
],
"final": "proxy",
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
},
"clash_api": {
"external_controller": "0.0.0.0:19090",
"external_ui": "/opt/root/sing-box/ui",
"secret": "XXXX"
}
}
}
Dashboard Clash работает, tun0 поднимается, sing-box тоже, но почему-то не редиректятся запросы
Вот ваш конфиг. Во первых- исправил уровень логирования на error, а то слишком много ненужной инфы льётся в консоль. Во вторых- очистил от необязательных и неиспользуемых конфигом строк. По умолчанию всегда используется первый uotbound, так что указание его в final не обязательно. Т.к. у вас он по умолчанию, то это значит, что всё, что вы принудительно не направите в direct, будет идти в proxy. Так что тут бессмысленны правила, направляющие в proxy, достаточно только правил, направляющих в direct. Неиспользуемые outbounds и rule_set, оставшиеся не у дел после удаления правила, направляющего в proxy, тоже убрал. В третьих- для cache_file не был указан путь, так что он не мог быть создан на роутере. В том, что осталось, подставил свои ключи для vless и запустил- у меня всё работает.
{
"log": {
"level": "error",
"timestamp": true
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"interface_name": "tun0",
"mtu": 9000,
"inet4_address": "172.19.0.1/28",
"endpoint_independent_nat": true,
"stack": "mixed",
"sniff": true
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "XXXXXXXXXXXXXXXXXX",
"server_port": 443,
"uuid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "XXXXXXXXXXXXXXXXXXX",
"utls": {
"enabled": true,
"fingerprint": "XXXXXX"
},
"reality": {
"enabled": true,
"public_key": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"short_id": "XXXXXXXXX"
}
}
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"rule_set": [
"geoip-ru",
"geoip-by",
"geosite-yandex",
"geosite-telegram",
"geosite-whatsapp",
"geosite-github",
"geosite-tiktok"
],
"outbound": "direct"
},
{
"ip_is_private": true,
"outbound": "direct"
},
{
"domain_suffix": [
".ru",
"blizzard.com",
"battle.net",
"like.video",
".xn--d1acj3b",
".xn--80adxhks",
".xn--80asehdb",
".xn--c1avg",
".xn--p1acf",
".xn--p1ai",
".xn--80aswg"
],
"domain_keyword": [
"steam",
"google",
"steampowered"
],
"ip_cidr": [
"91.108.56.0/22",
"91.108.4.0/22",
"91.108.8.0/22",
"91.108.16.0/22",
"91.108.12.0/22",
"149.154.160.0/20",
"91.105.192.0/23",
"91.108.20.0/22",
"185.76.151.0/24",
"2001:b28:f23d::/48",
"2001:b28:f23f::/48",
"2001:67c:4e8::/48",
"2001:b28:f23c::/48",
"2a0a:f280::/32"
],
"outbound": "direct"
}
],
"rule_set": [
{
"type": "remote",
"tag": "geoip-ru",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-ru.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geoip-by",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geoip/geoip-by.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-yandex",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-yandex.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-telegram",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-telegram.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-whatsapp",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-whatsapp.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-github",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-github.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
},
{
"type": "remote",
"tag": "geosite-tiktok",
"format": "binary",
"url": "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-tiktok.srs",
"download_detour": "direct",
"update_interval": "24h0m0s"
}
],
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true,
"path": "/opt/root/sing-box/cache.db"
},
"clash_api": {
"external_controller": "0.0.0.0:9090",
"external_ui": "/opt/root/sing-box/ui",
"secret": "XXXX"
}
}
}
К сожалению, не помогло. Есть подозрения, что какая то проблема с iptables, правила не прописались или еще что-то, потому что после curl --interface tun0 ipinfo.io
никаких пакетов на sing-box не улетает, логи пустые
Давайте по порядку. Сохраните свой конфиг куда-нибудь и выполните sbs remove
. Потом wget -O /jffs/scripts/sbs-ru https://raw.githubusercontent.com/Dr4tez/sing-box4asus/main/sbs-ru && chmod 775 /jffs/scripts/sbs-ru && /jffs/scripts/sbs-ru install
и опубликуйте тут весь вывод консоли при установке.
Скрипт встал без ошибок
sbs setup
Change script settings? If sing-box is running, selecting option 2 will stop it.
1-No, 2-Yes: 2
Stop sing-box...
Terminated
sbs-monitor has stopped.
Updating the services-start script
sing-box has stopped.
Go to script setup.
Edit config.json (sing-box configuration file) using nano editor?
1-No, 2-Yes: 2
Opening config.json in nano editor.
config.json saved.
Current device IP addresses for tun0: Change them? Selecting 2 will replace the existing IP addresses with the ones you entered.
1-No, 2-Yes: 1
Refusing to replace IP addresses.
The current routing table number for tun0 is 555. Change it?
1-No, 2-Yes: 1
Refusing to change the routing table number.
Settings have been saved.
Launch sing-box?
1-No, 2-Yes: 2
Launch sing-box...
TUN interface tun0 detected.
Updating the services-start script
sing-box is running.
sbs-monitor is running.
Тут все нормально.
ip a
63: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UNKNOWN group default qlen 500
link/none
inet 172.19.0.1/28 brd 172.19.0.15 scope global tun0
valid_lft forever preferred_lft forever
tun0 поднялся с нужным адресом, прописанным в конфиге. sing-box тоже запущен, работает
curl --interface tun0 ipinfo.io
curl: (28) Failed to connect to ipinfo.io port 80 after 15479 ms: Couldn't connect to server
С другой машины curl ipinfo.io
возвращает провайдера адрес, пакеты не идут через sing-box((
Я там подредактировал предыдущий пост. Давайте сначала. С установки.
Хотя, я не вижу в выводе setup информации о введённых ip адресах устройств. Устройствам, трафик которых вы хотите пустить через sing-box, надо предварительно назначить в веб интерфейсе роутера постоянные айпишники и вбить эти айпишники при выполнении sbs setup
. Если этого не сделать, то трафик устройств будет всё так же идти мимо sing-box. Про добавление ip адресов есть в readme. А если не назначить им постоянные айпишники, то они могут меняться время от времени, и опять их трафик пойдёт мимо sing-box. Я думаю это очевидно. У меня вообще всем устройствам в домашней сети с самого начала присвоены постоянные ip адреса, это полезно и для других целей.
А вот с этого момента поподробнее, в скрипте правила не прописаны, чтобы весь трафик ходил через него получается? Только адреса устройств, которые пропишем получается? В таком случае заработало, на то устройство, которое прописал, но хотелось бы чтобы все устрйоства сети ходили по умолчанию через sing box, возможно реализовать? У меня сейчас реализовано так, одна машина в роли шлюза выступает, коннекты к ней идут из локальной сети, там singbox работает. В роутере по умолчанию в dhcp шлюзом указана та машина. Все отлично работает, но хотелось бы на роутер повесить это дело, а так как часть машин на статических адресах машин, а часть на DHCP (то есть меняются адреса).
Нет, т.к. роутер не допустит хозяйничать функции auto_route в себе, как я уже писал, это просто сломает работу роутера. Только по айпишникам. Но по мне так оно даже лучше, у меня есть устройства которым это не только не нужно, а даже вредно.
Подправил коммент выше. Вообще должно работать, потому что использовал решение от китайцев на другом движке, там так работало. По поводу огрнаичений, проще в конфиге sing-box прописать машины, которых только через direct пускать. Я не силен в iptables, потому и хотелось бы готовое решение найти или сделать. Как то же это реализовано в openwrt или кинетике том же, правда я не пробовал
Я понятия не имею как это делается в openwrt и кинетиках. Роутер всё же не полноценная линукс машина, со своими особенностями и жесткими ограничениями. У разных роутеров и прошивок эти особенности и ограничения могут кардинально отличаться. У меня тоже сначала sing-box работал в виртуальной машине proxmox, и трафик нужных устройств шёл туда посредством указания шлюза для них в настройках роутера. Но в таком варианте ломается QoS на роутере, т.к. трафик от устройств считается трафиком этой машины. А мне это важно и только из-за этого решил перенести sing-box на роутер. У меня не достаточно знаний в работе роутера чтобы заставить на нём корректно идти трафик всех устройств через sing-box, а может это и не возможно, искал решения, но не нашёл. С auto_route не работает, а если добавить всю подсеть роутера в качестве адреса, то всё ломается, приходится вручную кое что править в системе чтобы восстановить. Вот не понял, у вас DHCP сервер на другой машине работает или на роутере? И разве нельзя через него назначить статические айпишники определённым MAC адресам?
тоже Proxmox)) DHCP на роутере, динамику убирать не вариант, потому что бывают сторонние разовые подключения, вопрос как с ними быть тогда? Да и смысла особо не вижу в этом. Немного потестировал, еще одна проблема всплыла, нет доступа из вне к машине, если добавить адрес, оно понятно в принципе почему. Нужно хорошенько подумать как это можно реализовать еще, у китайцев для этих роутеров все работало, но там tun интерфейса не было. Если будут идеи, напишу)
Так и не требуется убирать динамику, она не зависит от того, что вы в настройках укажете статические адреса для некоторых устройств, другие продолжать работать с динамическими и получать их. Это же просто в веб интерфейсе делается, никаких консольных команд или правок файлов. Про доступ из вне не думал, надо подумать. Хотя, что именно вы подразумеваете под доступом из вне? По smb внутри домашней сети доступ к ним есть. А внутрь домашней сети из интернета я хожу только через wireguard сервер, работающий на роутере. Ну и ещё есть резервный канал из интернета в домашнюю сеть по VLESS, посредством 3x-ui, работающего на одной из виртуалок. Таким образом- через vpn/vless+smb у меня есть к этим устройствам доступ и из интернета. А что там и где у китайцев работало для этого роутера, можно подробнее?
Динамике тоже нужен будет доступ к sing-box. Доступ из вне, к вебсерверу и другим сервисам (по доменному имени). У китайцев MerlinClash, больше года использовал, потом ушел с него, не помню уже по каким причинам. Но там свои заморочки с китайской прошивкой и магазином приложений, втсроенным в роутер.
А, понял. А большой ли у вас пул адресов в сети? Может перечислить их все в настройках скрипта, кроме самого роутера? Или, если роутер поддерживает vlan, попробовать их все в отдельную подсетку кинуть и прописать её, чисто проверить. У меня нет поддержки vlan. Я многое методом тыка искал и делал, и с помощью chatgpt, что-то подсказывали на форуме Мерлина, так что не обессудьте. Веб серверов дома не держу, только локальные ресурсы. С китайцами ясно, искать и пробовать не стану.
Не знаю, следите ли вы за проектом, поэтому, на всякий случай, озвучу тут. По факту с версии 1.1 можно добавить всю подсеть роутера без критичных последствий, а с версии 1.2 это доведено до ума- после добавления подсети предлагается ввести ip адреса исключений.
По доступу извне, так и не нашли решение? Это единственный минус... Сейчас приходится исключать машину с сервисами и запускать на ней отдельно nekoray.
По доступу извне, так и не нашли решение? Это единственный минус... Сейчас приходится исключать машину с сервисами и запускать на ней отдельно nekoray.
Знать бы причину, решение бы нашёл, скорее всего.
тоже Proxmox)) DHCP на роутере, динамику убирать не вариант, потому что бывают сторонние разовые подключения, вопрос как с ними быть тогда? Да и смысла особо не вижу в этом. Немного потестировал, еще одна проблема всплыла, нет доступа из вне к машине, если добавить адрес, оно понятно в принципе почему. Нужно хорошенько подумать как это можно реализовать еще, у китайцев для этих роутеров все работало, но там tun интерфейса не было. Если будут идеи, напишу)
вы писали, что вам понятно, почему нет доступа извне) не поделитесь? вместе подумаем что можно сделать... мне странно, что перестает работать пробрасывание портов из стандартного интерфейса роутера для машин, добавленных в скрипт. оно пор идее должно раньше выполняться. и по локальным айпи они доступны...
Попробуйте совсем удалить параметр auto_detect_interface из конфига. У меня и без этого всё работает, по идее и должно работать, т.к. у нас все маршруты и правила для трафика прописаны. Плюс это даёт возможность использовать свой dns сервер, расположенный в домашней сети, и, при использовании sing-box в качестве сервера, появляется доступ к локальным ресурсам. А с ним не было, на днях нашёл это решение. auto_detect_interface на роутере неверно определяет интерфейс для direct outbound. Интересно, а вдруг и вашу проблему решит. У меня просто нет в домашней сети сервисов доступных из wan через редирект портов.
Попробуйте совсем удалить параметр auto_detect_interface из конфига. У меня и без этого всё работает, по идее и должно работать, т.к. у нас все маршруты и правила для трафика прописаны. Плюс это даёт возможность использовать свой dns сервер, расположенный в домашней сети, и, при использовании sing-box в качестве сервера, появляется доступ к локальным ресурсам. А с ним не было, на днях нашёл это решение. auto_detect_interface на роутере неверно определяет интерфейс для direct outbound. Интересно, а вдруг и вашу проблему решит. У меня просто нет в домашней сети сервисов доступных из wan через редирект портов.
попробовал, не повлияло... в остальном да, без этого параметра работает также на других клиентах.
тоже Proxmox)) DHCP на роутере, динамику убирать не вариант, потому что бывают сторонние разовые подключения, вопрос как с ними быть тогда? Да и смысла особо не вижу в этом. Немного потестировал, еще одна проблема всплыла, нет доступа из вне к машине, если добавить адрес, оно понятно в принципе почему. Нужно хорошенько подумать как это можно реализовать еще, у китайцев для этих роутеров все работало, но там tun интерфейса не было. Если будут идеи, напишу)
вы писали, что вам понятно, почему нет доступа извне) не поделитесь? вместе подумаем что можно сделать... мне странно, что перестает работать пробрасывание портов из стандартного интерфейса роутера для машин, добавленных в скрипт. оно пор идее должно раньше выполняться. и по локальным айпи они доступны...
Проблема в том, входящие пакеты долетают до условного сервера в сети, а вот обратно уйти не могут, так как идут через sing-box, а он отправляет не туда их, либо вообще через ваш прокси неизвестно куда. Решение: прописать маршруты, чтобы пакеты, допустим с такого-то локального адреса и таких то портов должны ходить через стандартный wan интерфейс, а не sing-box. Как настроить, зависит от платформы, роутера и прочего. Я реализовал через openwrt в виртуальной машине, используя Policy Based Routing. На Asus по идее тоже можно, PBR в каком-то пакете был реализован, в вики мерлина даже описано как использовать.
Наверное логично, что если у нас трафик на устройство приходит через sing-box, то и уходит через него. Надо попробовать прописать маршруты для определенного порта, чтобы если с него пришёл трафик, то и уйти должен через него. Ну или что-то навроде того, надо подумать на досуге. Может придется в самом конфиге это прописывать, т.к. это sing-box решает куда пойдут пакеты попавшие в него. А может в маршрутах и правилах роутера определять куда направить трафик с определенного порта. В общем есть над чем подумать. Я не особо силён в маршрутизации.
Логично, что если у нас трафик на устройство приходит через sing-box, то и уходит через него. Надо попробовать прописать маршруты для определенного порта, чтобы если с него пришёл трафик, то и уйти должен через него. Ну или что-то навроде того, надо подумать на досуге. Может придется в самом конфиге это прописывать, т.к. это sing-box решает куда пойдут пакеты попавшие в него. А может в маршрутах и правилах роутера определять куда направить трафик с определенного порта. В общем есть над чем подумать. Я не особо силён в маршрутизации.
Не правило, что пришел на порт такой-то, а именно с порта сервера в сети вашей должны пакеты в WAN уходить. Все входящие пакеты на роутер и так, по умолчанию, через WAN приходить будут до адресата, минуя sing-box, а вот уходить будут через sing-box, если вы эту машину добавили в своем скрипте. Прошивка роутера не даст прописать такие правила, по крайней мере через веб интерфейс, там нужно создавать отдельную таблицу маршрутизации для интерфейсов и там уже прописывать правила, копайте в сторону Policy Based Routing. Я пробовал на мерлине настроить с ней, но там не слишком очевидно это делается, к тому же правила сохраняться не будут, необходимо скрипты писать, чтобы мониторило и поднималось само все это дело. Кроме того sing-box неплохо так процессор нагружает, поэтому сделал себе роутер на openwrt в ВМ. А вообще реализовать можно, как реализуете сообщите)) PS: Возможно можно в конфиге sing-box прописать, например, все пакеты с ip:443 перенаправлять в LAN, но тут не готов сказать куда дальше пакет полетит, возможно обратно в sing-box, надо пробовать. Но сколько не находил решений, все через Policy Based Routing делают
Логично, что если у нас трафик на устройство приходит через sing-box, то и уходит через него. Надо попробовать прописать маршруты для определенного порта, чтобы если с него пришёл трафик, то и уйти должен через него. Ну или что-то навроде того, надо подумать на досуге. Может придется в самом конфиге это прописывать, т.к. это sing-box решает куда пойдут пакеты попавшие в него. А может в маршрутах и правилах роутера определять куда направить трафик с определенного порта. В общем есть над чем подумать. Я не особо силён в маршрутизации.
Не правило, что пришел на порт такой-то, а именно с порта сервера в сети вашей должны пакеты в WAN уходить. Все входящие пакеты на роутер и так, по умолчанию, через WAN приходить будут до адресата, минуя sing-box, а вот уходить будут через sing-box, если вы эту машину добавили в своем скрипте. Прошивка роутера не даст прописать такие правила, по крайней мере через веб интерфейс, там нужно создавать отдельную таблицу маршрутизации для интерфейсов и там уже прописывать правила, копайте в сторону Policy Based Routing. Я пробовал на мерлине настроить с ней, но там не слишком очевидно это делается, к тому же правила сохраняться не будут, необходимо скрипты писать, чтобы мониторило и поднималось само все это дело. Кроме того sing-box неплохо так процессор нагружает, поэтому сделал себе роутер на openwrt в ВМ. А вообще реализовать можно, как реализуете сообщите))
А, ну да, в кастомной таблице пакеты к устройству в локальной сети направляются через интерфейс br0, если они исходят от другого устройства в этой сети. Обратные пакеты в таком случае тоже кастомной таблицей направляются через br0. Если же пакеты к целевому устройству идут из WAN, то они попадают в основную таблицу маршрутизации и, в соответствии с её маршрутами, тоже минуют sing-box. Но вот обратные пакеты в этом случае от целевого устройства, если его ip правилами завернуто в кастомную таблицу, маршрутом по умолчанию направляются в tun интерфейс sing-box. Теперь картина ясна. Про вэб интерфейс и речи нет, надо как-то автоматизировать это в скрипте, хотя бы частично, подумаю. Восстановление новых правил и маршрутов ляжет на тот же монитор, что сейчас используется для восстановления маршрутов и правил при различных системных событиях. Не замечал прям высокой нагрузки на проц своего роутера именно от sing-box, процы у современных асусов весьма производительные. Вот оперативы маловато для этих целей, 1 гиг ещё норм, а вот для 512 мбайт желательно уже 32 битное ядро ставить, даже если проц 64 битный, как у RT-AX86S например.
Но этим займусь через неделю как минимум. Сейчас большое обновление доделываю. Решил отказаться от второго tun интерфейса, это на треть сократило размер кода и упростило его. Так же два tun интерфейса создавали трудно разрешимые проблемы с подсетями. А функционал второго tun можно парой простых правил в конфиге прописать, если он нужен. Функционал сервера доделываю, чтобы подключаться к домашней сети из WAN, используя sing-box, по прокси протоколам, vless например, а не встроенные vpn серверы роутера. Логику добавления правил маршрутизации переработал полностью, чтобы с несколькими подсетями разных размеров корректно работало с соблюдением приоритетов, в связи с чем и логика скрипта-монитора почти полностью изменена.
А может тут дело в RP фильтре? Ну и что, что обратные пакеты пошли через tun интерфейс, может просто изменился их исходный ip адрес на ip tun интерфейса и всё. И вот тут может быть засада, RP фильтр не пропустит ответные пакеты, если они исходят не с того ip, на который пришли входящие пакеты. Надо покопать в этом направлении, я весьма поверхностно знаком с RP фильтрацией вообще и на роутере Асус в частности. Знаю что на роутерах Асус она есть и по умолчанию для всех интерфейсов она строгая. И меняется ли исходный ip пакетов при прохождении через tun интерфейс тоже не уверен. Может изменение уровня фильтрации для какого-нибудь интерфейса поможет в данном случае? Надо экспериментировать.
Попробуйте отключить фильтрацию для tun интерфейса sing-box echo 0 > /proc/sys/net/ipv4/conf/sbtun/rp_filter Включается обратно на строгую фильтрацию командой echo 1 > /proc/sys/net/ipv4/conf/sbtun/rp_filter Средняя фильтрация echo 2 > /proc/sys/net/ipv4/conf/sbtun/rp_filter После перезагрузки роутера фильтрация слетит на строгую сама.
Проверил на доступе из WAN к вэб-морде роутера, включив его в настройках и добавив роутер в sing-box. Отключение RP фильтра не помогает, отключал сразу для sbtun, br0 и ppp0, бесполезно, нет ответов. При выключении sing-box или при исключении роутера из него, всё нормально становится. Что же такого там sing-box творит с ответными пакетами от веб-морды, что они никуда не доходят.
копайте в сторону Policy Based Routing. Я пробовал на мерлине настроить с ней, но там не слишком очевидно это делается
можете рассказать как вы пробовали на мерлине и как реализовали на openwrt? Т.е. какие действия и их порядок.
https://github.com/SagerNet/sing-box/issues/333
вот тут человек просит добавить такой функционал, ему тоже мешает... да, получается, нужно по сути создать скрипт, который будет добавлять правила роутинга с конкретных айпи:порт напрямую в wan, минуя sing-box.
если действовать со стороны sing-box - получается нужно понимать какой ip внутри тунеля получила такая-то машина (условно 192.168.1.ХХ внутри тунеля стало 172.19.0.ХХ) и далее писать правило, которое бы подменяло для пакетов с этого айпи адрес отправителя? не уверен что я прав и не уверен что это вообще возможно)
Я немного поломал голову, и решил что пока у меня тоже не планируется. Не вижу путей решения, не так просто это на роутере, может и возможно. Да, при желании всё возможно, видимо у меня его не хватает в этом направлении. И знаний очень не хватает. Нужен компетентный спец, а не как я- нахватался вершков и сделал для себя что хотел. Самое простое с моей точки зрения решение- разместить нужные ресурсы на виртуалке со своим ip или отдельной линукс машине в домашней сети и не включать их трафик в sing-box. Китайский мини-пк в этом плане мегаудобен, поднял proxmox и клепай lxc контейнеры или виртуальные машины с нужными сервисами. У меня именно так и сделано, только доступ из WAN к этим ресурсам через редирект портов отсутствует как метод, доступ в домашку теперь только через прокси-сервер в sing-box, раньше был только через встроенный vpn сервер роутера. Когда доведу до ума все свои задумки, тогда и можно будет ещё поизучать тему да поэкспериментировать. Но от помощи в этом направлении не откажусь никогда, может кто компетентный заглянет сюда да решит помочь страждущим.
копайте в сторону Policy Based Routing. Я пробовал на мерлине настроить с ней, но там не слишком очевидно это делается
можете рассказать как вы пробовали на мерлине и как реализовали на openwrt? Т.е. какие действия и их порядок.
https://github.com/RMerl/asuswrt-merlin.ng/wiki/Policy-based-Port-routing-(manual-method)
копайте в сторону Policy Based Routing. Я пробовал на мерлине настроить с ней, но там не слишком очевидно это делается
можете рассказать как вы пробовали на мерлине и как реализовали на openwrt? Т.е. какие действия и их порядок.
https://github.com/RMerl/asuswrt-merlin.ng/wiki/Policy-based-Port-routing-(manual-method)
почитал, получается алгоритм такой:
#!/bin/sh
sleep 10 # During the boot process nat-start may run multiple times so this is required
for VPN_ID in 0 1 2 3 4 5 do ip rule del prio 999$VPN_ID 2>/dev/null done
ip rule add from 0/0 fwmark "0x8000/0x8000" table main prio 9990 # WAN fwmark ip rule add from 0/0 fwmark "0x7000/0x7000" table ovpnc4 prio 9991 # VPN 4 fwmark ip rule add from 0/0 fwmark "0x3000/0x3000" table ovpnc5 prio 9992 # VPN 5 fwmark ip rule add from 0/0 fwmark "0x1000/0x1000" table ovpnc1 prio 9993 # VPN 1 fwmark ip rule add from 0/0 fwmark "0x2000/0x2000" table ovpnc2 prio 9994 # VPN 2 fwmark ip rule add from 0/0 fwmark "0x4000/0x4000" table ovpnc3 prio 9995 # VPN 3 fwmark
3. добавить в него нужное правило с помощью:
`iptables -t mangle -A PREROUTING -i br0 -m iprange --src-range АЙПИ_НУЖНОЙ_МАШИНЫ -p tcp -m multiport --dport НОМЕРА_ПОРТОВ_ЧЕРЕЗ_ЗАПЯТУЮ -j MARK --set-mark 0x8000/0x8000`
UPD: попробовал, не взлетело... ошибок нет, но сервис Plex так и не стал доступен извне.
Мне не хватает знаний)
After install script, run sbs-setup and change config, start sbs, bit its fail with error that can't download files from resources (github and etc.). Any idea? Maybe Ithere is missing some pkg on entware? Could you show the list of your installed entware packages