在梳理以前,先说明一下,弹性IP是用来让外网访问内网的,内网访问外网是不需要弹性IP的。因此弹性IP一定是一个外部网络,这里的外部网络可以使互联网地址,也可以是一个和企业内网相对的地址,总之就是不需要在企业核心交换机上提现的一个网段,因此,弹性IP网段是不需要在HCSD LLD中规划的,而是当HCS完成后,单独在Service OM上以外部网络形式创建的,并在运营面分配给对应的VDC的。
想一下,在非云的环境中,我们是如何实现外部网络访问内部网络的?一般会在边界防火墙上做NAT,将互联网地址的一个端口,映射成一个内网地址业务端口,当防火墙上收到访问互联网地址的请求时,使用NAT规则将其转发给内网的地址,因此在防火墙上一定有一条目的地址是互联网地址,下一条是内网地址的路由。
在HCS当中,也是一样的,同样需要做NAT,不过不再是在防火墙上,而是在网络节点上的软NAT上,因此在LLD表中,需要关注host_ip_mapping这个参数,它就是用来做软NAT这个操作的服务器,我们叫它NAT-Server,一般是要规划两个。换句话说,地址转换这个事情,现在由NAT-Server来执行,弹性IP如果要被转换成内部地址,第一件事就是要找到这两个地址,因此需要在核心交换机上有弹性IP网段到host_ip_mapping的路由,并且由于有两台NAT-Server,所以会存在两条等价路由,分别指向两台NAT-Server。
NAT-Server收到请求后,根据具体的弹性IP地址,根据NAT规则,将其转换成对应的ECS、FIP或者ELB的地址,这里你可能会问,NAT-Server的规则哪里来的?当我们在页面上进行绑定的时候,NAT-Server就会形成对应的规则。
这就完了吗? NO NO NO,因为在核心交换机上,并没有ECS所获取的IP地址的网段和NAT-Server所用网段之间的路由,那么,就算到了NAT-Server,它依然找不到ECS的IP地址,网络还是不通的。(测试方法:将cascaded_external_relay_network对应的网段网关手动shut掉,EIP就不通了)
这时候就用到了内大网,内大网可以打通NAT-Server到ECS之间的网络,只是这些处理都是内部进行的,我们看不到,同时内大网也是需要配在核心交换机上的,这样内大网和NAT-Server就通了,有一点需要注意,内大网和NAT-Server地址通,并不是依赖全部host_ip_mapping,而是使用OUT_fip_vlan网段测试方法:将out_fip_vlan对应的网段网关手动shut掉,EIP就不通了),出方向的流量应该是:
EIP------> (host_ip_mapping)NAT-Server(OUT_fip_vlan)--------->内大网---------->ECS
在LLD表中,还有一个参数——vtep_ip_range,该网段并没有参与本次的数据转发。
以上是EIP入方向的流量走向。
出方向呢?我们在非云的环境中,也是在防火墙上做了一次NAT,而且NAT规则很简单,把所有内网地址转换成了NAT地址池了的地址,然后加一条默认路由,指向NAT地址池中地址的网关就出去了。
在HCS当中,同样也是一样的,出的时候就不需要软NAT了,只要ECS的IP能访问到弹性IP网段的地址就可以出去了,可以直接通过内大网,然后走核心交换的路由就OK了,因此,在官方的最佳实践及集成设计指导书中,流量都没有走软NAT。
出方向的流量走向没有经过验证,只是通过tracert观察,具体如下:
入方向路由:
[6.5-S5700]tracert 10.0.0.99
traceroute to 10.0.0.99(10.0.0.99), max hops: 30 ,packet length: 40,press CTRL_C to break
1 192.168.2.254 13 ms 2 ms 2 ms
2 192.168.117.254 8 ms 3 ms 4 ms
3 10.0.0.99 1 ms 2 ms 2 ms
其中192.168.117.254为OUT_fip_vlan网段的网关,说明其经过了NAT-Server
出方向路由:
其中10.64.0.1为内大网地址网关,并没有进过OUT_fip_vlan,因此可以初步判断,出的时候并不需要经过NAT-Server,而是直接由内大网转向了外网。