AWS 上的 DNS 服务器:如何使用 iptables 将请求重定向到该服务器

AWS 上的 DNS 服务器:如何使用 iptables 将请求重定向到该服务器

我在 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

  1. 您的 iptables 命令是正确的。

  2. 使用命令检查监听的地址ss -ulnp 'sport == :8053'。应该是0.0.0.0,否则您需要额外的规则。

  3. 允许在 iptables 中输入数据包到端口8053

iptables -A INPUT -p tcp --dport 8053 -j ACCEPT
iptables -A INPUT -p upd --dport 8053 -j ACCEPT
  1. iptables-save -c使用(首选方式) 或检查规则计数器iptables -t nat -L -n -v。进行检查时计数器应递增。

  2. 使用 tcpdump 进行故障排除。

  3. 您可以使用来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 已关闭。然而,我没有意识到它确实有点关闭了,因为没有任何东西在监听它。相反,任何收到的数据包都将被重定向。

我确实尝试了这里建议的一些测试,发现一切看起来都很好。然后我在我的完整环境中设置了一个全面的测试,发现一切运行正常。

感谢所有提供帮助的人。

相关内容