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了。

如果想了解更多,请关注我们的公众号

公众号ID:opdevos
扫码关注

gongzhouhao.jpg