之前针对aFleX已经有详细的介绍(见这里),今天我们讲述一个真实的在用案例: 不需要一行一行的去配置NAT映射,通过A10设备aFleX的灵活功能,迅速实现使用同一个公网IP地址管理内部多台服务器的应用。

客户拓扑简易描述如下:

两个不同的项目可以连同一个服务器端口号的redis吗 两个服务器用一个ip_服务器

A10 双机冗余路由模式接入外网交换机和内网交换机之间,内网有多个网段,从192.168.1.0到192.168.x.0。服务器的网关可以指向A10负载均衡设备也可以指向内网网关(只要服务器回报流量通过A10设备即可)。

客户要求:可以方便的管理内部多个网段的服务器,并可能通过3389(windows) 22 (Linux),  443等多个端口从公网登陆;并且尽量减少占用的公网IP地址。

aFleX实现: 通过分析以及和用户讨论后,该功能可以用aFleX一劳永逸的解决问题,避免一条一条增加NAT映射带来的繁琐配置。

原理如下:

两个不同的项目可以连同一个服务器端口号的redis吗 两个服务器用一个ip_网络_02

和客户讨论后明确公网端口各数字的含义,这样可以使用同一个公网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