Я пытаюсь использовать iptables для принудительной установки DNS для определенных устройств (Shibby Tomato на Asus RT-N66U). Я не нашел ничего в Интернете, описывающего такую конфигурацию. Самое близкое, что я мог найти, было это:
# For the Samsung TV, use WAN DNS (i.e., Comcast).
# #############################################################
iptables -t nat -A PREROUTING -i br0 -s samsung-tv.home.lan -p tcp --dport 53 -j DNAT --to $(nvram get wan_get_dns | awk -F' ' '{print $1}')
iptables -t nat -A PREROUTING -i br0 -s samsung-tv.home.lan -p udp --dport 53 -j DNAT --to $(nvram get wan_get_dns | awk -F' ' '{print $1}')
# For every other client, use LAN DNS.
# #############################################################
iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)
Это близко, но есть пара проблем.
1) Я бы предпочел сделать это по MAC-адресу, а не по имени хоста. Это возможно?
2) Это позволяет использовать только один DNS-сервер для каждого клиента. Есть ли способ назначить первичный и вторичный DNS с помощью этого (или аналогичного) метода?