Closed drizt closed 2 weeks ago
blockcheck.sh использует системный DNS он сканирует другие DNS только при dnscheck в начале и городить этот огород было вовсем не обязательно
что касается редиректа, то это стандартная схема, которая описана где угодно как для iptables, так и для nftables
Ну тогда это как бы не совсем нормально, что он кидает предупреждение в случае, если системный DNS настроен правильно. Тем более что в доке прямым текстом сказано.
Запустите blockcheck.sh. blockcheck.sh в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то первым делом нужно решить эту проблему, иначе ничего не будет работать.
Воспринимается так как будто надо добиться, чтоб этого предупреждения не было.
По поводу огорода, ну ChatGPT сходу эту настройку выдать не мог, пришлось долго вникать как это всё работает. И уже с понимание писать так как нужно.
Сейчас специально загуглил по фразе openwrt nft redirect dns
. Нет там этого.
Что пишет тестер DNS в блокчеке ? лог сюда
root@OpenWrt:~# dig rutracker.org ; <<>> DiG 9.18.27 <<>> rutracker.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36359 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;rutracker.org. IN A ;; ANSWER SECTION: rutracker.org. 272 IN A 104.21.32.39 rutracker.org. 157 IN A 172.67.182.196 ;; Query time: 169 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sun Aug 25 13:25:03 +05 2024 ;; MSG SIZE rcvd: 74 root@OpenWrt:~# dig -p 53 @77.88.8.88 rutracker.org ; <<>> DiG 9.18.27 <<>> -p 53 @77.88.8.88 rutracker.org ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15612 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;rutracker.org. IN A ;; ANSWER SECTION: rutracker.org. 600 IN A 188.186.154.88 ;; Query time: 0 msec ;; SERVER: 77.88.8.88#53(77.88.8.88) (UDP) ;; WHEN: Sun Aug 25 13:25:14 +05 2024 ;; MSG SIZE rcvd: 47 root@OpenWrt:~# dig -p 1253 @77.88.8.88 rutracker.org ; <<>> DiG 9.18.27 <<>> -p 1253 @77.88.8.88 rutracker.org ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64995 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;rutracker.org. IN A ;; ANSWER SECTION: rutracker.org. 142 IN A 172.67.182.196 rutracker.org. 142 IN A 104.21.32.39 ;; Query time: 40 msec ;; SERVER: 77.88.8.88#1253(77.88.8.88) (UDP) ;; WHEN: Sun Aug 25 13:25:14 +05 2024 ;; MSG SIZE rcvd: 74
root@OpenWrt:/opt/zapret# ./blockcheck.sh * checking system Linux detected firewall type is nftables * checking privileges * checking prerequisites * checking DNS system DNS is working comparing system resolver to public DNS : 8.8.8.8 pornhub.com : OK putinhuylo.com : OK rutracker.org : MISMATCH -- system resolver : 104.21.32.39 172.67.182.196 -- 8.8.8.8 : 188.186.154.88 -- POSSIBLE DNS HIJACK DETECTED. ZAPRET WILL NOT HELP YOU IN CASE DNS IS SPOOFED !!! -- DNS CHANGE OR DNSCRYPT MAY BE REQUIRED * checking virtualization cannot detect NOTE ! this test should be run with zapret or any other bypass software disabled, without VPN specify domain(s) to test. multiple domains are space separated. domain(s) (default: rutracker.org) :
config dnsmasq option domainneeded '1' option localise_queries '1' option local '/lan/' option domain 'lan' option expandhosts '1' option authoritative '1' option readethers '1' option leasefile '/tmp/dhcp.leases' option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto' option localservice '1' option ednspacket_max '1232' option rebind_protection '1' list server '77.88.8.88#1253' ...
... config interface 'wan' option device 'wan' option proto 'pppoe' option username '********' option password '********' option ipv6 'auto' option peerdns '0' ...
домру подменяет DNS и перехватывает запросы DNS на 53 порт то что после замены DNS на yandex#1253 блокчек продолжает ругаться, это нормально. он сравнивает ответы системного DNS с 8.8.8.8 и находит подмену и указывает на необходимость решить проблему DNS но он не проверяет решена ли она по факту для системного DNS или нет если решена, можно дальше игнорировать результат
Ну вот в том то и дело что получается что решение через nft более предпочтительнее, потому что с ним нет этой неоднозначности. Проверка через blockcheck.sh проходит на ура. И мне не надо думать, решена проблема или нет.
Не согласен. Но так тоже работает
Ну тогда можно задачу закрывать. Я лишь хотел предложить добавить сразу конфиг для nft чтоб, если кто-либо захочет так же сделать, чтоб ему не нужно была искать решение. Но нет так нет.
Решение не нужно для проблемы, которой нет. Лучше ограничиваться МНВ - минимально необходимое воздействие. Не стоит уподобляться дому ру и искажать глобальную сеть своим перехватом. Лучше видеть то, что выдается от провайдера, пусть оно им искажено. Но свои искажения вносить не есть хорошо. Гораздо лучше сделать так, чтобы свой DNS выдавал то, что нужно. Этого вполне достаточно.
https://github.com/bol-van/zapret/blob/master/docs/quick_start.txt тут сказано что можно проблему dns решить с помощью nftables, но не сказано как. Я как человек далёкий от этого потратил пару дней чтоб разобраться. Вариант с dnsmasq не прокатывается потому что blockcheck.sh всё равно не использует системный DNS а в dig его явно указывет. У меня роутер с OpenWRT и fw4. Настроил по итогу так.
/etc/nftables.d/dns.nft
Думаю это можно в документацию к zapret включить.