一些背景:
已经使用RH Fedora 13,Kernel 2.6.34.7-63和IPTables 1.4.7构build了一个防火墙。 防火墙是一种简单的双适配器configuration,外部接口(eth0)面向互联网,另一个接口(eth1)面向小型专用networking(单个IP子网)。 防火墙是一个堡垒主机,意思是防火墙主机只包含操作系统IPTables,只包含支持主机本身操作的项目。 防火墙不运行任何其他应用程序。
包含在专用networking内的是一个Web服务器。
networking:基地址:149.10.10.0/24networking服务器:149.10.10.25客户端:位于子网的各个地址。 防火墙eth1地址:149.10.10.1 DNS地址:149.10.10.2
问题考虑到内部networking上的客户可以自由地上网:如果客户select特定的网站(即www.website.com),我的目标是configurationIPTables,而不是将客户端redirect到内部Web服务器。
我已经尝试了几个iptables规则,其中包括:
iptables -v -t nat -A PREROUTING –in-interface eth1 –dport 80 -d www.website.com -j DNAT – 到149.10.10.25
但是,这似乎没有效果。
你能推荐我应该用来执行这个壮举的规则吗?
假设你可以用iptables来做这件事,而且由于149.10.10.25到客户端的返回stream量没有路由的性质,我不能确定你能做什么,所以你将redirect所有与www.website.com相关的ip地址上的主机www.website.com 。
这是不可避免的,因为iptables本质上是一个第3层工具,处理ip地址而不是HTTP主机名。
我想你会更好地在你的内部networking上安装一个squid代理,configuration为一个域名执行redirect,并重新configuration你的客户端使用代理。 你也可以在堡垒上使用iptables来防止所有的httpstream量进出你的内部networking,以确保代理被使用。
以下是我用于类似规则的语法,但是我的stream量是用于内部的。
-A PREROUTING -i eth0 -p tcp -m tcp -d XXXX –dport 80 -j DNAT – 到目的地YYYY:80
您还需要确保您已启用ip_forward,并确保正确的转发规则以允许stream量返回。