Як примусити dnsmasq використовувати верхній dns-сервер лише для певних імен домену?


16

Зараз у мене є наступний рядок в dnsmasq.conf, який добре обробляє всі запити ( /#/відповідає будь-якому домену; це потрібно):

address=/#/127.0.0.1

Тим не менш, є деякі домени, які потребують вирішення інших IP адрес 127.0.0.1.

Як тимчасове рішення вони були додані до /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

На жаль, це дуже тимчасове рішення: воно перестане працювати, як тільки зміниться IP-адреса будь-якого цільового домену.

Моє запитання: як примусити dnsmasq використовувати сервер dns висхідного потоку для вирішення IP-адрес деяких (вказаних) імен домену?

Відповіді:


29

Це можна зробити за допомогою server=директиви, наприклад

server=/ajax.googleapis.com/8.8.8.8

буде запитувати загальнодоступний сервер DNS google для домену ajax.googleapis.com аналогічно

server=/amazonaws.com/209.244.0.3

запитав би загальнодоступний DNS-сервер Level3 для домену amazonaws.com.

Ви можете згрупувати кілька доменів разом

server=/co.uk/com/8.8.4.4

Буде відправлено домени .co.uk та .com на сервер DNS о 8.8.4.4

Ви також можете мати кілька server=директив

−S, --server = [/ [<<домен>] / [домен /]] [<ipaddr> [# <port>] [@ <джерело> [# <port>]]]

Вкажіть безпосередньо IP-адресу поточних серверів. Встановлення цього прапора не пригнічує читання /etc/resolv.conf, використовуйте -R для цього. Якщо вказано один або більше необов'язкових доменів, цей сервер використовується лише для цих доменів, і вони запитуються лише за допомогою вказаного сервера. Це призначено для приватних серверів імен: якщо у вашій мережі є сервер імен, який має назви форми xxx.internal.thekelleys.org.uk за адресою 192.168.1.1, надаючи прапор -S /internal.thekelleys.org.uk/ 192.168.1.1 надішле всі запити внутрішніх машин до цього сервера імен, все інше перейде на сервери в /etc/resolv.conf. Порожня специфікація домену // має особливе значення "лише некваліфіковані імена", тобто імена без крапок у них. Нестандартний порт може бути вказаний як частина IP-адреси за допомогою символу #.

Також дозволено прапор -S, який дає домен, але не має IP-адреси; це говорить dnsmasq, що домен локальний, і він може відповідати на запити від / etc / hosts або DHCP, але ніколи не повинен пересилати запити на цьому домені на будь-які сервери вище. local - синонім сервера, щоб зробити файли конфігурації більш чіткими в цьому випадку.

Необов'язкова друга IP-адреса після символу @ вказує dnsmasq, як встановити адресу джерела запитів на цей сервер імен. Це має бути адреса, що належить машині, на якій працює dnsmasq, інакше ця лінія сервера буде зареєстрована, а потім ігнорована. Прапор порту запиту ігнорується для будь-яких серверів, у яких вказана адреса джерела, але порт може бути вказаний безпосередньо як частина адреси джерела.


Я не думаю, що йому потрібні кілька serverрядків: які б адреси він не міг вирішити (127.0.0.1), він може додавати їх addressрядками; нічого іншого, DNSMasq запитає його server. Досить впевнений, що так відбувається налаштування шахти.
gravyface

1
@gravyace: Я читав питання, як хочу, щоб все вирішилося на 127.0.0.1 за деякими винятками, які він хоче використовувати DNS для вирішення у випадку, якщо вони змінюють адресу. Оскільки я бачу, як це зробити, це використовувати директиви сервера.
користувач9517

О, можливо. Хто знає. Так чи інакше, це повинно його змусити йти.
gravyface

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