我正在设置几个专用服务器,但在正确设置名称服务器时遇到问题。其中一个是 LEMP 服务器(使用 nginx 代替 Apache 的 LAMP),另一个将仅用作电子邮件服务器,运行 exim/dovecot/ASSP 反垃圾邮件(无 Apache)。LEMP 服务器是 CentOS 5.5,没有控制面板,而电子邮件服务器也是 CentOS 5.5,带有 cPanel/WHM。
因此,我在正确设置 DNS 时遇到了问题。我有两个域,每个域都指向其中一个服务器。名称服务器已在域名注册商处正确注册,名称服务器 IP 也输入正确。我已与注册商的技术支持人员交谈过,他们确认他们那边已设置好一切。由于对 DNS 了解不多,我搜索了名称服务器和 DNS,直到我几乎失明,并花了几个小时来摆弄配置。
最终,我让 LEMP 服务器的 DNS 正常工作(没有 cPanel)。我对这一胜利感到高兴,我试图模仿该配置,并在电子邮件服务器上重复该过程,但就是没有发生。名称服务器启动和停止,但域名无法解析。
我尝试过的事情
通过标准程序在 WHM 中设置 DNS 清除所有 DNS 信息,卸载 BIND,然后重新安装所有这些,并再次通过 WHM 程序设置 DNS 清除所有 DNS 信息,并使用来自 LEMP 服务器的配置和区域文件作为模板通过 shell(完全在 cPanel 之外)设置 BIND
命名运行正常,但什么都没解析。当我“挖掘任何 example.com”时,我收到 SERVFAIL 消息。Nslookups 不返回任何信息。
这是我的配置和区域文件。
命名配置文件
controls {
inet 127.0.0.1 allow { localhost; }
keys { coretext-key; };
};
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// Those options should be used carefully because they disable port
// randomization
// query-source port 53;
// query-source-v6 port 53;
allow-query { any; };
allow-query-cache { any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "localhost_resolver" {
match-clients { 127.0.0.0/24; };
match-destinations { localhost; };
recursion yes;
//zone "." IN {
// type hint;
// file "/var/named/named.ca";
//};
include "/etc/named.rfc1912.zones";
};
view "internal" {
/* This view will contain zones you want to serve only to "internal" clients
that connect via your directly attached LAN interfaces - "localnets" .
*/
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;
zone "." IN {
type hint;
file "/var/named/named.ca";
};
// include "/var/named/named.rfc1912.zones";
// you should not serve your rfc1912 names to non-localhost clients.
// These are your "authoritative" internal zones, and would probably
// also be included in the "localhost_resolver" view above :
zone "example.com" {
type master;
file "data/db.example.com";
};
zone "3.2.1.in-addr.arpa" {
type master;
file "data/db.1.2.3";
};
};
view "external" {
/* This view will contain zones you want to serve only to "external" clients
* that have addresses that are not on your directly attached LAN interface subnets:
*/
match-clients { any; };
match-destinations { any; };
recursion no;
// you'd probably want to deny recursion to external clients, so you don't
// end up providing free DNS service to all takers
allow-query-cache { none; };
// Disable lookups for any cached data and root hints
// all views must contain the root hints zone:
//include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "/var/named/named.ca";
};
zone "example.com" {
type master;
file "data/db.example.com";
};
zone "3.2.1.in-addr.arpa" {
type master;
file "data/db.1.2.3";
};
};
include "/etc/rndc.key";
db.example.com
$TTL 1D
;
; Zone file for example.com
;
; Mandatory minimum for a working domain
;
@ IN SOA ns1.example.com. contact.example.com. (
2011042905 ; serial
8H ; refresh
2H ; retry
4W ; expire
1D ; default_ttl
)
NS ns1.example.com.
NS ns2.example.com.
ns1 A 1.2.3.4
ns2 A 1.2.3.5
example.com. A 1.2.3.4
localhost A 127.0.0.1
www CNAME example.com.
mail CNAME example.com.
;
数据库.1.2.3
$TTL 1D
$ORIGIN 3.2.1.in-addr.arpa.
@ IN SOA ns1.example.com contact.example.com. (
2011042908 ;
8H ;
2H ;
4W ;
1D ;
)
NS ns1.example.com.
NS ns2.example.com.
4 PTR hostname.example.com.
5 PTR hostname.example.com.
;
还要注意:这两台服务器都是托管的。技术支持非常响应,但基本上没什么用。几个小时过去了,他们问我问题,缩小了可能出现问题的范围,然后他们把票交给了下一班的技术人员,这位技术人员无视已经发生的一切,整个班次都在问上一个人问的所有问题。
总结一下:
- 名称服务器和 IP 已在域名注册商处正确注册
- named 已配置并正在运行...并且一定不能配置
- 正确,因为什么都没有解决。
任何帮助都非常好。我将文件中的域和 IP 更改为通用的,但如果您需要了解相关域,请告诉我。
谢谢!
更新
我发现 /etc/resolv.conf 中没有 127.0.0.1,因此我添加了它,以及我已经命名监听的两个公共 IP。
解析配置文件
search www.example.com example.com
nameserver 127.0.0.1
nameserver 7.8.9.10 ;Was in here by default, authoritative nameserver of hosting company
nameserver 1.2.3.4 ;Public IP #1
nameserver 1.2.3.5 ;Public IP #2
现在,当我从主机 DIG example.com 时,它会解析。如果我尝试从我的其他服务器(在同一个数据中心)或从互联网进行 DIG,它会超时或出现 SERVFAIL。
答案1
我首先要验证你的服务器是否运行:
netstat -an | grep ^udp | grep 53
它应该显示类似
udp 0 0 0.0.0.0:53 0.0.0.0:*
如果 named 未运行,则停止它(只是为了清理),然后启动并查看它向日志文件(/var/log/messages、/var/named/data/named.run)写入了什么。可能存在一些拼写错误,导致守护进程无法成功启动。
然后我会从 named.conf 中剥离尽可能多的内容。最小的基本配置应该更容易排除故障。然后我会一点一点地添加条目,看看哪个条目导致服务器出现故障。
另外,请分别尝试从服务器本地解决问题,并从外部客户端解决问题。希望您能找到问题所在。
答案2
您的“example.com”ns1.example.com
与您的中的“example.com”相同吗www.example.com
?
如果是,那么是否whois example.com
列出了您的域名服务器的 IP 地址?如果没有,您需要让您的注册商使用您的域名服务器的 IP 地址设置“粘合记录”,因为如果不知道 IP 是什么,就没有人可以询问ns1.example.com
IP 地址。ns1.example.com
此外,为了确保您没有设置某些防火墙阻止或其他东西,请dig www.example.com @1.2.3.4
从其他地方尝试(1.2.3.4 是 ns1.example.com 的 IP 地址)并查看是否有效。