之前针对aFleX已经有详细的介绍(见这里),今天我们讲述一个真实的在用案例: 不需要一行一行的去配置NAT映射,通过A10设备aFleX的灵活功能,迅速实现使用同一个公网IP地址管理内部多台服务器的应用。
客户拓扑简易描述如下:
A10 双机冗余路由模式接入外网交换机和内网交换机之间,内网有多个网段,从192.168.1.0到192.168.x.0。服务器的网关可以指向A10负载均衡设备也可以指向内网网关(只要服务器回报流量通过A10设备即可)。
客户要求:可以方便的管理内部多个网段的服务器,并可能通过3389(windows) 22 (Linux), 443等多个端口从公网登陆;并且尽量减少占用的公网IP地址。
aFleX实现: 通过分析以及和用户讨论后,该功能可以用aFleX一劳永逸的解决问题,避免一条一条增加NAT映射带来的繁琐配置。
原理如下:
和客户讨论后明确公网端口各数字的含义,这样可以使用同一个公网IP的不同端口映射到内部不同服务器的不同应用。
aFleX实现:
1. when CLIENT_ACCEPTED {
2. set dport [TCP::local_port]
3. if { $dport < 10000
4. drop
5. }
6. #注解: 将低于10000端口的请求丢弃,因为按照约定,正常情况访问的目标端口>10000
7.
8. scan $dport "%c%c%c%c%c" a b c d e
9. #注解:接受目标端口,并拆分为 a b c d e五个变量
10.
11. set realport 0
12.
13. switch [ format %c $a] {
14. "1" { set realport 3389 }
15. "2" { set realport 23 }
16. "3" { set realport 443 }
17. }
18. #注解:需要映射的服务器端口。变量a的含义代表不同的应用端口,1对应3389, 2对应23,3对应443,此处可根据需求扩展
19.
20. set p1 [ format %c $c ]
21. set p2 [ format %c $d ]
22. set p3 [ format %c $e ]
23.
24. if { $p1
25. p2
26. set realip $p3
27. } else {
28. set realip $p2$p3
29. }
30. } else {
31. set realip $p1$p2$p3
- #注解:上一段获取需要映射的服务器IP。
set target 192.168.[ format %c $b].$realip
node $target $realport
#注解:明确映射的对应服务器IP和端口并根据映射关系转
}
在A10设备上配置并应用该aFleX
1. slb virtual-server management 1.1.1.1
2. ha-group 1
3. port 0 tcp
4. source-nat pool 45 (注解:从安全考虑,可以允许访问的源IP地址段)
5. service-group mgmt-grp (注解:映射的服务器和端口组,aFleX中的每一个node在这个组中需要定义)
6. aflex manage (注解:启用aFleX)
配置完毕后,就可以实现用户访问一个公网IP(例如1.1.1.1)的不同端口映射到不同后台服务器的不用应用,例如
11111对应192.168.1.111的3389端口
23025对应192.168.3.25的23端口
39006对应192.168.9.6的443端口
以上为aFleX的一个典型应用,A10的aFleX是一个很强大的工具,在此类集中管理或者其他具体应用中都可以考虑部署实施,可以提高整个应用的灵活性,满足客户特殊要求的复杂性等等需求。
(J.L.)
转载于:https://blog.51cto.com/virtualadc/839464