使用 iptables 将端口 53 上的流量从 127.0.0.1 重定向到 127.0.0.1 至端口 5300

使用 iptables 将端口 53 上的流量从 127.0.0.1 重定向到 127.0.0.1 至端口 5300

我在端口 5300 上运行本地 DNS 服务器来开发软件。我需要我的机器使用该 DNS,但我无法告诉 /etc/resolv.conf 检查其他端口。我在 Google 上搜索了一下,但没有找到解决方案。

我在 /etc/resolv.conf 上将 127.0.0.1 设置为名称服务器。这是我的整个 /etc/resolv.conf:

nameserver 127.0.0.1

您能告诉我如何将端口 53 上的出站流量重定向到另一个端口吗?

我尝试了以下操作,但没有效果:

iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to 127.0.0.1:5300 iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 127.0.0.1:5300

iptables -t nat -L -v -n以下是(带有建议规则)的输出:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53 redir ports 5300 
    0     0 REDIRECT   udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:53 redir ports 5300 

Chain POSTROUTING (policy ACCEPT 302 packets, 19213 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 302 packets, 19213 bytes)
 pkts bytes target     prot opt in     out     source               destination 

答案1

在 Andres 指出我需要一些其他的本地数据包规则后,我通过谷歌搜索找到了解决方案。

本地生成的数据包忽略 nat 表的 PREROUTING 链,同时读取 OUTPUT 链。使用下一条规则,我解决了我的问题:

iptables -t nat -A OUTPUT -p tcp --dport domain -j DNAT --to-destination 127.0.0.1:5300
iptables -t nat -A OUTPUT -p udp --dport domain -j DNAT --to-destination 127.0.0.1:5300

有了这些规则,我甚至不需要更改我的 /etc/resolv.conf。

答案2

请尝试以下操作:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j REDIRECT --to-port 5300

相关内容