之前针对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实现:
- when CLIENT_ACCEPTED {
- set dport [TCP::local_port]
- if { $dport < 10000 } {
- drop
- }
- #注解: 将低于10000端口的请求丢弃,因为按照约定,正常情况访问的目标端口>10000
- scan $dport "%c%c%c%c%c" a b c d e
- #注解:接受目标端口,并拆分为 a b c d e五个变量
- set realport 0
- switch [ format %c $a] {
- "1" { set realport 3389 }
- "2" { set realport 23 }
- "3" { set realport 443 }
- }
- #注解:需要映射的服务器端口。变量a的含义代表不同的应用端口,1对应3389, 2对应23,3对应443,此处可根据需求扩展
- set p1 [ format %c $c ]
- set p2 [ format %c $d ]
- set p3 [ format %c $e ]
- if { $p1 == 0 } {
- if { $p2 == 0 } {
- set realip $p3
- } else {
- set realip $p2$p3
- }
- } else {
- set realip $p1$p2$p3
- }
- #注解:上一段获取需要映射的服务器IP。
#注解:明确映射的对应服务器IP和端口并根据映射关系转}
在A10设备上配置并应用该aFleX
- slb virtual-server management 1.1.1.1
- ha-group 1
- port 0 tcp
- source-nat pool 45 (注解:从安全考虑,可以允许访问的源IP地址段)
- service-group mgmt-grp (注解:映射的服务器和端口组,aFleX中的每一个node在这个组中需要定义)
- 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.)