web-dev-qa-db-ja.com

DNS解決の問題; SERVFAILエラーを掘る

いくつかの専用サーバーをセットアップしていますが、ネームサーバーを正しくセットアップするのに問題があります。これらの1つはLEMPサーバー(Apacheの代わりにnginxを使用するLAMP)であり、もう1つはexim/dovecot/ASSPアンチスパム(Apacheなし)を実行する電子メールサーバーとしてのみ機能します。 LEMPサーバーはCentOS5.5で、コントロールパネルはありませんが、電子メールサーバーもCentOS 5.5で、cPanel/WHMがあります。

そのため、DNSを正しく設定するのに問題がありました。私には2つのドメインがあり、それぞれがこれらのサーバーの1つを指しています。ネームサーバーはドメインレジストラに正しく登録されており、ネームサーバーのIPも正しく入力されています。レジストラのテクニカルサポートに相談したところ、すべてが自分たちの側で設定されていることを確認しました。 DNSについてあまり知らなかったので、ほとんど盲目になるまでネームサーバーとDNSをグーグルで検索し、構成をいじくりまわしました。

最終的に、LEMPサーバーのDNSが正しく機能するようになりました(cPanelなし)。この勝利に満足して、私はその構成を模倣し、電子メールサーバーでプロセスを繰り返そうとしていますが、それは起こっていません。ネームサーバーは起動および停止しますが、ドメインは解決されません。

私が試したこと
WHMでDNSを設定するための標準的な手順を実行します。すべてのDNS情報をクリアし、BINDをアンインストールしてから、すべてを再インストールし、DNSを設定するためのWHM手順を再度実行します。すべてのDNS情報をクリアし、シェルを介してBINDを設定します( LEMPサーバーからの構成ファイルとゾーンファイルをテンプレートとして使用することにより、完全にcPanelの外部)

名前付きは問題なく実行されますが、何も解決されていません。 「example.comを掘り下げる」と、SERVFAILメッセージが表示されます。 Nslookupsは情報を返しません。

これが私の設定ファイルとゾーンファイルです。

named.conf

