Как мне разрешить более 3 DNS-серверов в Ubuntu 16?

В моем /etc/network/interfaces у меня есть несколько серверов, перечисленных в dns-nameservers, у одного набора серверов Ubuntu есть 3, у другого 4. У нас не было проблем, пока нас не заставили добавить еще 2 к каждому, но мы все еще не могли успешно решить с использованием новых DNS-серверов. После некоторых исследований мы обнаружили, что только 3 DNS-сервера были скопированы в /etc/resolv.conf. Мы можем решить нашу непосредственную проблему, разместив там 3 основных сервера и опуская резервные DNS-серверы, но я бы хотел сохранить все необходимые DNS-серверы доступными.

А почему так много:

  • 8.8.8.8 используется, потому что он получает обновленную информацию быстрее, чем наши внутренние
  • Наша внутренняя сеть DNS
  • Другой DNS для кластера БД
1
задан 10 July 2019 в 15:10

4 ответа

Можно использовать dnsmasq добавить любое количество дополнительных серверов DNS. Вот то, как сделать это.

Первая установка dnsmasq:

sudo apt install dnsmasq

Конфигурационный файл редактирования и добавляет Ваши серверы DNS там (f.ex в конце файла):

sudo nano /etc/dnsmasq.conf

server=8.8.8.8
server=8.8.4.4

Сохраните файл и теперь отредактируйте файл (и добавьте 127.0.0.1 как сервер имен):

sudo nano /etc/resolv.conf

nameserver 127.0.0.1

Перезапустите dnsmasq (или еще лучшая перезагрузка ПК):

sudo service dnsmasq restart

Проверьте, отвечает ли dnsmasq на запросы DNS (ищите СЕРВЕР, должен быть 127.0.0.1):

dig google.pl

;; SERVER: 127.0.0.1#53(127.0.0.1)

Примечание: Иногда Администратор сети может переопределить /etc/resolv.conf файл, таким образом, можно сделать это только для чтения:

sudo chmod -w /etc/resolv.conf

ПРИМЕЧАНИЕ 2: возможно, что необходимо будет отключить сборку - в DNS

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved
3
ответ дан 3 December 2019 в 06:36

Это будет казаться, что это - 'излишество' для того, в чем Вы нуждаетесь, но на самом деле это - вероятно, самое 'стабильное' решение до сих пор для обработки маршрутизации запросов DNS на основе того, что точно Вы запрашиваете.

Это может быть развернуто на независимом сервере или на самом локальном сервере (серверах).

Настроенный a bind9 Сервер DNS, настроенный как средства передачи к правильно запросам маршрута к надлежащим серверам DNS на основе требуемых доменов.

Это может походить на излишество, но это - на самом деле нормальное решение. Но, мы должны будем сделать некоторые изменения для создания этой работы надлежащей.


Шаг 0: Поскольку Вы находитесь на 16,04, мы должны связать bind9 сервер к отдельному localhost адрес на 127.0.2.1 для локального слушателя.

ТОЛЬКО СДЕЛАЙТЕ ЭТОТ ШАГ при выполнении этого на самом сервере, и не как его собственный независимый сервер DNS, к которому запросит сервер. При выполнении этого на отдельном сервере так сервер, Вы направляли, что жалобы об отправят запросы на этот сервер, пропустить к шагу 1. ИНАЧЕ сделайте эти изменения на сервере, на который Вы жалуетесь.

Во-первых, должны добавить мы 127.0.2.1 к Вашей системе. Таким образом, можно связать с адресом правильно.

Отредактируйте Ваш /etc/network/interfaces файл, и под iface lo inet loopback строка добавляет это:

    up ip -4 addr add 127.0.2.1/8 dev lo
    down ip -4 addr del 127.0.2.1/8 dev lo

Можно или перезагрузить систему теперь для получения этого адреса, добавленного, или если Вы НЕ хотите перезагружать, можно добавить это вручную:

sudo ip -4 addr add 127.0.2.1/8 dev lo

После того как Вы проверяете, что этот адрес настраивается (ip -4 addr list покажет 127.0.2.1 теперь), мы можем продолжить.

Шаг 1: установка bind9

Во-первых, установка bind9.

sudo apt install bind9

Затем, после того как это установлено, мы должны настроить его. В целях этого ответа я собираюсь быть использованием следующих примеров:

*.db.example.com is served by DNS server 10.3.2.1
*.internal.example.com is served by DNS server 10.2.3.4
Internet nameservers are serviced by 8.8.8.8 and 8.8.4.4 (Google)

Шаг 2: настроить bind9

Отредактируйте /etc/bind/named.conf.options файл, таким образом, это похоже на это:

