将出站 HTTP 重定向到端口 53 iptables

将出站 HTTP 重定向到端口 53 iptables

我是 iptables 新手,想将路由器上的所有出站 HTTP 流量从端口 80 重新路由到端口 53。可以吗?

在此先感谢您的帮助。

埃里克

*编辑

我跑了

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

这产生了

iptables v1.4.6: unknown option `--to-ports'
Try `iptables -h' or 'iptables --help' for more information. 

然后我跑了

opkg install iptables-mod-nat-extra

这产生了

opkg_install_cmd: Cannot install package iptables-mod-nat-extra

谢谢您的帮助。

埃里克

答案1

从你的问题来看,我们不清楚你想做什么(或者甚至不知道你想做什么),所以这里有几点建议:

  • -t NAT-- 带你进入 NAT 表,这就是你想要做的事情
  • -A 后路由- 该POSTROUTING表用于路由决策之后。通常意味着流量正在流出。您可以在此处更改源地址,但不能更改目标地址。
  • -A 预先路由- 该PREROUTING表用于在做出路由决定之前。如果您想更改数据包的去向,请在此处进行更改。听起来这就是您想要的。
  • -A 输出- 该OUTPUT表用于本地进程发出的(或以其他方式修改的)出站数据包,特别是不用于您的服务器以路由器/交换机/网关角色处理的数据包。这是一个方便的地方,可以为您的服务器自行生成的流量设置规则。
  • -j 重定向-没有达到你想象的效果。可能不是你想要的。
  • -j 源地址转换- 源网络地址转换。这用于更改源地址或源端口。如果您想更改数据包的来源,请使用此目标
  • -j DNAT- 目标网络地址转换。这用于更改目标地址或端口。如果您想更改数据包的去向,请使用此目标。

因此,要修改通过路由器发往端口 80 的流量并将该目的地更改为端口 53,您可以使用以下命令:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to :53

这将完全满足您的要求。具体来说,它将使所有网站无法访问。

答案2

因为你似乎在问源自路由器本身的流量,您不应该使用 PREROUTING 链,而应该使用 OUTPUT 链。此外,如果流量源自路由器本身,则更好的选择是更改启动连接的进程的配置,以简单地使用不同的目标端口。

如果出于某种原因,这种方法对你不起作用,你可以使用 DNAT 目标,例如

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to :53

但请注意,由于目标服务器不是期望在端口 53 上收到 HTTP 请求,除非您在强制门户后面的某个点恢复转换,否则您可能不会得到任何有意义的响应。您可以考虑通过隧道连接到受限制网络之外受您控制的主机(例如使用 OpenVPN),然后只需通过隧道路由请求即可。

答案3

这会起作用:

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

进一步说明/参考:http://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/

相关内容