controls {
        inet 127.0.0.1 allow { localhost; }
        keys { coretext-key; };
};
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        // Those options should be used carefully because they disable port
        // randomization
        // query-source    port 53;
        // query-source-v6 port 53;

        allow-query     { any; };
        allow-query-cache { any; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view "localhost_resolver" {
        match-clients      { 127.0.0.0/24; };
        match-destinations { localhost; };
        recursion yes;

        //zone "." IN {
        //      type hint;
        //      file "/var/named/named.ca";
        //};

        include "/etc/named.rfc1912.zones";
};
view "internal" {
/* This view will contain zones you want to serve only to "internal" clients
   that connect via your directly attached LAN interfaces - "localnets" .
*/
    match-clients        { localnets; };
    match-destinations    { localnets; };
    recursion yes;

    zone "." IN {
        type hint;
            file "/var/named/named.ca";
    };

    // include "/var/named/named.rfc1912.zones";
    // you should not serve your rfc1912 names to non-localhost clients.

    // These are your "authoritative" internal zones, and would probably
    // also be included in the "localhost_resolver" view above :
        zone "example.com" {
                type master;
                file "data/db.example.com";
        };
        zone "3.2.1.in-addr.arpa" {
                type master;
                file "data/db.1.2.3";
        };
};
view "external" {
/* This view will contain zones you want to serve only to "external" clients
 * that have addresses that are not on your directly attached LAN interface subnets:
 */
        match-clients           { any; };
        match-destinations      { any; };

        recursion no;
        // you'd probably want to deny recursion to external clients, so you don't
        // end up providing free DNS service to all takers

        allow-query-cache { none; };
        // Disable lookups for any cached data and root hints

        // all views must contain the root hints zone:
        //include "/etc/named.rfc1912.zones";

        zone "." IN {
                type hint;
                file "/var/named/named.ca";
        };
        zone "example.com" {
                type master;
                file "data/db.example.com";
        };
        zone "3.2.1.in-addr.arpa" {
                type master;
                file "data/db.1.2.3";
        };
};

include "/etc/rndc.key";

db.example.com

$TTL 1D
;
; Zone file for example.com
;
; Mandatory minimum for a working domain
;
@       IN  SOA ns1.example.com. contact.example.com. (
                2011042905 ; serial
                8H ; refresh
                2H ; retry
                4W ; expire
                1D ; default_ttl
        )

                NS      ns1.example.com.
                NS      ns2.example.com.

ns1             A       1.2.3.4
ns2             A       1.2.3.5

example.com.            A       1.2.3.4

localhost               A       127.0.0.1

www                     CNAME   example.com.
mail                    CNAME   example.com.
;

db.1.2.

$TTL 1D
$Origin 3.2.1.in-addr.arpa.

@       IN      SOA     ns1.example.com  contact.example.com.   (
                        2011042908 ;
                        8H      ;
                        2H      ;
                        4W      ;
                        1D      ;
                )

                NS      ns1.example.com.
                NS      ns2.example.com.

4               PTR     hostname.example.com.
5               PTR     hostname.example.com.
;

また、これらのサーバーは両方とも管理されています。テクニカルサポートは非​​常に敏感で、ほとんど役に立たない。何が悪いのかを絞り込むために彼らが私に質問をするのに何時間もかかり、次に彼らは次のシフトで技術者にチケットを渡します。

したがって、要約すると:

  • IPを使用するネームサーバーは、ドメインレジストラに正しく登録されています
  • namesedが構成され、実行されています...構成してはいけません
  • 何も解決しないので、正しく。

どんな助けでも素晴らしいでしょう。ファイル内のドメインとIPをジェネリックに変更しましたが、問題のドメインを知る必要がある場合はお知らせください。

ありがとう!

[〜#〜] update [〜#〜]

/etc/resolv.confに127.0.0.1がないことがわかったので、リスニングと名付けた2つのパブリックIPと一緒に追加しました。

resolv.conf

search www.example.com example.com
nameserver 127.0.0.1
nameserver 7.8.9.10   ;Was in here by default, authoritative nameserver of hosting company
nameserver 1.2.3.4    ;Public IP #1
nameserver 1.2.3.5    ;Public IP #2

これで、ホストからexample.comを掘ると、解決します。他のサーバー(同じデータセンター内)またはインターネットからDigしようとすると、タイムアウトするか、SERVFAILが発生します。

1
JustinP

サーバーが実行されていることを確認することから始めます。

netstat -an | grep ^udp | grep 53

次のような行が表示されます

udp        0      0 0.0.0.0:53                0.0.0.0:*

Namedが実行されない場合は、停止して(クリーンアップするためだけに)、開始してログファイル(/var/log/messages、/var/named/data/named.run)に書き込む内容を確認します。デーモンが正常に起動しない原因となるタイプミスがある可能性があります。

次に、named.confから可能な限り削除します。最小限の基本的な構成は、トラブルシューティングが簡単なはずです。次に、エントリを少しずつ追加して、サーバーが停止する原因となるエントリを確認します。

また、サーバーと外部のクライアントからローカルで問題を解決することも別々に試みてください。何が悪いのか見つけていただければ幸いです。

1
Paweł Brodacki

ns1.example.comの「example.com」はwww.example.comの「example.com」と同じですか?

もしそうなら、whois example.comはあなたのnamserversのIPアドレスをリストしますか?そうでない場合は、レジストラにネームサーバーのIPアドレスを使用して「グルーレコード」を設定する必要があります。これは、ns1.example.comns1.example.comのIPアドレスを尋ねることができないためです。 IPはすでにあります。

また、ファイアウォールブロックなどを設定していないことを確認するために、別の場所からDig www.example.com @1.2.3.4(1.2.3.4はns1.example.comのIPアドレス)を試して、それが機能するかどうかを確認してください。

0
DerfK