我正在尝试修复 CentOS 服务器上仅接受来自本地主机的连接的 Bind(命名)。
我的服务器的本地 IP 是 192.168.2.2,如果我在安装了 named 的同一台服务器上运行 dig,它就可以正常工作。但在 IP 为 192.168.2.22 的备份服务器上执行 dig 则不起作用。
dig @192.168.2.2 www.mydomain.com # works locally but not on backup server
两台服务器都连接到同一个交换机,因此两者之间没有限制。直到昨天,当 USB 密钥连接到服务器并使用 yum 安装了两个模块时,这种情况才得以解决:libmcrypt-2.5.8-4.el5.centos.x86_64 和 php-mcrypt-5.1.6-15.el5.centos.1.x86_64。在 /var/log/messages 中,我看到了一些我不熟悉的日志:
Mar 21 18:34:06 centos hald: mounted /dev/sdc1 on behalf of uid 0
Mar 21 18:38:55 centos kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Mar 21 18:38:55 centos kernel: Netfilter messages via NETLINK v0.30.
Mar 21 18:38:55 centos kernel: ip_conntrack version 2.4 (8192 buckets, 65536 max) - 304 bytes per conntrack
Mar 21 18:38:55 centos kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
Mar 21 18:38:55 centos kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
Mar 21 18:43:08 centos kernel: Removing netfilter NETLINK layer.
Mar 21 18:43:08 centos kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
我启用了 Bind 中的调试日志记录,但是当我尝试从备份服务器查询它时没有连接迹象。
这是 netstat -a 输出:
tcp 0 0 192.168.2.2:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 192.168.2.2:53 0.0.0.0:*
udp 0 0 127.0.0.1:53 0.0.0.0:*
以及named.conf的一部分
options {
directory "/var/named";
query-source address * port 53;
};
controls {
inet * allow { localhost; } keys { rndckey; };
};
任何帮助,将不胜感激。
答案1
您有某个程序正在监听 192.168.2.2 的 UDP 端口 53。请检查您是否允许通过防火墙对其进行访问。
iptables -L INPUT -v -n | grep 53
或 iptables -L RH-Firewall-1 -v -n | grep 53
将产生类似这样的输出
138K 15M ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
265 13572 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
如果您允许连接。如果不允许连接,您可以使用
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
如果有效则保存配置
service iptables save
它将写入当前状态,即/etc/sysconfig/iptables
iptables 启动时加载的状态。
答案2
netfilter 是 Linux 防火墙,您可以使用“iptables -L”检查是否有任何东西被阻塞,查看您的 netstat 输出,您的绑定守护进程确实正在监听正常 ip。我建议检查防火墙。