В большинстве примеров зоны DNS, как показано ниже

$ORIGIN .
$TTL 86400  ; 1 day
example.com     IN SOA  dns.example.com. hostmaster.example.com. (
        2001062504 ; serial
        21600      ; refresh (6 hours)
        3600       ; retry (1 hour)
        604800     ; expire (1 week)
        86400      ; minimum (1 day)
        )
    NS  dns.example.com.
    A   192.168.1.2
    MX  10 mail.example.com.
 $ORIGIN example.com.
 $TTL 60 ; 1 minute
 dd2         A   192.168.1.7
 $TTL 86400  ; 1 day
 ex1         A   192.168.1.2
 ex2         A   192.168.1.2
 ex3         A   192.168.1.3
 ex4         A   192.168.1.4

Я видел ORIGIN, используемый как $ ORIGIN. и $ ORIGIN example.com.

Какая польза от этого? Это для делегирования в том же файле зоны?

ОБНОВИТЬ:

Я попробовал, как показано ниже:

$ORIGIN lab.example.com.
$TTL 1d
@     IN      SOA     colombo root.lab.example.com.  (
                                      2003022720 ; Serial
                                      56800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      2h )    ; Min

;NS Records
@              IN      NS      ns1.lab.example.com.
@              IN      NS      ns2.lab.example.com.
mail           IN      NS      ns1.mail.lab.example.com

;A Records
ns1            IN      A       192.0.2.123
ns2            IN      A       192.0.2.124

$ORIGIN mail.lab.example.com.
ns1            IN      A       192.0.2.155

Но когда я делаю это

named-checkzone lab.example.com lab.example.zone
zone lab.example.com/IN: mail.lab.example.com/NS 'ns1.mail.lab.example.com.lab.example.com' has no address records (A or AAAA)
zone lab.example.com/IN: loaded serial 2003022720
OK

Почему я получаю ошибку как?

zone lab.example.com/IN: mail.lab.example.com/NS 'ns1.mail.lab.example.com.lab.example.com' has no address records (A or AAAA)

1 ответ1

1

Нет, $ORIGIN - это просто ярлык, который устанавливает "суффикс" по умолчанию для всех записей, которые следуют за ним. Он расширяется при загрузке файла зоны и не виден снаружи.

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

(Таким образом, использование $ORIGIN . Просто делает относительные example.com и абсолютные example.com. Эквивалентными.)

Как пример, все эти фрагменты эквивалентны:

  1. Нет $ ORIGIN вообще:

    example.com.       MX     mail.example.com.
    www.example.com.   CNAME  mail.example.com.
    ftp.example.com.   CNAME  ftp.iana.org.
    mail.example.com.  A      1.2.3.4
    a.ns.example.com.  A      2.3.4.5
    
  2. Одноместный $ ORIGIN:

    $ORIGIN example.com.
    @     MX     mail
    www   CNAME  mail
    ftp   CNAME  ftp.iana.org.
    mail  A      1.2.3.4
    a.ns  A      2.3.4.5
    
  3. Несколько $ ORIGIN:

    $ORIGIN example.com.
    @     MX     mail
    www   CNAME  mail
    ftp   CNAME  ftp.iana.org.
    mail  A      1.2.3.4
    $ORIGIN ns.example.com.
    a     A      2.3.4.5
    

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