DD-WRT: головні болі dnsmasq зі статичними хостами


6

Я використовую dd-wrt (r23503, для запису) на моєму новому маршрутизаторі Asus RT-AC56U. На жаль, конфігурація dnsmasq дає мені тільки голови. Ось що я хочу :

  • DNS-запити з LAN / WLAN для хостів у LAN / WLAN повинні відповідати як для коротких імен, так і для FQDN.
  • Оскільки деякі пристрої є портативними (як, наприклад, мій телефон), мені потрібен host.mydyndomain.net, щоб вирішити IP-адресу локальної мережі при підключенні до локальної мережі і зовнішньому IP-адресі, коли він запитується ззовні локальної мережі.

Але ось що я зараз отримую:

  • Запити для орендованих DHCP хостів повертаються правильно (опція "Local DNS" для ddnswrt для dnsmasq).
  • Запити на будь-який випадковий неіснуючий хост неправильно повертають зовнішню WAN IP-адресу. Отже, "nslookup foobarbaz" дає результат, коли він повинен повернути помилку.

Що стосується моїх хостів зі статичними IP, я ще не знайшов адекватного рішення. Я читав за допомогою man manpage і з того, що я можу сказати, правильний вибір - опція "host-record".

Конфігурація, пов'язана з dnsmasq в dd-wrt (на вкладці Послуги):
Розділ "DHCP-сервер":
Використовується домен: WAN
Домен LAN: [пустий]
Додаткові параметри DHCP: [порожній]
Визначено одну статичну оренду.

Розділ "DNSMasq":
DNSMasq: увімкнено
Локальний DNS: увімкнено
Немає DNS Rebind: увімкнено
Додаткові параметри DNSMasq:
host-record = myhost, myhost.mydyndomain.net, 192.168.1.1
[ще кілька записів хост-записів для інших хостів зі статичними IP-адресами у мережі]

На жаль, введення цих рядків хост-записів у поле додаткових параметрів, здається, повністю розбиває dnsmasq, а потім нічого не може підключитися до LAN / WLAN через DHCP. Після того, як я викину вміст вікна, DHCP знову почне працювати.

Мій файл dnsmasq.conf виглядає наступним чином:

interface=br0
resolv-file=/tmp/resolv.dnsmasq
all-servers
domain=mydyndomain.net
dhcp-leasefile=/tmp/dnsmasq.leases
dhcp-lease-max=51
dhcp-option=lan,3,192.168.1.1
dhcp-authoritative
dhcp-range=lan,192.168.1.100,192.168.1.149,255.255.255.0,1440m
dhcp-host=88:53:2E:9B:3E:80,Redtail,192.168.1.5,1440m
stop-dns-rebind

Файл /etc/resolv.conf:

search ph.cox.net
nameserver 192.168.1.1

Файл /tmp/resolv.dnsmasq:

nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 68.105.28.13

Інша менша, але не пов'язана з цим проблема: На сторінці "базової настройки" в dd-wrt в розділі DHCP config я ввів IP-адреси для серверів OpenDNS (як ви можете побачити вище). Я б віддав перевагу просто Використовуйте ці два сервера імен, але сервер імен автоматично призначається як третій сервер імен. Чи є спосіб сказати dd-wrt ігнорувати інформацію DNS, яку він отримує при отриманні оренди DHCP від ​​модему / ISP?

Отже ... Що я роблю неправильно? Зрозуміло, що dnsmasq не задоволений записами хост-записів, але який правильний варіант використовувати? Я розміщую цю інформацію в цьому місці, а не в / etc / hosts, оскільки останній є створеним файлом і не легко змінюється через веб-інтерфейс. Звичайно, я можу легко редагувати його, підключившись через SSH, але зміни не будуть постійними.

Відповіді:


8

У мене досить багато досвіду роботи з dnsmasq на dd-wrt і особливо близько до дати цього коментаря. Я можу поділитися з вами моїм робочим рішенням для кожного з відповідей на кожну вимогу. Я буду чинити опір, додаючи більше.

Кожен параметр у вашому активному /tmp/dnsmasq.conf розміщено вище приходить безпосередньо з налаштувань конфігурації, які ви вибрали, як описано

За винятком

для вашого hostname = запис, яку ви не повинні використовувати imo. Ти хочеш

Використаний домен: [WAN/LAN] ні Використаний домен [WAN].

Це дозволить дротовим (LAN) і бездротовим (WAN) пристроям працювати у вашій мережі.

Також підібрати короткий Домен Lan: [dom ] або будь-яке коротке слово місцеві . Деякі користуються lan деяке використання локальнийдомен . Це потрібно для ваших вимог і надасть прив'язку до внутрішнього єдиного домену, який тільки ви та внутрішні користувачі побачать / використають. Вибране значення буде розміщено у кожному клієнті DHCP search dom резольвер. Я буду використовувати dom для решти, але ви можете зробити це як завгодно.

Почну з двох перших вимог.

  1. DNS-запити з LAN / WLAN для хостів у LAN / WLAN повинні відповідати як для коротких імен, так і для FQDN.

  2. Оскільки деякі пристрої є портативними (як, наприклад, мій телефон), мені потрібен host.mydyndomain.net, щоб вирішити IP-адресу локальної мережі при підключенні до локальної мережі і зовнішньому IP-адресі, коли він запитується ззовні локальної мережі.

