我新安装的 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;};