堡垒防火墙主机 ipTables 重定向问题

堡垒防火墙主机 ipTables 重定向问题

背景信息:

使用 RH Fedora 13、Kernel 2.6.34.7-63 和 IPTables 1.4.7 构建了防火墙。防火墙是一个简单的双适配器配置,外部接口 (eth0) 面向互联网,另一个接口 (eth1) 面向小型专用网络(单个 IP 子网)。防火墙是堡垒主机,这意味着防火墙主机只包含操作系统、IPTables 以及支持主机本身运行所需的项目。防火墙不运行任何其他应用程序。

私有网络内包含一个网络服务器。

网络: 基地址:149.10.10.0/24 Web 服务器:149.10.10.25 客户端:位于子网上的各个地址。 防火墙 eth1 地址:149.10.10.1 DNS 地址:149.10.10.2

问题鉴于内部网络上的客户端可以自由浏览互联网:如果客户端选择一个特定的网站(即 www.website.com),我的目标是配置 IPTables 以将客户端重定向到内部 Web 服务器。

  • 如果客户端 Web 浏览器要浏览 www.website.com,则 iptables 会将客户端重定向到 149.10.10.25
  • 如果客户端网络浏览器要浏览任何其他网站,那么 iptables 允许客户端转发到互联网。

我尝试了几个 iptables 规则,包括:

iptables -v -t nat -A PREROUTING --in-interface eth1 --dport 80 -d www.website.com -j DNAT --to 149.10.10.25

但这似乎并无效果。

您能推荐我应使用哪条规则来实现这一壮举吗?

答案1

假设您可以使用 执行此操作iptables,但我不确定您是否可以,因为从 149.10.10.25 到客户端的返回流量具有无路由特性,因此您将重定向全部位于与之关联的 IP 地址上的网络主机www.website.com

这是不可避免的,因为 iptables 本质上是一个第 3 层工具,处理的是 ip 地址而不是 HTTP 主机名。

我认为你最好在你的内部网络上安装一个 squid 代理,配置对一个域名执行重定向,并重新配置您的客户端以使用代理。您可能还希望iptables在堡垒上使用,以阻止所有进出内部网络的 http 流量,以确保使用代理。

答案2

下面是我用于类似规则的语法,但我的流量是从外部到内部的。

-A PREROUTING -i eth0 -p tcp -m tcp -d XXXX --dport 80 -j DNAT --to-destination YYYY:80

您还需要确保已启用 ip_forward 并具有正确的转发规则以允许流量返回。

相关内容