本节我们将介绍Site to Site VPN的一些注意事项,包括NAT-T
, Route Propagation
, Transitive Routing
等
上一节在On-premise侧的CGW,直接将Public IP暴露在了公网:
如果想对外隐藏这个Public IP,可以使用NAT Traversal(NAT-T)
。假设您在On-premise 网络上拥有私有 IP 空间,这些空间都通过单个路由器或防火墙连接到互联网。现在,可以使用NAT将 CGW 从私有 IP 映射到公共 IP,并使用 NAT-Traversal
将CGW连接到VGW。NAT-T 创建源自 NAT 设备后面的本地 IP 连接,并使用已转换的地址连接到 VPC。此映射过程在建立 VPN 时进行:
使用的时候,需要在防火墙(网络出口)中打开 UDP 端口 4500 才能使用 NAT-T。
在上一节创建VPN Connection时,专门选择了静态路由:
在静态路由情况下,必须手动配置CIDR的范围;如果在AWS侧或On-premise侧添加了任何网段,路由不会自动传播,需要再次手动添加。
在静态路由情况下,两端都能自动学到变化,新添加的网段会被AWS侧的路由表学到
但是AWS侧的路由表最多支持100条路由, 如果超过100条可能要考虑网段合并
在动态路由(比如BGP)场景下,需要在CGW和VGW侧都指定ASN:
在我们On-premise侧与AWS侧使用VPN进行连接后,需要讨论能不能访问到背后的网络及服务,即Transitive Routing
。
这是一个企业比较常见的场景,比如国内访问不了google,借VPN连接到AWS后,能否利用AWS的IGW成功翻qiang科学上网?
答案是不能。在AWS上,带Gateway
的(比如这里的IGW,还有之前的S3 Gateway Endpoint)一般不具有transitive能力,因为它上面没有ENI;带ENI的,比如Interface endpoint
通常具有transitive能力,因为它有ENI,可以配置路由
这个也做不到,因为NAT Gateway上不能做配置的更改:
这个可以实现:
不可以:
跟第一个场景提到的一样,Gateway一般不具有transitive能力:
这个可以做到:
可以实现,在On-premise NAT作一些自定义配置即可:
在前面配置VPN connections时,看到有两个Tunnel:
而Site to Site VPN有两种模式,一种是Active/Active
,另一种是Active/Passive
, 根据Static/Dynamic Routing
,分为多种场景来讨论。
此时无法将 AWS侧配置首选特定隧道来发送流量(图左侧),AWS 随机选择隧道将流量从 AWS 发送到本地网络。如果隧道1出现故障,则来自 AWS 的流量会自动故障转移到隧道2。
使用Active/Active
配置时,假如On-premise发往AWS的流量走了Tunnel 1(上图上面的绿色箭头),则AWS的回程流量是随机的,有可能走Tunnel 2(下面的绿色箭头),此时如果CGW上安装了防火墙,则有可能block这部分流量。所以必须在CGW上支持非对称路由(Asymmetric routing)
参考 https://repost.aws/zh-Hans/knowledge-center/vpn-configure-tunnel-preference
现在有两个Tunnel,CGW侧可以设置希望优先使用某个VPN Tunnel:
无论是静态路由还是动态路由,这种情况下正常运行的Tunnel只有一个,如果Tunnel挂了,需要CGW侧支持自动切换: