3

Я настраиваю 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 он выводит меня на консоль администратора публично видимого веб-сайта. Это означает, что если вы выполните nslookup на admin.my-domain.com с DNS-серверов Google, вы увидите, что он сопоставлен с общедоступным общедоступным IP-адресом.

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

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

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

1 ответ1

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .