我在 AWS 实例上运行自己的 DNS 服务器。我已修改安全组以接受端口 53 上的 UDP 和 TCP 连接。
但是,我的服务器在端口 8053 上运行,因此我需要以某种方式将那些前往 53 的外部请求引导到 8053。
我很确定我需要更新 iptables,但不知道该怎么做。到目前为止,最有希望的命令是
sudo iptables -t nat -A OUTPUT -o lo -p tcp --dport 53 -j REDIRECT --to-port 8053
sudo iptables -t nat -A OUTPUT -o lo -p udp --dport 53 -j REDIRECT --to-port 8053
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 53 -j REDIRECT --to-port 8053
sudo iptables -A PREROUTING -t nat -i eth0 -p udp --dport 53 -j REDIRECT --to-port 8053
结果如下:
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 redir ports 8053
2 REDIRECT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 redir ports 8053
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1 REDIRECT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 redir ports 8053
2 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 redir ports 8053
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
但是,如果我对该主机运行 nmap,我会得到以下结果:
Nmap scan report for xxx.amazonaws.com (x.x.x.x)
Host is up (0.040s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp closed domain
80/tcp open http
我知道我的 DNS 服务器正在监听 8053。出了什么问题?
答案1
您的 iptables 命令是正确的。
使用命令检查监听的地址
ss -ulnp 'sport == :8053'
。应该是0.0.0.0
,否则您需要额外的规则。允许在 iptables 中输入数据包到端口
8053
。
iptables -A INPUT -p tcp --dport 8053 -j ACCEPT
iptables -A INPUT -p upd --dport 8053 -j ACCEPT
iptables-save -c
使用(首选方式) 或检查规则计数器iptables -t nat -L -n -v
。进行检查时计数器应递增。使用 tcpdump 进行故障排除。
您可以使用来
strace
排除应用程序活动的故障。
答案2
我会首先检查流量是否到达设备 - 启动到该盒子的 SSH 会话并运行:
sudo tcpdump -i eth0 port 53
如果没有流量进来,那么我会检查你的 AWS VPC 安全组并允许入站方向通过 TCP/UDP 53 - 检查网络和 NIC 级别
如果你看到了交通情况
sudo tcpdump -i lo0 port 8053
如果没有流量,那么问题就出在你的 iptables 上,我们可以调查一下,如果你看到流量,那么问题就出在你的 DNS 服务器
答案3
从 AWS 中的客户端计算机尝试:
$ dig @your_dns_server_ip -p 8053 somehost.somedoomain
答案4
事实证明一切一直都在正常运转。我的 DNS 服务器比较特殊,测试它需要一些设置。我错误地认为一切不会正常运转,因为 nmap 报告端口 53 已关闭。然而,我没有意识到它确实有点关闭了,因为没有任何东西在监听它。相反,任何收到的数据包都将被重定向。
我确实尝试了这里建议的一些测试,发现一切看起来都很好。然后我在我的完整环境中设置了一个全面的测试,发现一切运行正常。
感谢所有提供帮助的人。