如何使用 IPtables 重定向网站?

如何使用 IPtables 重定向网站?

在提问之前我参考了以下链接这个问题

我正在为我的学生制作一个关于 NAT - 预路由的示例。在这里,我尝试将目标 IP 替换为我想要的 IP。例如,当有人尝试访问 www.facebook.com 时,将连接 wwww.google.com。

这是我尝试做的。

# host www.facebook.com
www.facebook.com is an alias for star.c10r.facebook.com.
star.c10r.facebook.com has address 31.13.79.65
star.c10r.facebook.com has IPv6 address 2a03:2880:f002:201:face:b00c:0:1
^C[root@shreyas joshis1]#

# host www.google.com
www.google.com has address 74.125.236.81
www.google.com has IPv6 address 2404:6800:4001:802::1014
[root@shreyas joshis1]# 

现在,这是 IP 表规则。

# iptables -t nat -I PREROUTING -p tcp --dport 80  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81
# iptables -t nat -I PREROUTING -p tcp --dport 443  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81

现在,就来参加会议吧。

# iptables-save

但是,它不起作用。我知道 DNS 解析可以根据区域等对多个 IP 进行。因为这些站点有 DNS 负载平衡器。

问题是我可以阻止这些 IP。我相信这iptables在网络层上有效。因此,HTTP 请求应该到达此层。到达此层后,它应该预先路由到另一个 IP。例如,每当 IP 目标为 时31.13.79.65,将其更改为目标 IP - 74.125.236.81

因此,在 DNS 解析之后,如果浏览器对 IP 请求任何内容31.13.79.65,网络层应将其更改为74.125.236.81。但是,它不起作用。有人能解释一下原因吗?

请记住,我不是网络专家。我已尽力把我在网络方面所掌握的知识发挥到极致。

答案1

这是你必须做的:

iptables -t nat -A OUTPUT -p tcp --dport 80  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81
iptables -t nat -A OUTPUT -p tcp --dport 443  -d 31.13.79.65 -j DNAT --to-destination 74.125.236.81

您必须使用 OUTPUT 链,因为该访问是传出流量。

此 iptables 命令假定此命令在您将要演示规则的机器上运行。应用此规则后,所有到 www.facebook.com 的流量都将重定向到 google IP 地址。

为了向学生有效地展示这一点,您还必须在文件中创建主机条目/etc/hosts,以便 www.facebook.com 始终解析为 31.13.79.65 而不是其他 IP 地址。

为了使规则永久生效,您需要发出:

/etc/init.d/iptables save
/etc/init.d/iptables reload

不是iptables-save,因为它只是打印出前面答案中提到的规则。

要查看此规则,您必须特别提及,-t nat因为该规则是在 NAT 表中创建的:

iptables -t nat -L

答案2

PREROUTING 链用于通过网络到达您已配置 iptables 的主机的数据包。但是,如果您从该主机本身进行测试,则不使用 PREROUTING 链。为了解决这种情况,您可以改用 OUTPUT 链。

此外,iptables-save 命令并没有像您想象的那样执行操作。前两个 iptables 命令直接在内核中修改活动规则。只要您运行其中一个命令,该规则就会对新连接生效。

iptables-save 命令的作用是读取内核中的规则并将其全部写入标准输出。您可以将 iptables-save 的输出重定向到文件,以便保存当前配置以供日后使用。然后,您可以使用 iptables-restore 命令将这些规则读入内核。

您提到的 IP 地址是动态的问题可能最好通过操纵 DNS 回复来解决。如果您更改 DNS 回复,则无需使用 DNAT 规则。如果您正在运行自己的解析器,您可以让它相信它对您想要重定向的区域具有权威性。

然而,对于快速黑客攻击来说,使用 iptables 重定向或更新 hosts 文件更容易。

答案3

您可以使用 PREROUTING 链将任何流量路由到您想要的 IP 和端口。

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111 

相关内容