我在 Linux 中配置 DNS 时遇到问题。我使用 isc-dhcp-server 作为 DHCP 服务器,使用 bind9 作为 DNS 服务器,但它返回错误。
这是我的设置
Internet <--enp0s3 interface-->router<--enp0s8 interface-->Ubuntu server
路由器既用作 DHCP 服务器,又用作 DNS 服务器,Ubuntu 服务器供内部使用。enp0s3 接口可访问互联网,enp0s8 用于内部网络。
路由器上的 enp0s8 接口的地址为 192.168.1.1,Ubuntu Server 的地址为 192.168.1.2。DHCP 服务器工作正常,机器可以互相 ping 通。
问题出在 DNS 服务器,我给了 Ubuntu 服务器名称服务器,当我运行此命令 ping 服务器时,它返回此错误:
$ ping server
ping: server: Temporary failure in name resolution
当我检查 bind9.service 状态时,它给了我以下信息:
$ sudo systemctl status bind9.service
● named.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-02-20 11:10:08 UTC; 6min ago
Docs: man:named(8)
Process: 2759 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 2760 (named)
Tasks: 5 (limit: 2221)
Memory: 5.6M
CPU: 141ms
CGroup: /system.slice/named.service
└─2760 /usr/sbin/named -u bind
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:500:a8::e#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:500:12::d0d#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:500:9f::42#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2801:1b8:10::b#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:500:2f::f#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:500:2::c#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:7fe::53#53
Feb 20 11:10:08 fox-router named[2760]: network unreachable resolving './NS/IN': 2001:503:ba3e::2:30#53
Feb 20 11:10:08 fox-router named[2760]: managed-keys-zone: Key 20326 for zone . is now trusted (acceptance timer complete)
Feb 20 11:10:08 fox-router named[2760]: resolver priming query complete: success
These are the commands that I had run when configuring the DHCP server:
路由器
Ubuntu 服务器作为路由器
为接口分配 IP 地址
sudo vim /etc/netplan/00-installey-config.yaml
__________________________________
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcpd4: true
addresses: [192.168.1.1/24]
version: 2
__________________________________
sudo netplan apply
DHCP 服务器
sudo apt install isc-dhcp-server
sudo vim /etc/dhcp/dhcpd.conf
__________________________________
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.2 192.168.1.10;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
host Server{
hardware ethernet: <MAC address>
fixed-address: <IP Address>
}
为 DHCP 服务分配接口
sudo vim /etc/default/isc-dhcp-server
__________________________________
INTERFACESv4="enp0s8"
重启/启动 DHCP 服务器
sudo systemctl start isc-dhcp-server //START SERVICE
sudo systemctl status isc-dhcp-server //CHECK STATUS
sudo systemctl restart isc-dhcp-server //RESTART SERVICE
这些是我为 DNS 服务器运行的命令:
$ sudo apt-get install bind9
编辑 /etc/bind/named.conf.options 文件。
forwarders {
8.8.8.8;
8.8.4.4;
};
在 /etc/bind/named.conf.local 中配置区域
zone "foxnetwork.net" {
type master;
file "/etc/bind/db.foxnetwork.net";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.168";
};
并创建区域:/etc/bind/db.foxnetwork.net
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.foxnetwork.net. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.foxnetwork.net.
foxnetwork.net. IN MX 10 mail.foxnetwork.net.
ns IN A 192.168.1.1
web IN A 192.168.1.2
; The reverse zone
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.foxnetwork.net root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.foxnetwork.net.
2 IN PTR web.foxnetwork.net.
然后我重启了 bind9 和 DHCP 服务器。但我仍然无法用 ping ns ping 路由器,也无法用 ping server ping 服务器
答案1
您的 DHCP 服务器分发的是两个公共 DNS 服务器的地址(可能是来自 Google?),而不是您自己的 DNS 服务器。由于无法通过常规方式访问该服务器(检查等/resolv.conf在您的 Ubuntu 服务器上查看其中的内容),您将无法访问在您的私有 DNS 服务器中注册的任何内容。
考虑到你打算做什么/etc/resolv.conf在您的 Ubuntu 服务器上必须包含如下一行:
nameserver 192.168.1.1
,但是,它将包含完全不同的东西,即nameserver 8.8.8.8 8.8.4.4
(即您的 DHCP 服务器正在分发的服务器)。
您的 DHCP 服务器配置必须如下所示,以便能够访问您的 DNS 服务器:
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.2 192.168.1.10;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
}
host Server{
hardware ethernet: <MAC address>
fixed-address: <IP Address>
}
然后重新启动 DHCP 服务器并在您的服务器上执行ifdown <interface> ; ifup <interface>
(或与您的机器相关的任何操作)并检查/etc/resolv.conf在您的 Ubuntu 服务器上再次执行此操作。
相关行现在应显示为nameserver 192.168.1.1
,并且nslookup server
现在应解析该名称。
附注:DHCP 仅应用于没有固定地址连接到您的网络的客户端。如果有机器获得固定地址,最好建议您在机器本身上分配这些地址(选择不在 DHCP 可分配地址池中的地址),然后在必要时更新 DNS 服务器的配置。