BIND 服务器无法解析 LAN 上的名称

BIND 服务器无法解析 LAN 上的名称

我正在尝试学习 BIND9。我已建立了一个家庭实验室,其中主台式机运行绑定服务器、笔记本电脑和在桥接连接上运行 apache 的 virtualbox ubuntu server 16.04 vm。

  • 我可以使用 IP 地址从每台机器 ping 所有机器。
  • 我可以从每台机器 ssh 到所有机器。
  • 我甚至无法通过 ping 来解析桌面上的名称服务器,也无法解析任何机器上的任何机器。
  • 为了简化故障排除,任何机器上都没有安装防火墙。
  • 我的所有机器与广域网的连接均正常运行。
  • 另外,我没有运行 DNS 缓存服务器
  • 两者都不命名检查区或者命名检查配置报告配置中的错误

编辑:当我使用主机并将桌面强制为 DNS 服务器(主机 nlab.local 192.168.1.2)时,桌面和虚拟机上的一切都按预期运行。当我使用主机而不指定 DNS 服务器时,此操作会失败。

1/2 解决方案:我编辑了解析器的头文件(/etc/resolvconf/resolvconf.d/head)并运行sudo resolvconf-u这样我的本地主机就会先于其他主机解析。但是,这是一个潜在的问题,因为这将导致所有其他主机必须将其解析器指向服务器才能使其工作,并且可能会减慢它们的速度或破坏后续解析。毕竟,解析器从未出现过故障,以至于无法到达我的本地主机。它只是 ping 超时,而其他工具(dig、host)甚至懒得尝试。所以,这有点像半解决方案,这就是为什么我还没有将其标记为已解决。此外,interfaces 文件中的 dns 设置不会强制解析,这很奇怪。我想知道,如果机器只是转到 resolv.conf 查找名称服务器,为什么静态设置中会存在这样的一行。

在桌面上绑定配置文件:

命名配置文件

include "/etc/bind/named.conf.options"; 
include "/etc/bind/named.conf.local"; 
include "/etc/bind/named.conf.default-zones";

logging {   
    channel query.log {
        file "/var/log/query.log";  severity debug 3;   
    };  
    category queries { query.log; }; 
};

命名的.conf.本地

zone "nlab.local" {
         type master;
         file "/etc/bind/db.nlab.local";
    };

zone "1.168.192.in-addr.arpa" {
        type master;
        notify no;
        file "/etc/bind/db.192";
};

命名的.conf.选项

options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable 
    // nameservers, you probably want to use them as forwarders.  
    // Uncomment the following block, and insert the addresses replacing 
    // the all-0's placeholder.

    // forwarders {
    //  0.0.0.0;
    // };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    allow-query { any; };

};

数据库.nlab.本地

;
; BIND data file for nlab.local
;
$TTL    604800
@   IN  SOA ns.nlab.local. ike.nlab.local. (
                 11     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  ns.nlab.local.
@   IN  A   192.168.1.2
@   IN  AAAA    ::1
ns  IN  A   192.168.1.2
ns1 IN  A   192.168.1.12
nc1 IN  A   192.168.1.9
nightfall IN    CNAME   ns
freefall  IN    CNAME   nc1

分贝.192

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.nlab.local. root.nlab.local. (
                              5         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
2      IN      PTR     ns.nlab.local.

; also list other computers
12     IN      PTR     ns1.nlab.local.
9      IN      PTR     nc1.nlab.local.

我的桌面 IP 是静态的,通过网络管理器配置,因为手动修改 /etc/network/interfaces 会阻止我的 networking.service 启动。也许这是一个线索,但我不知道如何解读它。但是,我能够在虚拟机中的接口文件上设置静态 ip,该虚拟机最初运行绑定服务器(现已禁用),虽然我能够解析该机器上的地址,但它仍然没有向具有相同配置的其他机器广播。

IP:192.168.1.2

网关:192.168.1.1

DNS:127.0.0.1,8.8.8.8,8.8.4.4

诊断:在桌面上

netstat -naptu | grep 53

tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      9324/dnsmasq    
tcp        0      0 192.168.1.2:53          0.0.0.0:*               LISTEN      1540/named      
tcp        0      0 172.17.0.1:53           0.0.0.0:*               LISTEN      1540/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1540/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1531/sshd       
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1540/named      
tcp        0      0 192.168.1.2:51444       34.211.99.53:443        TIME_WAIT   -               
tcp        0      0 192.168.1.2:44613       192.52.178.30:53        TIME_WAIT   -               
tcp       32      0 192.168.1.2:54530       162.125.5.3:443         CLOSE_WAIT  2976/dropbox    
tcp        0      0 192.168.1.2:41171       192.12.94.30:53         TIME_WAIT   -               
tcp        1      0 192.168.1.2:53664       54.236.121.227:443      CLOSE_WAIT  2976/dropbox    
tcp6       0      0 :::22                   :::*                    LISTEN      1531/sshd       
udp        0      0 127.0.0.1:60178         127.0.0.1:53            ESTABLISHED 2372/Plex DLNA Serv
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           1285/avahi-daemon: 
udp        0      0 127.0.0.1:46562         127.0.0.1:53            ESTABLISHED 2372/Plex DLNA Serv
udp        0      0 127.0.0.1:38551         127.0.0.1:53            ESTABLISHED 3715/plugin_host
udp        0      0 127.0.1.1:53            0.0.0.0:*                           9324/dnsmasq    
udp        0      0 192.168.1.2:53          0.0.0.0:*                           1540/named      
udp        0      0 172.17.0.1:53           0.0.0.0:*                           1540/named      
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1540/named      
udp6       0      0 :::5353                 :::*                                1285/avahi-daemon: 

主持人我想是可行的:

$ host nlab.local
nlab.local has address 192.168.1.2

$ host ns1.nlab.local
ns1.nlab.local has address 192.168.1.12

强制服务器

$ host nlab.local 192.168.1.2
Using domain server:
Name: 192.168.1.2
Address: 192.168.1.2#53
Aliases: 

nlab.local has address 192.168.1.2
nlab.local has IPv6 address ::1

失败:

$ ping nlab.local
ping: unknown host nlab.local

$ ping ns1.nlab.local
ping: unknown host ns1.nlab.local

故障需要几秒钟才能解决。

给出了这样的回应:

$ dig nlab.local

; <<>> DiG 9.10.3-P4-Ubuntu <<>> nlab.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61277
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nlab.local.            IN  A

;; ANSWER SECTION:
nlab.local.     604800  IN  A   192.168.1.2

;; AUTHORITY SECTION:
nlab.local.     604800  IN  NS  ns.nlab.local.

;; ADDITIONAL SECTION:
ns.nlab.local.      604800  IN  A   192.168.1.2

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 03 12:50:55 EDT 2018
;; MSG SIZE  rcvd: 88

Ubuntu 服务器虚拟机:

$ dig nlab.local

; <<>> DiG 9.10.3-P4-Ubuntu <<>> nlab.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 24440
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;nlab.local.            IN  A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 03 12:59:11 EDT 2018
;; MSG SIZE  rcvd: 28

这是虚拟机的 /etc/network/interfaces 文件:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.1.12
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.2 8.8.8.8 75.75.75.75

日志记录正在运行,服务器正在接收来自桌面应用程序的查询。我没有看到来自虚拟机的任何查询。

在此先感谢您的帮助。

相关内容