インターネットモデムがインターネットから切断された場合、イントラネットクライアントでDNS解決ができません。

インターネットモデムがインターネットから切断された場合、イントラネットクライアントでDNS解決ができません。

これは非常に珍しい質問です。家には次のSOHOがあります。

internet->-|ISPmodem|->-|Firewall/DHCP/DNS/HTTP server|->-intranet

どこ

  • ISPモデムはルータとしてはまったく使用されず、ファイアウォールが開いているDMZで構成されています。
  • 私のサーバーはファイアウォール/ルーティング操作を実行するだけでなく、すべてのイントラネットのDHCPおよびDNS(バインディング)リゾルバーとして機能します。もちろん、すべてのイントラネットのインターネットゲートウェイとしても機能します。
  • イントラネットには、一部のHTTPサーバー、MPD(ミュージックプレーヤーデーモン)、VNCサーバー、Raspberry Piなどのサービスを含む、デスクトップ/ノートブック/プリンタ/アクセスポイントなどが含まれます。

モデムがインターネットに接続されている場合は、イントラネットとインターネットアドレスを確認してpingすると正しく機能します。 FQDNを使用してイントラネットのHTTPサーバーページを表示したり、一部のMPC(Music Player Control)でMPDのFQDNを使用して曲を変更したりするなど、他のサービスも正常に機能します。すべてに同じです。私がこのすべてを言う理由は基本的に私が考えるDHCP/DNS 部分が正しく設定されています。

今、インターネットがなければ、中断中でもすべてのイントラネットサービスを確認し続けることが期待されますが、実際にはそうではありません。 FQDNの代わりにIPアドレスを使用すると、イントラネット内のすべてを引き続き使用できます。また、サーバーのIPアドレスを確認するために実行でき、要求がDNSサーバーに到達し、応答が正常に再送信されることnslookup <hostname|FQDN>がわかります。tcpdumpしかし、「サービス」にアクセスしようとする試みは通常失敗します。したがって、「Firefox」を使用してHTTPサーバー上のWebページを表示しようとすると、「ページが見つかりません」というエラーで失敗します。 MPDの場合やssh他のGNU / Linux IoTまたは組み込みコンピュータを使用してみるときも同様です。問題は、常にサーバーが見つからないことです。

すべてのイントラネットサービスが正常に機能すると期待しているため、これは非常に奇妙です。 DNSサーバーはDNS「マスター」であり、イントラネットドメインに対する権限を持っています。

tcpdump活動を追跡して問題を解決してきたので、状況はさらに奇妙になりました。「サーバーが見つかりません」というエラーメッセージが表示された場合は、DNS要求がDNSサーバーに転送されないことを確認してください。!これは、クライアント(すべてのイントラネットコンピュータ!)が「私たちがほとんどのインターネット要求を処理できないので何も要求しようとする必要はない」と決めたのと同じです。

愚かな音が聞こえるのは分かりますが、なぜ解決できないのかは本当にわかりません!問題の範囲をDNSサーバー、その他のコンポーネント、またはアクセスポイントに絞り込むことはできません。

助けを求めてもいいですか?named.conf出発点としてここに添付しました。たぶん、いくつかの重要なオプションが実際に欠けている可能性があります。追加情報が結論を導くのに役立つと思われる場合は、お気軽にお問い合わせください。

$ cat /etc/named.conf

include "/etc/rndc.key";

acl skails_dns {
        192.168.12.122/32;
        };

acl outbound_subnet { 192.168.321.0/24; }; //this is the modem subnet side
acl skails_subnet { 192.168.12.0/24; };    //this is the intranet side
acl local_host { 127.0.0.1/32; };
acl local_nets {
    local_host;
    skails_subnet;
    };
acl other_subnets { outbound_subnet; };
acl trusted_subnets {
    local_nets;
    skails_dns;
    };
acl all_my_nets {
    trusted_subnets;
    other_subnets;
    };