options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable
    // nameservers, you probably want to use them as forwarders.
    // Uncomment the following block, and insert the addresses replacing
    // the all-0's placeholder.

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-enable yes;
    dnssec-validation yes;

    minimal-responses yes;

    auth-nxdomain no;    # conform to RFC1035

    // If this bind9 instance is acting as a standalone server for
    // multiple systems to query to, then omit 127.0.2.1 here and 
    // adjust 10.10.1.0 to be the server's actual IP address on network.
    // 
    // If this bind9 instance is ONLY serving the local server you were
    // trying to get 5 Nameservers onto, then only use 127.0.2.1 here.
    listen-on { 127.0.2.1; 10.10.1.0; };

    // If you don't have IPv6 set up, then leave this like this:
    listen-on-v6 { none; };

    allow-query { 127.0.0.0/8; 192.168.0.0/16;
                  10.0.0.0/8; 172.16.0.0/12; };

    allow-transfer { 127.0.0.0/8; 192.168.0.0/16;
                     10.0.0.0/8; 172.16.0.0/12; };

    allow-recursion { 127.0.0.0/8; 192.168.0.0/16;
                      10.0.0.0/8; 172.16.0.0/12; };

};

Это настроит bind9 так, чтобы все в других отношениях несопоставленные запросы были переданы к серверам имен Google на 8.8.8.8 и 8.8.4.4 в порядке.

Теперь, я упоминаю "несопоставленные запросы". Мы должны настроить другие две внутренних зоны средства передачи для вышеупомянутых диапазонов 'в качестве примера'.

Править /etc/bind/named.conf.local. Мы должны будем добавить некоторые вещи теперь.

В конце файла добавьте это:

zone "db.example.com" {
    type forward;
    forwarders { 10.3.2.1; };
};

zone "internal.example.com" {
    type forward;
    forwarders { 10.2.3.4; };
};

Затем после того как это сделано, мы должны перезапустить bind9 сервис.

sudo systemctl restart bind9

После того как это перезапущено, мы должны видеть это слушание и на localhost его сервера и на IP-адресе системы в зависимости от конфигураций выше.


Шаг 3: Удостоверьтесь право твердости сервера.

Выполните некоторые запросы DNS против этого сервера (Вам, возможно, понадобится dnsutils установленный для этого). Для "АДРЕСА" используйте IP-адрес выполнения сервера bind9 если это - автономный сервер, используйте IP-адрес 127.0.2.1 если Вы работаете bind9 на том же сервере как сервер Вы спрашивали о.

dig @ADDRESS +short server.db.example.com
dig @ADDRESS +short system.internal.example.com
dig @ADDRESS +short google.com

Все три из этих запросов должны решить правильно. Используйте надлежащие имена хостов для своих сред, все же.

Если все это работает, то продвиньтесь.

Шаг 4: Установите свой сервер для надлежащего использования этого сервера имен

Если этот сервер имен теперь настраивается на отдельном сервере с сервера, Вы первоначально говорили о, то вместо этих 5 серверов имен Вы использовали прежде, только используйте IP-адрес сервера, выполняющего это bind9 экземпляр вместо этого.

Если этот сервер имен настраивается локально на том же сервере как тот, Вы спрашивали о, то используете 127.0.2.1 вместо этих 5 IP-адресов.

Затем перезагрузка. У Вас должен затем быть DNS, работающий, как Вы ожидаете, но использование bind9 как механизм вместо того, чтобы пытаться заставить resolvconf работать правильно.


Это может казаться сложной установкой, но на самом деле работает довольно проклятое хорошо. Я использую подобную установку для 'нескольких среды' установки, где я должен использовать внутренние серверы DNS на VPNs для определенных диапазонов подсетей, но Интернет-адресах для всего остального при обходе других серверов DNS. Это может походить на решение для излишества, но работы.

Удача, и задает вопросы, если у Вас есть они как комментарии к моему ответу!

2
ответ дан 3 December 2019 в 06:36

Для Версий Ubuntu после 16.04:

Просто отредактируйте файл /etc/systemd/resolved.conf

Не прокомментируйте DNS и домены, введите дюйм/с и searchdomains (разделенный пробел) и перезапустите systemd-resolv или перезагрузите Ваш хост.

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
DNS=<IP> <IP>
#FallbackDNS=
Domains=<domain> <domain>
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Для версий Ubuntu с 16,04 или ранее

Использовать resolvconf :

sudo apt-get install resolvconf

править /etc/resolvconf/resolv.conf.d/tail включать Ваши серверы DNS и домены

nameserver 8.8.8.8
nameserver 4.4.4.4
nameserver 192.168.1.1
search mydomain.com myotherdomain.com corporatedomain.local

затем перезапустите сервис

/etc/init.d/resolvconf restart

и Ваш /etc/resolv.conf должен быть похожим на это

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
nameserver 8.8.8.8
nameserver 4.4.4.4
nameserver 192.168.1.1
search mydomain.com myotherdomain.com corporatedomain.local
0
ответ дан 3 December 2019 в 06:36

Для тех, кто следует шагам из ответа Михала Пшибиловича и испытывает проблемы с NetworkManager, переписывающим /etc/resolv.conf с 127.0.0.53 - добавьте dns=dnsmasq в раздел [main] в /etc/NetworkManager/NetworkManager.conf. Затем выполните:

systemctl restart NetworkManager
systemctl restart dnsmasq
0
ответ дан 30 January 2021 в 22:19

Другие вопросы по тегам:

Похожие вопросы: