我一直在运行 Ubuntu Server 16.04 的家庭服务器上设置 bind9 服务器,以便我能够通过名称而不是 IP 地址访问我的服务。
绑定服务器本身(大部分)已设置完毕,运行正常。我可以从网络设备的 IP 地址解析主机名,也可以从主机名解析 IP 地址,但服务器本身无法从其自己的 bind9 记录解析任何内容,这让我有点不知所措。
唯一的名称服务器/etc/resolv.conf
是我的路由器192.168.1.1
和8.8.8.8
。
这些是在我的 中设置的/etc/network/interfaces
。我假设我的问题是127.0.0.1
不在那里,所以服务器本身会立即查看我的路由器来解析地址,然后添加到,8.8.8.8
但当我添加127.0.0.1
到/etc/network/interfaces
时,没有其他东西被添加到,/etc/resolv.conf
所以我只剩下一个名称服务器127.0.0.1
我确实在中设置了转发器/etc/bind/named.conf.local
,它们确实可以工作,因为我仍然可以访问互联网,但是从我读过的每本指南来看,bind9 应该添加127.0.0.1
到/etc/resolv.conf
自身,这意味着它仍然由我的文件中的服务器填充,/etc/network/interfaces
以便即使绑定服务器由于某种原因失败,我的服务器仍然“在线”。
我检查/etc/default/bind9
过RESOLVCONF=yes
了
# run resolvconf?
RESOLVCONF=yes
# startup options for the server
OPTIONS="-u bind"
这是我的,/etc/network/interfaces
以防万一那里出了问题
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo wlan0
iface lo inet loopback
# The primary network interface
#auto eth0
# iface eth0 inet static
iface wlan0 inet static
address 192.168.1.62
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
wpa-ssid #############
wpa-psk ****************
dns-nameservers 192.168.1.1 8.8.8.8
gateway 192.168.1.1
# mtu 1500
这是我的/etc/bind/named.conf
acl mynetwork {
192.168.1.0/24;
};
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
key rndc-key {
algorithm hmac-md5;
secret "*****************";
};
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
};
和我的/etc/bind/named.conf.options
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 {
192.168.1.1;
208.67.222.222;
208.67.220.220;
8.8.8.8;
8.8.4.4;
};
//========================================================================
// 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; };
forward first;
};
如果您需要查看任何区域文件,请询问,但我不认为它们是问题所在,因为名称解析在其他设备上工作正常,只是在服务器本身上不行;除非我更改我的/etc/network/interfaces
文件并将其127.0.0.1
作为我唯一的 dns 服务器,/etc/resolv.conf
所以我想这是我问的冗长方式我如何添加 127.0.0.1
到我的 DNS 列表中,/etc/resolv.conf
而不是将其作为唯一条目
答案1
我自己已经找到了解决这个问题的办法(某种程度上)。
我编辑了我的/etc/resolvconf/head
文件并添加了行nameserver 127.0.0.1
并将我的/etc/network/interfaces
域名服务器部分恢复正常。现在,127.0.0.1
我的文件中的第一个条目是/etc/resolv.conf
后面列出的域名服务器/etc/network/interfaces
我仍然不知道为什么 bind 没有添加条目本身,但至少现在一切都正常了。