У меня есть Raspberry PI 4B, который выполняет DNS (PiHole+Bind9), DHCP, Wireguard, ... RPi находится на 192.168.1.2, и он раздает 192.168.1.1 (маршрутизатор) в качестве шлюза по умолчанию для интернет-трафика.
Мой Chromecast (и, возможно, другие устройства) используют жестко закодированные DNS-серверы, поэтому я хочу перенаправить этот трафик обратно на мой собственный DNS. Мой маршрутизатор не способен перехватывать DNS-трафик, поэтому единственный вариант - направить весь трафик на Raspberry Pi и использовать iptables
для перехвата DNS-запросов. Я хочу указать 192.168.1.2 в качестве шлюза по умолчанию с DHCP-сервера и использовать iptables для перенаправления всего трафика (кроме DNS) на маршрутизатор. Я знаю, что это не на 100% безопасно, потому что пользователи могут вручную установить шлюз на 192.168.1.1, чтобы предотвратить это. Я не думаю, что устройства будут достаточно умны, чтобы сделать это.
У меня есть несколько вопросов:
Он должен быть работоспособным; обычно домашние маршрутизаторы, которые также являются программными маршрутизаторами с небольшим HW-ускорением, построены на ва-а-амного менее мощных процессорах, чем RasPi 4B. Но это также зависит от многих деталей конфигурации. Просто попробуйте и проверьте это.
Просто проложите маршрут по умолчанию и включите пересылку IPv4 (sysctl.conf
, net.ipv4.ip_forward = 1
) на RPi, вот и все. Затем вы сможете указать его в качестве шлюза по умолчанию на других системах, и он будет работать. Но я не знаю конфигурации сети по умолчанию на RPi, возможно, вам также потребуется отключить перенаправления (в sysctl.conf
, где вы включили перенаправление, установите net.ipv4.conf.all.send_redirects = 0
и net.ipv4.conf.default.send_redirects = 0
). Это может понадобиться для того, чтобы RPi не выдавал хостам уведомления: "Я переслал этот пакет для вас, но вы можете сделать это сами, используйте .1.1 напрямую".
Ответ на этот вопрос был дан на другом сайте: https://askubuntu.com/questions/592042/iptables-redirect-dns-queries. Это вполне применимо к вашему случаю.