2

На моем маршрутизаторе с OpenWRT я использую dnsmasq для отравления DNS, чтобы заблокировать рекламу. Если хост находится в списке, маршрутизатор отвечает на запрос DNS с 192.168.99.99, который только и всегда предоставляет прозрачный gif 1x1 (метод pixelserv).

Однако локальные устройства могут обойти это, напрямую используя свой DNS-сервер. Как я могу перенаправить эти DNS-запросы, чтобы реклама была заблокирована? ,

Я пробовал такие команды (8.8.8.8 и 8.8.4.4 - это DNS-серверы, 192.168.1.102 - исходное устройство, 192.168.1.1 - IP-адрес моего маршрутизатора):

iptables -t nat -A PREROUTING -d 8.8.8.8 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A PREROUTING -d 8.8.4.4 -j DNAT --to-destination 192.168.1.1

# or:
iptables -t nat -A PREROUTING -i wlan0 -s 192.168.1.102 -p udp --dport 53 -j REDIRECT --to-port 53
iptables -t nat -A PREROUTING -i wlan0 -s 192.168.1.102 -p tcp --dport 53 -j REDIRECT --to-post 53

Я попытался добавить добавление правила трафика через административную панель OpenWrt -> Source NAT, сопоставив «Любой TCP, UDP с IP 192.168.1.102 в локальной сети. К любому хосту, порт 53 в локальной сети», с действием «Переписать в исходный IP 192.168.1.1». порт 53 ". Я считаю, что это выполняется в iptables в любом случае.

Но я считаю, что DNS-запросы все еще разрешаются:

root@OpenWrt:~# tcpdump -vvv -i wlan0 port 53

Chromecast.lan.42591 > google-public-dns-a.google.com.domain: [udp sum ok] 57897+ A? pubads.g.doubleclick.net. (42)
google-public-dns-a.google.com.domain > Chromecast.lan.42591: [udp sum ok] 57897 q: A? pubads.g.doubleclick.net. 5/0/0 pubads.g.doubleclick.net. [5h59m59s] CNAME partnerad.l.doubleclick.net., partnerad.l.doubleclick.net. [4m59s] A 74.125.136.157, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.156, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.155, partnerad.l.doubleclick.net. [4m59s] A 74.125.136.154 (132)

Может быть, совершенно другой метод, например, через dnsmasq, будет работать? Я не мог найти это, однако.

(Я нашел какое-то объяснение о том, как перенаправить на другой удаленный DNS-сервер, но это мне здесь не поможет. Это в основном для разблокировки регионов или для томатов или DD-WRT. Также это тесно связано с моим предыдущим вопросом)

1 ответ1

2

Используйте iptables -t nat -A PREROUTING -i br-lan -p udp --dport 53 -j DNAT --to 192.168.1.1

Пояснение iptables использует цепочки для маршрутизации трафика. Мы используем iptables -t nat -A PREROUTING чтобы выбрать цепочку, в которую мы хотим добавить новое правило. Затем мы сужаем выбор, чтобы включить только трафик, выходящий в Интернет, выбрав интерфейс -i br-lan который является интерфейсом локальной сети OpenWRT. Так как мы только перенаправляем DNS udp 53 мы добавляем -p udp --dport 53 . Теперь, когда мы получаем только DNS-пакеты, мы перенаправим их на локальный DNS-сервер, используя -j DNAT --to 192.168.1.1 . Вы можете заменить пункт назначения любым DNS-сервером.

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .