Настройка sing-box. Как зароутить в прокси ipv6-only домены не сломав все остальное?

Тогда удаляйте то, что сами наставили и скрипт на всякий случай тоже. Потом устанавливайте скрипт и настраивайте согласно ридми. Будут проблемы- пишите в личку или в issues. На этом хватит тут про скрипт.

Поднял sing-box 1.12.12 с tproxy на роутере asus RT-AX86U:

  • router: 511 Мб/c и под 100% CPU.
  • desktop (windows): 839 Мб/c.

Роутер не тянет или мб не так настроил, хз)

На роутере пытался (ради интереса) зароутить сам, без специальных скриптов
modprobe xt_TPROXY
#modprobe xt_socket

### ============================
### CONFIG
### ============================

# --- Режим A: только один клиент ---
CLIENT_CIDR="192.168.1.10/32"

# --- Режим B: вся подсеть ---
#CLIENT_CIDR="192.168.1.0/24"

# Порт sing-box TPROXY
TPROXY_PORT="12345"

### ============================
### ROUTING POLICY
### ============================

# Очистка старых правил
ip rule del fwmark 1 table 100 2>/dev/null
ip route flush table 100

# Создание таблицы policy routing
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100


### ============================
### IPTABLES (IPv4)
### ============================

iptables -t mangle -F SBOX 2>/dev/null
iptables -t mangle -X SBOX 2>/dev/null
iptables -t mangle -N SBOX

# Исключения (LAN + Multicast + Broadcast)
iptables -t mangle -A SBOX -d 192.168.1.0/24 -j RETURN
iptables -t mangle -A SBOX -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A SBOX -d 255.255.255.255 -j RETURN

# Проксирование TCP/UDP для выбранного клиента
iptables -t mangle -A SBOX -s $CLIENT_CIDR -p tcp \
    -j TPROXY --on-port $TPROXY_PORT --on-ip 0.0.0.0 --tproxy-mark 1

iptables -t mangle -A SBOX -s $CLIENT_CIDR -p udp \
    -j TPROXY --on-port $TPROXY_PORT --on-ip 0.0.0.0 --tproxy-mark 1

# Включение цепочки в PREROUTING
iptables -t mangle -A PREROUTING -j SBOX


### ============================
### MSS FIX
### ============================

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
    -j TCPMSS --clamp-mss-to-pmtu

echo "TPROXY rules loaded successfully."


Выяснил! Дело было в моем локальном dnsmaq. sing-box в случае direct доменов пытался идти не в шлюз 192.168.1.1 для резолва dns, а на мой dnsmaq, который был выключен. Он тупил 5 сек, а потом шел на 192.168.1.1.

То есть когда я включил свой dnsmaq - все заработало. Альтернативно можно просто удалить в настройках роутера доп dns сервер.

P.S. Нашел, что он идет на адрес моего dnsmaq через wireshark

Так работает HAPP

Наконец-то разобрался с отваливанием ipv6 на openwrt у мгтс, и с учётом стабильного аплинка пришлось доработать для ipv6 точечную маршрутизацию по доменам в туннель. Она настроена стандартно, через (ручные) списки хостов в dhcp, которые автоматически резолвятся через dnsmasq при dns-запросе. Везде продублировал отдельные таблицы, маркировку, правила, маршрут и т.п. для ipv6, единым пока остался только сам туннель, которому добавил внутренний ipv6 адрес, всё работает. Однако получается, теперь в dhcp нужно вести два списка доменов, один для ipv6, другой для ipv4, при этом заносить одновременно в два не получится. Опытным путём выяснено, что отрабатывает (или не отрабатывает) только первый по порядку в файле dhcp список, где домен попадается. Т.е. теперь ещё нужно проверять, как домен ходит, и добавлять в нужный список, для ipv4 или ipv6. В такой схеме оно так у всех базово организовано или я что-то упускаю очевидное в настройках?

Х.з., у меня Asus с прошивкой Мерлина и организовано принципиально по другому- никаких списков в dhcp, в ядро sing-box с помощью правил и маршрутов, созданных скриптом, попадает весь (или не весь при использовании fakeip) трафик выбранных устройств и всё днсится и роутится в самом sing-box.