DNS локальной сети средствами DD-WRT
Задача
Есть локальная сеть, роутер D-Link DIR-300 (прошит DD-WRT), сервер. Нужно обращаться к серверу по доменным именам без изменения файлов/настроек на клиентских компьютерах.
Решение
В DD-WRT уже установлен DNS-сервер DNSMasq (включается на вкладке Services), он умеет раздавать IP-адреса, прописаные в /etc/hosts маршрутизатора.
Поскольку у маршрутизатора файловая система только на чтение – написан скрипт expect для ежеминутного прописывания новых настроек. После обновления файла DNSMasq нужно отправить сигнал для обновления настроек.
Скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/expect spawn telnet 192.168.3.1 expect "login:" send "root\n" expect "Password:" send "ROUTER_PASSWORD\n" expect "DD-WRT:~#" send "echo \"127.0.0.1 localhost \n192.168.1.1 DD-WRT \n192.168.1.2 torrents.local \n\" > /etc/hosts \n" # желаемое содержимое /ets/hosts маршрутизатора send "killall -HUP dnsmasq\n" # сигнал на обновление настроек send "exit\n" expect eof |
Чтобы не путаться с форматированием первой слово каждой новой строки помечено жирным шрифтом.
Источник: DNS локальной сети средствами DD-WRT.