F5 LTM无法通过配置来控制访问流量,不过,可以通过Irule脚本来控制,但,在这里,我只是想通过后端扩充的防火墙来实现。仅是思路,供参考!
拓扑:
描述
web | ip | 192.168.80.64 |
firewall | outside | 192.168.90.64 |
inside | 192.168.80.1 | |
F5 | internat | 192.168.x.y |
externat | 192.168.80.254 | |
vs:web_80 | 192.168.x1.y1 | |
访客1 | ip | 192.168.x2.y2 |
流程
Web
网关指向Firewall inside接口IP
做80,8080两个虚拟主机
Firewall
(1)开启路由转发
echo "1" >/proc/sys/net/ipv4/ip_forward
(2)startF.sh打开DMZ,并且将出去的数据包伪装
#DMZ
iptables -t nat -A PREROUTING -p tcp -d 192.168.90.64 -j DNAT --to-destination 192.168.80.64
#PAT
#iptables -t nat -A PREROUTING -p tcp -d 192.168.90.64 --dport 8080 -j DNAT --to-destination 192.168.80.64:8080
#iptables -t nat -A PREROUTING -p tcp -d 192.168.90.64 --dport 80 -j DNAT --to-destination 192.168.80.64:80
#SNAT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.90.64
F5
POOL:default_gatway_pool
pool default_gatway_pool {
monitor all gateway_icmp
members 192.168.x.y:any {}
}
VS:net
virtual net {
snat automap
pool default_gatway_pool
destination any:any
mask 0.0.0.0
}
以上,
这样web服务器就可以伪装F5出口的self ip访问外面了。
如果我们想访问web服务器呢?
简单
POOL:
pool apache_80 {
monitor all gateway_icmp and http
members {
192.168.90.64:http {}
192.168.90.64:webcache {}
}
}
VS:web_80
virtual web_80 {
pool apache_80
destination 192.168.x1.y1:http
ip protocol tcp
profiles {
http {}
tcp {}
}
大家http://192.168.x1.y1就可以访问web了。为什么这么简单呢?因为web是处与DMZ下面嘛!
这样,我们就可以在Firewall处写ACL了。怎么玩,看你的了。
我测试的一个
iptables -A FORWARD -s 192.168.x2.y2 -j DROP
这样,我这台192.168.x2.y2就没办法访问这个web了。
本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/932568,如需转载请自行联系原作者