DNS: делегировать разрешение поддомена другому серверу имен

DNS: делегировать разрешение поддомена другому серверу имен

Я настраиваю DNS-сервер дома, чтобы мне было проще создавать псевдонимы для некоторых моих локальных серверов, а также в качестве проекта для лучшего понимания DNS. Поскольку я новичок в этом деле, пожалуйста, простите (и исправьте, если хотите) любые ошибки в терминологии!

Цель моего локального DNS-сервера — использовать мой домен для доступа к некоторым моим локальным машинам. Итак, предположим, что мой домен — my-domain.com. У меня дома есть медиа-сервер, к которому я хочу получить доступ как media.my-domain.com, и у меня есть два локальных DNS-сервера, которые я использую для этой цели. Эти DNS-серверы делегируют Google DNS другие запросы.

Вот мой файл зоны для my-domain.com, который хранится /etc/bind/zones/db.my-domain.comна моем локальном DNS-сервере ns1:

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.my-domain.com. admin.my-domain.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
@   IN  NS  ns1.my-domain.com.
@   IN  NS  ns2.my-domain.com.
;
; name servers - A records
ns1.my-domain.com.  IN  A   10.55.55.55
ns2.my-domain.com.  IN  A   10.55.55.56
;
; 10.55.55.0/24 - A records
media.my-domain.com.    IN  A   10.55.55.100

Вот мой файл параметров, который хранится /etc/bind/named.conf.optionsна моем локальном DNS-сервере ns1:

acl "trusted" {
    10.55.55.0/24; # home network
};
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { trusted; };
    listen-on { 10.55.55.55; };
    allow-transfer {none; }; # disable zone transfers

    forwarders {
        8.8.8.8; # google1
        8.8.4.4; # google2
    };

    //========================================================================
    // 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-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

Вот 10.55.55.0/24моя локальная подсеть, а ns1и ns2— мои основной и дополнительный DNS-серверы соответственно.

Я использую его my-domain.comдля других целей в Интернете, поэтому, например, когда я получаю доступ, admin.my-domain.comон переносит меня в консоль администратора публично видимого веб-сайта. Это означает, что если вы выполните nslookupon admin.my-domain.comс DNS-серверов Google, вы увидите, что он сопоставлен с глобально доступным публичным IP-адресом.

К сожалению, после того, как я внедрил свои локальные DNS-серверы, я не могу admin.my-domain.comправильно разрешить. Мои nslookupзапросы попадают на мои локальные DNS-серверы, которые не настроены для этого поддомена, и я получаю "Нет ответа" от моего локального DNS.

Вместо этого я хотел бы, чтобы мои DNS-серверы перенаправляли запросы на my-domain.comGoogle DNS и предоставляли ответы только на ns1.my-domain.com, ns2.my-domain.comи media.my-domain.com. Я видел несколько вопросов, похожих на мой, но ответы, как правило, заключаются в создании одного файла зоны для каждого поддомена. Это действительно единственный способ? Я бы очень хотел иметь возможность сказать: «Если я указал правило для , x.my-domain.comто следуйте этому правилу. В противном случае делегируйте вверх по цепочке (в моем случае Google DNS)».

Я не уверен, как устранить эту неполадку с помощью Google, поскольку я не совсем понимаю терминологию, и поскольку я полный нуб, я не знаю, с чего начать, чтобы исправить это самостоятельно. Возможно ли вообще то, о чем я прошу? Любая помощь в том, как я могу реализовать это поведение или найти его, будет очень признательна. Спасибо!

решение1

Проблема в том, что вы настроили Bind так, чтобы он был полномочным для всего example.com.

Поэтому вам необходимо либо настроить локальный Bind для хранения не только внутренних записей DNS, но и копий всех ваших публичных записей DNS в файле зоны для example.com.

В качестве альтернативы вместо того, чтобы сделать Bind авторизованным для example.comвас, зарезервируйте поддомен example.com для вашего внутреннего использования, сделайте свой внутренний DNS авторизованным только для него. т. е. создайте зону с именем home.example.comи используйте media.home.example.com. Таким образом, вы не сможете иметь конфликтующие записи во внутреннем и публичном DNS.

Связанный контент