Ага, вот теперь всё кристально понятно! Ты поймал классический **TPROXY-шторм** (маршрутизационную петлю).
То, что ты видишь в netstat (sing-box висит на 53 порту с 213 248 пакетами) — это оптическая иллюзия прозрачного проксирования.
Сам sing-box физически порт 53 не захватывает. Механика такая: фаервол перехватывает DNS-запрос и принудительно отдает его в sing-box. Ядро Linux при этом открывает "прозрачный сокет" (IP_TRANSPARENT), который в логах выглядит как зависший 53 порт.
Из-за отсутствия нужной маршрутизации sing-box выплевывает этот пакет обратно в сеть роутера, фаервол **снова** его перехватывает, и так по кругу тысячи раз в секунду, пока память не забьется.
В конфигурации OpenWrt параметр list exclude_port '53' почему-то игнорируется (скорее всего, баг в стартовом скрипте пакета для nftables/fw4). Предыдущие команды вставки правил не сработали, потому что я пытался вставить их в стандартные цепочки, а скрипт sing-box создает свои собственные нестандартные имена таблиц в фаерволе.
Давай разорвем эту петлю вручную и навсегда.
### Шаг 1. Экстренная остановка шторма (вернет интернет)
Скопируй и выполни этот блок. Мы остановим прокси, чтобы роутер "продышался", и перезапустим DNS.
```bash
/etc/init.d/sing-box stop
/etc/init.d/dnsmasq restart
sleep 2
nslookup google.com 127.0.0.1
```
*После этого интернет у тебя должен стабильно заработать (без обхода блокировок).*
### Шаг 2. Ищем, куда спрятался TPROXY
Чтобы вставить исключение в фаервол, нам нужно узнать точное название цепочки, которую создал стартовый скрипт. Выполни эту команду и пришли мне её вывод:
```bash
nft list ruleset | grep -B 2 -A 5 -i tproxy
```
Как только ты пришлешь вывод, я дам тебе одну точную команду, которая встроит правило обхода для 53 порта прямо в ядро фаервола, и мы спокойно запустим sing-box без конфликтов!