Для хостів, які мають інший внутрішній чи зовнішній ip, але з однаковою назвою з обох сторін dd-wrt, потрібно мати:

  • Додавайте один рядок для кожного розв'язуваного вузла Static Leases трохи нижче вашого правильно порожній Additional DHCP Options текстова область. Зверніть увагу на внутрішнє ім'я web.dom або просто web для зручності, коли на лан.

Примітка:

 [Static Leases++++++++++++++++++++++++++++++++++++++++++++++++++++++++]    
  [MAC Address]       [Host Name   ][IP Address    ][Client Lease Time]
  [00:19:B9:5B:2B:A5] [web         ][192.168.2.5   ][             1440]

Примітки: Я думав, що це було використано тільки для udhcpcd але це також використовується dnsmasq і запише як фактичне dnsmasq.conf з правильним dhcp-host= лінії і ставить запис ip host.dom для кожного / tmp / hosts, що використовується DNSMasq для виконання всіх локальних дозволів на імена.

У мене є скрипт і текстовий файл для створення цих записів, оскільки веб-інтерфейс трохи громіздкий. Ось що робить сценарій у двох словах.

macToHostNames.txt:
# comment lines ignored unless embedded set:tag values like set:kids 
# note the ip is just the HOST portion of the subnet, eg: 192.168.1.32 -> 1.32
# host      id       mac address        cnames/aliases for same box
kidhost1    1.32     00:MA:CA:DD:E5     alias1 nabi2 # in-line comment set:kid 
web         1.5      00:AM:AC:AD:ES     www homeweb  # web server with aliases
EOF
generate_Files_Then_Send_Then_Activate_If_Tests_Are_Ok.sh < macToHostNames.txt
# this script file creates 3 files which are sent along with a test script:
dnsmasq_options.new # nvram set dnsmasq_options="$(cat dnsmasq_options.new)"
static_leases.new   # nvram set static_leases="$(cat static_leases.new)"
static_leasenum.new # nvram set static_leasenum="$(cat static_leasnum.new)"
testDnsMasqOpts.sh  # scp -p *.new test*.sh admin@gw:/tmp && ssh admin@gw "/tmp/test*.sh" 
  • add address=/web.dynip.org/<ip> рядки у вікні Параметри DNSMasq address = / web.mydyndomain.net / 192.168.2.5 # додати стільки, скільки вам потрібно

  • нарешті, потрібно оновити DDNS Конфігурація для надання DDNS-сервісу відображення вашого зовнішнього постачальника надав динамічну IP-адресу, щоб вирішити як web.mydyndomain.net. Думаю, ви успішно налаштували цю частину.

З цією конфігурацією ти можеш ping web або ping web.dom або пінг web.mydyndomain.net повернеться 192.168.2.5 перебуваючи всередині брандмауера і отримуючи доступ ззовні за назвою web.mydyndomain.org все ще працює.

Інші вимоги задовольняються вашим іншим конфіг, але ви можете спокійно додати ці рядки, як я тестував багато разів (до моменту написання скрипта для виконання однієї лінії dnsmasq за раз і показуючи мені порушувальну лінію, оскільки залишилося всі записи dns для простору в моєму останньому dnsmasq збірки і все, що можна покластися на це повернення статус dnsmasq: $?).

Для останніх вимог я покажу вам рядки мого конфігурації з коментарями (зауважте, ви можете помістити коментарі у полі Додаткові параметри DNSMasq).

  1. Запити для орендованих DHCP хостів повертаються правильно (опція "Local DNS" для ddnswrt для dnsmasq).
  2. Запити на будь-який випадковий неіснуючий хост неправильно повертають зовнішню WAN IP-адресу. Отже, "nslookup foobarbaz" дає результат, коли він повинен повернути помилку.
  domain-needed    # dont fwd to ext DNS names with no domain
  address=/web.mydnsdomain.org/192.168.2.5 # resolve to this internally!
  expand-hosts     # add .dom to host names without a domain 
  local=/dom/      # map all host.dom request to *this* dns
  bogus-priv       # reject local lookups not in hosts
  localise-queries # for local servers

Я викину в деяких не пов'язаних халяви сумнівної вартості (і для резервного копіювання).

 no-ping          # some swear by this one to get DNSMasq to work!
 filterwin2k      # junk from MSFT boxen (remove this if ldap SRV used)
 cache-size=3000  # fast local DNS lookups 
 clear-on-reload  # clear ifr.c changes and sig received 

Щоб обмежити кількість DNS-серверів, які ви можете зробити за допомогою dhcp-options = 6, виконайте такі дії:

dhcp-options = lan, 6,8.8.8.8 # це надішле тільки один запис для всіх серверів


1
Я впевнений, що це, по суті, правильно, але, безумовно, WAN є "Wide Area Network" (тобто, INTERNET стороні маршрутизатора), нічого спільного з Wireless.
Auspex

Точна письмова відповідь @Rent, +1
Marecky
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.