使用 iptables 将所有流量重定向到本地 Web 服务器

使用 iptables 将所有流量重定向到本地 Web 服务器

你好,

我正在尝试使用 iptables 将我的 wifi 路由器上的所有流量重定向到本地网络服务器。我不确定我是否正确使用了命令,而且我想从规则中排除路由器 IP(172.16.0.1),以防止自己无法访问路由器。

我目前想到的办法是:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80

我还没有测试过上述内容,因为我担心这会导致我无法再次访问路由器,哈哈。如何排除 172.16.0.1 被重定向到 172.16.0.2?

设置:172.16.0.2 是网络服务器的 IP,172.16.0.1 是我的路由器(dd-wrt),没有互联网连接。

我想要实现的目标的示例:

  • 用户连接到 wifi 热点,尝试访问 www.siteA.com,被重定向到 172.16.0.2 (/index.html)
  • 用户连接到 wifi 热点,尝试访问 www.siteB.com,被重定向到 172.16.0.2 (/index.html)
  • 用户尝试访问 172.16.0.1,但无任何指示:)

祝您度过愉快的一天并感谢!

答案1

由于 iptables 规则是按顺序处理的,因此第一条规则应该是允许所有流向路由器的流量。

iptables -t nat -I PREROUTING -i br0 -p tcp -d 172.16.0.1--dport 80 -j ACCEPT 

接下来添加规则来重定向流量。

iptables -t nat -A PREROUTING -d !172.16.0.1 -i br0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2:80

我不认为这对 https 有效,因为它没有使用 ssl 连接到服务器。

相关内容