3

2 つの DNS ドメインをマージしています。これらは内部的なものであるため、メインの DNS システムへの適合について心配する必要はありません。それらはほとんど同じです。つまり、ほとんど同じホストが含まれています。

私がやりたいことは、ドメインの 1 つのエイリアスを作成することです。

RFC によると、cname (またはおそらく A レコード) と同じ NS レコードまたは MX レコードを使用することはできないため、cname のみでゾーンを作成したところ、次のように機能しました。

zone 1 = example.com (通常のドメイン)
Try 1:
zone 2 = sample.internal (単一のエイリアスを持つドメイン)
残念ながら、windows (windows でなければなりません) は ns レコードを追加し続けます。うーん。
試行 2:
ゾーン 2 = 内部 (ドメイン)
には通常の gumpf と 1 つの cname が含まれます

sample CNAME example.com.

しかし、どちらも同じ結果になりました。

nslookup sample.internal
Server:  ns.example.com
Address:  172.16.xx.xx

Name:    example.com
Addresses:  172.16.xx.xx
      172.16.xx.xx
Aliases:  sample.internal

しかし、fred.example.com が存在するこのルックアップは機能しません。

nslookup fred.sample.internal
Server:  ns.example.com
Address:  172.16.xx.xx

*** ns.example.com can't find fred.sample.internal: Non-existent domain

エイリアス化されたドメインで再帰的なルックアップを行うことは可能ですか?

4

2 に答える 2

9

はい、できます。DNS でこれを実現するには、主に 2 つの方法があります (「BIND」構成の例を使用します)。

  1. DNAME (委任名) レコードの使用
  2. BIND 構成でのゾーン ファイルのオーバーロード

最初のオプションは、それがどこで発生し、どのように設定されたかの痕跡を残します。2 番目のオプションは実装が最も簡単ですが、慎重な計画が必要であり、ゾーンの使用に制限を課します。

DNAME メソッド

「bad.com」内のすべてのホストを「good.com」に移動させたいとしましょう。最初に「named.conf」でゾーンを設定します。

// Malicious external domain, redirected to "good.com"
zone "bad.com" in {
    type master;
    file "security/good.com";
    check-names ignore;
};

「good.com」のゾーン ファイル(リダイレクトのゾーンであることを思い出してください)は次のようになります。

; Name:         security/good.com
; Date:          2/19/2016
; Purpose:      General-use redirection to "good.com" using DNAME 

$TTL 3600
@        IN      SOA     dns.good.com. admin.dns.com. (
                         2016021900 
                         7200 
                         600 
                         2592000 
                         3600 )

         IN      NS      dns1.good.com.
         IN      NS      dns2.good.com.

         IN      DNAME   good.com.

ネーム サーバーをリロードすると、「bad.com」ゾーンの DNS クエリはすべて「good.com」に委任されます。

> nslookup www.bad.com
Server:         dns1.good.com
Address:        10.9.8.7#53

bad.com         dname = good.com.
www.bad.com     canonical name = www.good.com.
Name:   www.good.com
Address: 10.1.2.3

SOA、NS、および DNAME レコードを囲む単一の「@」を使用して、ゾーン ファイルのデフォルトの動作を意図的に使用しました。リダイレクトしたいかもしれません:

// Malicious external domain, redirected to "good.com"
zone "bad.com" in {
    type master;
    file "security/good.com";
    check-names ignore;
};

// Another malicious external domain, redirected to "good.com"
zone "worse.com" in {
    type master;
    file "security/good.com";
    check-names ignore;
};

// Yet another malicious external domain, redirected to "good.com"
zone "evil.com" in {
    type master;
    file "security/good.com";
    check-names ignore;
};

あなたはアイデアを得る...

DNAME 委任がクエリ結果にどのように表示されるかに注意してください。これが気に入らない人もいるかもしれませんが、これは 2 番目の方法で解決できます。

ゾーン ファイルのオーバーロード方法

実際には、これについてはすでに上で説明しました。私たちが行っているのは、デフォルトのレコードでゾーン ファイルを再利用することだけであり、ゾーン名を明示的に参照することはありません。この例では、「ディレクトリ」オプションを使用しますが、すべてのゾーン ファイルを「ゾーン」というフォルダーに配置し、ファイル名にゾーン名と同じ名前を付けます(「db.xxxx」は好きではありません)

$TTL 14400
@         IN      SOA     dns.good.com. admin.good.com. (
                          2016021900 ; Serial No.
                          1800       ; Refresh
                          600        ; Retry
                          604800     ; Expire
                          3600 )     ; Minimum

          IN      NS      dns1
          IN      NS      dns2
          IN      MX      10 mail
          IN      A       10.11.12.13

; A records

dns1      IN      A       10.9.8.7
dns2      IN      A       10.9.8.6
mail      IN      A       10.9.8.5
files     IN      A       10.9.8.4

; CNAME records

www       IN      CNAME   @
ftp       IN      CNAME   files

「named.conf」ファイルの要素は次のとおりです。

zone "good.com" in {
    type master;
    file "zones/good.com";
    check-names ignore;
    notify yes;
};

ここで、ドメイン「goodness.com」を本質的に「good.com」にしたいとします。「named.conf」で「good.com」ファイルを再利用するだけですが、オーバーロードされたゾーン名を指定します。

zone "goodness.com" in {
    type master;
    file "zones/good.com";
    check-names ignore;
    notify yes;
};

「goodness.com」のレコードをクエリすると、「good.com」ゾーンのレコードになります。

> nslookup files.good.com
Server:         dns1.good.com
Address:        10.9.8.7#53

Name:   files.good.com
Address: 10.9.8.4

> nslookup files.goodness.com    
Server:         dns1.good.com
Address:        10.9.8.7#53

Name:   files.goodness.com
Address: 10.9.8.4

上記のように、ゾーン ファイル内のゾーン名を明示的に参照してはならず、代わりに "@" デフォルトの参照を使用し、ゾーン内の A レコードを参照する CNAME レコードのターゲットとして完全修飾ドメイン名を使用しないでください。

この方法の欠点は、"$ORIGIN" ディレクティブの使用に十分注意する必要があり、"$GENERATE" ディレクティブの使用が非常に困難になることです。さらに、サーバーに関する限り、これらは別個のゾーンであるため、権限のあるサーバーの 2 倍のメモリを占有します。

とにかく、これは DNS を使用してあるゾーンのレコードを別のゾーンにリダイレクトする 2 つの方法を示しているはずです。

于 2016-02-20T02:59:34.443 に答える
5

レコードは、特定のCNAMEドメイン名を別のドメイン名にエイリアスします。

レコードは、特定のドメイン名のすべてのサブドメインを別のドメイン名の同じサブドメインDNAMEにエイリアスします。

残念ながら、この 2 つは共存できません。次のように言うことはできません。

foo   IN CNAME bar    ;; maps the domain
foo   IN DNAME bar    ;; maps the subdomains

ただし、IETF には、両方を同時に実行できる代替案が提案されています。

于 2012-05-16T10:42:17.417 に答える