我的 Centos 6.4 不接受 DNS 请求

我的 Centos 6.4 不接受 DNS 请求

我新安装的 centos 6.4 系统上的 dns 服务器有问题。我浏览了教程,尝试了 iptables 的配置,但找不到解决方案。我已经安装了 bind,为我的域创建了一个配置文件,重新启动了命名服务,但当我在浏览器上访问我的域时,我得到了“无法解析域名”的信息。这是我的 iptables 配置:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-I INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

命令“iptables -vnL | grep 53”的输出:

529 39514 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:53
0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:53
0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
152 10920 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp spt:53

netstat -ntupl 命令输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State         PID/Program name
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      3429/php fpm
tcp        0      0 127.0.0.1:10025             0.0.0.0:*                   LISTEN      3414/master
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3308/mysqld
tcp        0      0 0.0.0.0:10000               0.0.0.0:*                   LISTEN      3497/perl
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      3936/named
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      3064/sshd
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      3936/named
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      3414/master
tcp        0      0 127.0.0.1:2812              0.0.0.0:*                   LISTEN      3462/monit
tcp        0      0 :::80                       :::*                        LISTEN      3605/httpd
tcp        0      0 ::1:53                      :::*                        LISTEN      3936/named
tcp        0      0 :::22                       :::*                        LISTEN      3064/sshd
tcp        0      0 ::1:953                     :::*                        LISTEN      3936/named
tcp        0      0 :::443                      :::*                        LISTEN      3605/httpd
udp        0      0 127.0.0.1:53                0.0.0.0:*                               3936/named
udp        0      0 0.0.0.0:783                 0.0.0.0:*                               2934/portreserve
udp        0      0 0.0.0.0:10000               0.0.0.0:*                               3497/perl
udp        0      0 ::1:53                      :::*                                    3936/named

我不知道如何解决这个问题。有人有什么想法或建议吗?提前谢谢。

答案1

伊恩的回答使我朝着正确的方向前进。

在我的例子中,使用 Bind 并且 named.conf 缺少以下更改:

  • 监听外部接口(可以明确定义,而不是“任何”通配符)
  • 允许来自本地网络的查询;例如allow-query { 192.168.1.0/24; };

答案2

您未在监听您的外部地址。您当前仅监听

127.0.0.1:53::1:53适用于 TCP 和 UDP 以及TCP 上的127.0.0.1:953和。::1:953

这些是 IPv4 和 IPv6 环回地址。您需要listen-on正确配置指令,例如

listen-on {any;};

相关内容