我有一个在 Amazon Linux 上运行的 EC2 微型实例。我安装了 bind 并为某个域设置了一个条目,如果您在该服务器上输入以下内容,它就可以正常工作:
nslookup the-domain.com 本地主机
但我无法通过输入从外部服务器访问它
nslookup the-domain.com 10-10-10-10.compute-1.amazonaws.com
在我的安全组中,我将其设置为允许端口 53 上的传入流量(TCP 和 UDP),但仍然没有任何结果。有人知道我遗漏了什么吗?
答案1
检查 AWS 安全组
登录aws管理控制台,点击EC2选项卡,点击左侧导航部分中的安全组。
安全组是您管理实例的虚拟防火墙的地方。与实例上运行的操作系统无关。
以前,您只能更改未分配的安全组。现在,您可以对分配给活动实例的安全组进行更改,并且更改将立即生效。
检查绑定配置
默认情况下,bind 仅监听 127.0.0.1。请确保您正在监听所有接口。编辑 /etc/named.conf,将相应的行更改为:
listen-on port 53 { any; };
然后重新启动服务。
service named restart
确认命名正在监听“一切”,像这样使用 netstat。
[root@...]# netstat -nlp | grep named
tcp 0 0 10.1.7.152:53 0.0.0.0:* LISTEN 8664/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 8664/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 8664/named
tcp 0 0 ::1:953 :::* LISTEN 8664/named
udp 0 0 10.1.7.152:53 0.0.0.0:* 8664/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 8664/named
查找网络可访问接口上的命名监听(在本例中为 10.1.7.152)。
答案2
检查可能阻塞端口的防火墙。
答案3
检查是否有防火墙规则阻止了您的 DNS 服务器。
sudo iptables -L -v
如果你得到任何输出检查看看你是否允许以这种格式在端口 53 上输入它将是这样的
102 11468 ACCEPT udp -- any any anywhere anywhere udp dpt:domain
20 1013 ACCEPT tcp -- any any anywhere anywhere tcp dpt:domain
如果你需要启用端口 53,那么你可以这样做
sudo /sbin/iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT