Routing Based とPolicy Based
IPSecの世界にざっくり2種類の実装があって、1つはACL/Policyでトラフィックを選択し、選択したトラフィック毎にIPsecTunnelを構成するPolicy Based、もう一つはざっくり何でも通すIPsec Tunnelを構成しておいて、どのトンネルを使うかあるいは使わないかをIP RoutingのNexthopで選ぶタイプ。
Alibaba CloudのVPN-GWはpolicy BasedのIPSecに見える。ということで、今回はRouting Basedな機器を接続するパターンを検証。
- 0.0.0.0/0 <---> 10.128.1.0/24を暗号化するトンネル作成
- Alibaba CloudはPolicyに従い、10.128.1.0/24宛てのトラフィックは全てトンネルを使用(Policy based)
- FortigateはStatic Routeで必要なCIDR(この場合は172.24.0.0/16)のNext Hopをトンネルに指定(Routing based)
接続
Alibaba Cloud側準備
VPN Gateway準備
Alibaba Cloud側の IPsec終端ポイントの作成。
1時間10円ぐらい。購入するとIPSec用のグローバルIPが割り当てられる。
Customer Gateway準備
こちらはFortigate側のアドレス。今回のように他の機器でNATされている場合はNATの外側で使われているグローバルアドレスを設定。
VPN Connection準備
先ほど作成したVPN GatewayとCustomer Gatewayを選択
- ローカルネットワークは0.0.0.0/0とする。AlibabaCloud側として全ての宛先を受け入れる設定になり、FortigateはRoutingの仕組みでここを通すトラフィックを選ぶ。
- リモートネットワークはfortigate側のプライベートアドレス空間を指定する。0.0.0.0/0にしてはいけない。
- 「高度な設定」が必要
- 事前共有鍵"alitest"
- RemoteIDは今回のようにNATの裏にFortigateがいる場合はNATの裏側のFortigateのプライベートIPになるので書き換える。
- DHグループはFortigate側に合わせてGroup5に変更。Alibaba Cloud側のデフォルト値の2がデフォルトではFortigate側に設定されていない。
- 他はデフォルト値で。
Fortigate側準備
Address Object作成
IPSec Tunnel作成
こちらもAlibaba Cloud側に合わせ、Remote Addressは0.0.0.0/0、Local Addressは実際のSubnetアドレスを指定する。Preshared keyはここではAlibaba Cloud側に合わせて"alitest"を設定する。
MEMO
Local Addressが複数のCIDRになる場合は注意が必要。
「Phase 2 Selector」が複数行あるとIKEv1でもv2でもそれ毎にSAペアを作ろうとするのでAlibaba Cloud側でもその数だけVPN Connectionが作る必要がある。下記のCISCOと同じ挙動をする。
https://qiita.com/makotaka/items/985277345794b4a51273
Polocy作成
FortigateのportとTunnelとの間で想定できるトラフィックを全てAcceptする。
Static Route 作成
そして実際にTunnelへ流すトラフィックはそのStatic Routeのnext hopをVPN Tunnel interfaceに設定することで選択する。