当 Internet 调制解调器与 Internet 断开连接时,Intranet 客户端上没有 DNS 解析

当 Internet 调制解调器与 Internet 断开连接时,Intranet 客户端上没有 DNS 解析

这是一个非常奇特的问题。我家有一个SOHO,大概是这样的:

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

在哪里

  • ISP调制解调器根本不用作路由器,并配置为DMZ,具有开放的防火墙
  • 我的服务器正在执行防火墙/路由工作,同时充当所有 Intranet 的 DHCP 和 DNS(绑定)解析器。当然,它也充当所有内部网的互联网网关。
  • Intranet 包括台式机/笔记本电脑/打印机/接入点/等,其中包括一些 HTTP 服务器、MPD(音乐播放器守护进程)、VNC 服务器、树莓派等服务。

当调制解调器连接到互联网时,解析任何 Intranet 和 Internet 地址并对它们进行 ping 操作都可以正常工作。任何其他服务,例如使用 FQDN 查看我的 Intranet 中 HTTP 服务器的网页,或者使用某些 MPC(音乐播放器控件)中的 MPD 的 FQDN 来更改歌曲也都可以正常工作。对一切都一样。我说这一切基本上是为了说我思考我已正确设置 DHCP/DNS 部分。

现在,如果我没有互联网,我希望在中断期间所有 Intranet 服务都将继续可解析,但情况似乎并非如此。如果我使用 IP 地址而不是 FQDN,我仍然可以使用 Intranet 中的所有内容。我还可以运行nslookup <hostname|FQDN>来解析某个服务器的 IP 地址,我将看到tcpdump我的请求确实到达了 DNS 服务器,并且响应已正常发回。但尝试正常访问“服务”却失败了。因此,如果我尝试使用“Firefox”查看 HTTP 服务器的网页,则会失败并出现“找不到页面”错误。对于 MPD,或者当我尝试ssh其他 GNU/Linux IoT 或嵌入式计算机时也是如此。问题始终是无法找到服务器。

这对我来说非常奇怪,因为我希望所有 Intranet 服务都应该正常工作 - DNS 服务器是 DNS“主机”,并且对 Intranet 域具有权威性。

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、host、ssh、wget(cli 有效)
  • 无法访问Apache服务器(简单的HTTP网页)

从手机我:

  • 可以 nslookup
  • 无法 ping、访问 HTTP、访问 MPD 或任何其他 Intranet 服务。

在所有这些情况下,奇怪的是没有发生 DNS 查找。

EDIT2:named.root不为空:

$ 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

整个描述所需配置(数字海洋是一个相当有信誉的网站)很长并且有很多细节。基本前提是您必须dig(因为您正在使用bind)能够从本地 DNSbind服务器解析本地名称。基本查询:

$ 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)是这个

相关内容