之前针对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. #注解: 将低于10000端口的请求丢弃,因为按照约定,正常情况访问的目标端口>10000
  6.  
  7. scan $dport "%c%c%c%c%c" a b c d e 
  8. #注解:接受目标端口,并拆分为 a b c d e五个变量
  9.  
  10. set realport 0 
  11.  
  12. switch  [ format  %c $a]  { 
  13.  "1"   { set realport 3389 } 
  14.  "2"   { set realport 23 } 
  15.  "3"   { set realport 443 } 
  16. }        
  17. #注解:需要映射的服务器端口。变量a的含义代表不同的应用端口,1对应3389, 2对应23,3对应443,此处可根据需求扩展
  18.  
  19. set p1 [ format  %c $c ]  
  20. set p2 [ format  %c $d ]  
  21. set p3 [ format  %c $e ]  
  22.  
  23. if { $p1 == 0 } { 
  24.      if { $p2 == 0 } { 
  25.           set realip $p3 
  26.            } else { 
  27.           set realip $p2$p3 
  28.            }  
  29.  } else { 
  30.   set realip $p1$p2$p3 
  31.  } 
    • #注解:上一段获取需要映射的服务器IP。
  32. set target 192.168.[ format  %c $b].$realip 
  33. node $target  $realport 
  34. #注解:明确映射的对应服务器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.)