options {
    directory "/var/named";
    /*
     * If there is a firewall between you and name servers you want
     * to talk to, you might need to un-comment the query-source
     * directive below.  Previous versions of BIND always asked
     * questions using port 53, but BIND 8.1 uses an unprivileged
     * port by default.
     */
    // query-source address * port 53;
    forwarders {
        192.168.321.72;     //modem
        .....               //some other servers (openDNS, google, others)
        };
//  forward first;

    allow-recursion { trusted_subnets; }; //for whom will bind go the extra mile to find the final address
    listen-on { trusted_subnets; }; //ifs on which bind listens for queries
    allow-transfer { trusted_subnets; };
    allow-query { trusted_subnets; };
};



controls {
    inet 127.0.0.1 port 953 allow { local_host; } keys { rndc-key; };
};

// 
// a caching only nameserver config
// 
zone "." IN {
    type hint;
    file "caching-example/named.root";
};

zone "localhost" IN {
    type master;
    file "caching-example/localhost.zone";
    allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "caching-example/named.local";
    allow-update { none; };
};
zone "skails.home" {
    type master;
    file "/var/named/skails.home.hosts";
    notify yes;
    allow-update { key rndc-key; };
};
zone "12.168.192.in-addr.arpa" {
    type master;
    file "/var/named/192.168.12.rev";
    notify yes;
    allow-update { key rndc-key; };
};

編集:提案したように私もこれを試しましたが、host <intranet pc name|FQDN> <ip address of server>これも期待どおりに機能します。だからランダムなイントラネットコンピュータで私は:

  • cliで正しくping、nslookup、ホスト、ssh、wgetを実行できます(cliは有効です)。
  • Apacheサーバーにアクセスできません(簡単なHTTP Webページ)。

私は電話で:

  • nslookup可能
  • ping、HTTPアクセス、MPDアクセス、またはその他のイントラネットサービスにアクセスできません。

これらすべてのケースで奇妙なことに、DNSルックアップは発生しません。

EDIT2:名前付きルートが空ではありません。

$ cat /var/named/caching-example/named.root | egrep -v "(;)"
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     199.9.14.201
B.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:200::b
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
C.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2::c
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     199.7.91.13
D.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2d::d
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
E.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:a8::e
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
F.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:2f::f
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
G.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:12::d0d
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     198.97.190.53
H.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:1::53
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
I.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fe::53
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
J.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:c27::2:30
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
K.ROOT-SERVERS.NET.      3600000      AAAA  2001:7fd::1
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
L.ROOT-SERVERS.NET.      3600000      AAAA  2001:500:9f::42
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
M.ROOT-SERVERS.NET.      3600000      AAAA  2001:dc3::35

ベストアンサー1

完全な説明必須構成(Digital Oceanは評判の良いウェブサイトです。)長くて詳細がたくさんあります。デフォルトの前提は、dig(を使用しているため)bindローカルDNSサーバーでbindローカル名を解決できる必要があることです。基本クエリ:

$ dig @192.168.12.122 skails.home.      # assuming your server
                                        # is at 192.168.12.122

bindサーバーはインターネットがあるかどうかを正しく確認する必要があります。

DNSサーバーが受信した回答をキャッシュできることを理解してください。特別な否定的な答え。 DNSサーバーが解決しようとした場合(ドット)住所または家。アドレスを指定して否定的な回答を受け取ると、他の問題は解決されません(サーバー自体がこれらの問題を回避する方法を知らない限り)。これがサーバーを次のように構成する必要がある理由です。独立仕える人。上記の設定リンク。

それだけ理解してください一つ指す()はmini-DNS(またはavahiなど)で接続できます。簡単に言うと:ローカルDNSアドレスしてはいけないはい(ローカルではなく、例ではありません)。合理的な説明をするこの紙(これはポリシーではなくドラフトですが、問題についての健全な全体的な見解を提供します)。

これ現在、BCP(Best Current Practice)は次のとおりです。

おすすめ記事