目的
Microsoft AzureとIBMCloudをインターネットを介したIPsecVPNで接続する。
次に、BGPを用いた経路交換を実施し、AzureとIBMCloud間で仮想マシン間の通信が可能か確認する。
冗長接続構成は、下記を参照してください
Azure x IBMCloud Active/Activeネットワーク接続(IPsecVPN+BGP)
構成
- ローカル端末:macOS Big Sur 11.6 1台
- プラットフォーム:Microsoft Azure
- 仮想ネットワーク:PublicIPアドレス/仮想NWゲートウェイ/ローカルNWゲートウェイ 1サービス
- Virtual Machines:CentOS 7.9 1台
- プラットフォーム:IBMCloud
- ルータ:Vyatta AT&T vRouter 5600 1912g 1台
- 仮想サーバ:CentOS 7.7(Virtual Server for Classic) 1台
構成図
Azureサービスのデプロイ
Azure Virtual Network(仮想ネットワーク)の作成
はじめに、VNet(仮想ネットワーク)を作成する。
これはGCPやAWSで言うところのVPC(Virtual Private Cloud)と呼ばれる機能。
用途毎に作成するのが一般的で、この上に仮想NWゲートウェイや仮想マシンを作成する。
参考:Azure Virtual Network とは
Azure Portal検索バーにvirtual networkを入力し、MarketplaceのVirtual networkを選択。
仮想ネットワークの作成→基本
- サブスクリプション:自分が利用するサブスクリプションを選択
- リソースグループ:作成していない為、新規作成を選択し、任意の名前を入力
- 名前:仮想ネットワークに任意の名前を入力
- 地域:作成する地域を選択
仮想ネットワークの作成→IPアドレス
- IPアドレス空間:デフォルトの10.0.0.0/16は今回は利用しないため、削除する。その後、Azure側で利用したいIPアドレス空間を入力する。
- サブネット名:サブネットの追加を選択し、サブネット名とサブネットアドレス範囲を入力し、追加を選択
セキュリティおよびタグは今回は利用しないので、確認および作成を選択
Azure VPN Gateway(仮想ネットワークゲートウェイ)の作成
インターネットを介して、オンプレミスや他クラウドと暗号化した通信で接続する。
参考:VPN ゲートウェイとは
Azure Portal検索バーにVirtual Network Gatewayを入力し、MarketplaceのVirtual network gatewayを選択
仮想ネットワーク ゲートウェイの作成→基本
- サブスクリプション:自分が利用するサブスクリプションを選択
- 名前:仮想ネットワークゲートウェイに任意の名前を入力
- 地域:作成する地域を選択
- SKU:利用用途に応じて仮想ネットワークゲートウェイの性能を選択
参考:Gateway の SKU - 仮想ネットワーク:** 作成したAzure Virtual Network(仮想ネットワーク) **を選択
- ゲートウェイサブネットのアドレス範囲:作成したVNetのアドレス空間から入力
- パブリックIPアドレス名:任意の名前を入力
- 可用性ゾーン:GWをデプロイするAzure可用性ゾーンを選択
参考:可用性ゾーン - BGPの構成:後程設定する為、無効を選択
作成する内容を確認し、問題なければ、作成を選択
デプロイ完了まで20分ほど時間がかかる
Azure ローカルネットワークゲートウェイの作成
Azureとの接続先の情報を定義する為、ローカルネットワークゲートウェイを作成する。
今回の場合はIBMCloud側のVPNゲートウェイ装置の情報を設定する。
Azure Portal検索バーにlocal network gatewayを入力し、Marketplaceのlocal network gatewayを選択
ローカルネットワークゲートウェイの作成→基本
- サブスクリプション:自分が利用するサブスクリプションを選択
- リソースグループ:先ほど作成したリソースグループを選択
- 地域:作成する地域を選択
- 名前:ローカルネットワークゲートウェイに任意の名前を入力
- IPアドレス:Azureから接続する対向先のVPNゲートウェイのIPを入力
今回はIBMCloud側VyattaのパブリックIPを入力 - アドレス空間:VPN接続対象のセグメントを入力
今回はIBMCloud側のサーバセグメント(172.31.0.0/24)を入力する
Azure IPsecVPNの設定
参考:S2S VPN または VNet-to-VNet 接続の IPsec/IKE ポリシーを構成する
- 名前:接続に関するに任意の名前を入力
- 接続の種類: サイト対サイト(IPsec) を選択
- ローカルネットワークゲートウェイ:作成したローカルネットワークゲートウェイを選択
- 共有キー(PSK):IPsecVPN接続先の機器と事前に決めた共有のキーを設定
今回はIBMCloud側のVyattaとAzure側で同じ共有キーを設定する - IKEプロトコル:特別要件がない限り、IKEv2を選択
IPsec/IKEポリシーの変更
仮想ネットワークゲートウェイのページから、作成したVPN接続名を選択
構成を選択し、IKEおよびポリシーのカスタムを選択
デフォルトの場合、セキュリティレベルが低いので、下記のポリシーを設定する。
以下の値は接続先(IBMCloud)と一致させる必要がある。
-
IKEフェーズ1
- 暗号化:AES256 -> 変更なし
- 整合性またはPRF:SHA-1 -> SHA256
- DHグループ:DH2 -> DH20(ECP384)
-
IKEフェーズ2(IPsec)
- IPsec暗号化:AES256 -> 変更なし
- IPsec整合性:SHA-1 -> SHA256
- PFSグループ:DH2 -> DH20(ECP384)
以上でAzure側のIPsecVPNの設定は完了
この後は、IBMCloud側のIPsecVPNの設定を実施し、その後BGPで接続する構成に変更する
IBMCloud IPsecVPNの設定(Vyatta)
Azure接続用VTIインタフェースの設定
IPsecで接続後、IBMCloudとGCP間のルーティングインタフェースを作成する。
169.254.21.1/30は、後程設定するBGP接続用のアドレス
set interfaces vti vti0 address '169.254.21.1/30'
set interfaces vti vti0 description 'Azure'
set interfaces vti vti0 mtu '1436'
Azure接続用IPsecVPNの設定
Azure側で対応しているIPsecVPNのパラメタは下記ページを参照
このリストにある暗号化、関数、DHセットを使えば、特に問題なく繋がるはず。
参考:Azure VPNゲートウェイの IPsec/IKE ポリシーのパラメーターについて
-
20.89.69.xxxはAzure側の仮想ネットワークゲートウェイのパブリックIPアドレス
仮想ネットワークゲートウェイの概要ページで確認可能 - 165.192.93.xxはIBMCloud側のVyattaのパブリックIPアドレス(dp0bond1)
ESPとIKEのパラメタはAzureとIBMCloudで必ず一致させること
set security vpn ipsec esp-group ESP-Azure compression 'disable'
set security vpn ipsec esp-group ESP-Azure lifetime '3600'
set security vpn ipsec esp-group ESP-Azure mode 'tunnel'
set security vpn ipsec esp-group ESP-Azure pfs 'dh-group20'
set security vpn ipsec esp-group ESP-Azure proposal 1 encryption 'aes256'
set security vpn ipsec esp-group ESP-Azure proposal 1 hash 'sha2_256'
set security vpn ipsec ike-group IKE-Azure dead-peer-detection action 'restart'
set security vpn ipsec ike-group IKE-Azure dead-peer-detection interval '30'
set security vpn ipsec ike-group IKE-Azure dead-peer-detection timeout '120'
set security vpn ipsec ike-group IKE-Azure ike-version '2'
set security vpn ipsec ike-group IKE-Azure lifetime '3600'
set security vpn ipsec ike-group IKE-Azure proposal 1 dh-group '20'
set security vpn ipsec ike-group IKE-Azure proposal 1 encryption 'aes256'
set security vpn ipsec ike-group IKE-Azure proposal 1 hash 'sha2_256'
set security vpn ipsec site-to-site peer 20.89.69.xxx authentication mode 'pre-shared-secret'
set security vpn ipsec site-to-site peer 20.89.69.xxx authentication pre-shared-secret 'ibmcloudazure'
set security vpn ipsec site-to-site peer 20.89.69.xxx connection-type 'initiate'
set security vpn ipsec site-to-site peer 20.89.69.xxx default-esp-group 'ESP-Azure'
set security vpn ipsec site-to-site peer 20.89.69.xxx ike-group 'IKE-Azure'
set security vpn ipsec site-to-site peer 20.89.69.xxx local-address '165.192.93.xx'
set security vpn ipsec site-to-site peer 20.89.69.xxx vti bind 'vti0'
set security vpn ipsec site-to-site peer 20.89.69.xxx vti esp-group 'ESP-Azure'
FW等をかけている場合は、事前に許可しておくこと。
これらの設定でIBMCloudとAzure間のIPsecVPNは接続できているはず、
IPsecVPNの接続確認
AzureポータルおよびIBMCloudのVyattaで接続状態を確認する
Azure側の状態確認
仮想ネットワークゲートウェイから、接続を選択し、対象の接続名の状態を確認
IBMCloud側の状態確認
フェーズ1の状態確認、State->upを確認
vyatta@:~$ show vpn ike sa
Peer ID / IP Local ID / IP
------------ -------------
20.89.69.xxx 165.192.93.61
State Encrypt Hash D-H Grp A-Time L-Time IKEv
----- ------------ -------- ------- ------ ------ ----
up aes256 sha2_256 20 0 3600 2
フェーズ2の状態確認、State->upを確認
vyatta@:~$ show vpn ipsec sa
Peer ID / IP Local ID / IP
------------ -------------
20.89.69.xxx 165.192.93.xx
Tunnel Id State Bytes Out/In Encrypt Hash DH A-Time L-Time
------ ---------- ----- ------------- ------------ -------- -- ------ ------
vti 4 up 4.9K/0.0 aes256 sha2_256 20 -31228 3600
AzureのBGP設定
仮想ネットワークゲートウェイおよびローカルネットワークゲートウェイでBGPを設定する。
参考:Azure VPN Gateway で BGP を構成する方法
- Azure:AS65515
- 169.254.21.2
- 広報ネットワーク:192.168.0.0/16
- IBMCloud:AS65001
- 169.254.21.1
- 広報ネットワーク:172.31.0.0/24
ローカルネットワークゲートウェイの設定
構成 -> BGPの構成 -> はい
- アドレス空間:BGPで経路制御するため、削除
- 自律システム番号(ASN):対向機器、今回はIBMCloud側のVyatta ASN番号を入力
- BGPピアのIPアドレス:対向機器、今回はIBMCloud側のVyatta VTIのIPアドレスを入力
仮想ネットワークゲートウェイの設定
構成 -> BGPの構成にチェックをいれる
- 自律システム番号(ASN):デフォルトで問題がある場合は、変更する
Azureで利用できるASN -> どの AS 番号 (自律システム番号) を使用できますか。 - カスタムのAzure APIPA BGP IPアドレス:対向機器に合わせる。今回の場合は IBMCloud側のVyatta VTIインタフェース に合わせる
続けて、左ペインの接続を選択し、作成した仮想ネットワークゲートウェイを選択
IBMCloudのBGP設定
先ほど設定したAzureとIPsecVPNを実施しているVyatta機器に対して、BGPの設定を追加する
- Azure:AS65515
- 169.254.21.2
- 広報ネットワーク:192.168.0.0/16
- IBMCloud:AS65001
- 169.254.21.1
- 広報ネットワーク:172.31.0.0/24
set protocols bgp 65001 address-family ipv4-unicast network '172.31.0.0/24'
set protocols bgp 65001 neighbor 169.254.21.2 address-family ipv4-unicast soft-reconfiguration 'inbound'
set protocols bgp 65001 neighbor 169.254.21.2 remote-as '65515'
set protocols bgp 65001 neighbor 169.254.21.2 timers holdtime '90'
set protocols bgp 65001 neighbor 169.254.21.2 timers keepalive '30'
set protocols bgp 65001 parameters router-id '169.254.21.1'
BGPの状態確認
AzureポータルおよびIBMCloudのVyattaで接続状態を確認する
Azure側の状態確認
BGPピアを選択
- BGPピア:対抗先のアドレス、ASN、BGP接続状況および受信したルート数を確認できる
- 学習したルート:具体的に対向機器からアドバタイズされたルーティング情報が確認できる
172.31.0.0/24(IBMCloud側サーバセグメント) -> 169.254.21.1(IBMCloud Vyatta)
IBMCloud側の状態確認
BGPネイバーの状態
vyatta@:~$ show ip bgp neighbors
BGP neighbor is 169.254.21.2, remote AS 65515, local AS 65001, external link
BGP version 4, remote router ID 192.168.0.254
BGP state = Established, up for 00:10:15
Last read 00:10:15, hold time is 90, keepalive interval is 30 seconds
Configured hold time is 90, keepalive interval is 30 seconds
Neighbor capabilities:
Route refresh: advertised and received (new)
Address family IPv4 Unicast: advertised and received
Address family IPv6 Unicast: received
Received 26 messages, 0 notifications, 0 in queue
Sent 24 messages, 0 notifications, 0 in queue
Route refresh request: received 0, sent 0
Minimum time between advertisement runs is 30 seconds
For address family: IPv4 Unicast
BGP table version 9, neighbor version 9
Index 2, Offset 0, Mask 0x4
Graceful restart: received
Inbound soft reconfiguration allowed
Community attribute sent to this neighbor (both)
1 accepted prefixes
1 announced prefixes
Connections established 7; dropped 6
Local host: 169.254.21.1, Local port: 36008
Foreign host: 169.254.21.2, Foreign port: 179
Nexthop: 169.254.21.1
Nexthop global: ::
Nexthop local: ::
BGP connection: non shared network
Last Reset: 00:12:07, due to BGP Notification sent
Notification Error Message: (Cease/Other Configuration Change.)
BGPでルートが取得できているか
vyatta@:~$ show ip route bgp
IP Route Table for Routing-instance "default"
B *> 192.168.0.0/16 [20/0] via 169.254.21.2, vti0, 00:10:45
エンドツーエンド疎通確認
AzureからIBMCloud側への通信確認
[azureuser@TestVM1 ~]$ ping 172.31.0.1
PING 172.31.0.1 (172.31.0.1) 56(84) bytes of data.
64 bytes from 172.31.0.1: icmp_seq=1 ttl=64 time=3.71 ms
64 bytes from 172.31.0.1: icmp_seq=2 ttl=64 time=3.32 ms
64 bytes from 172.31.0.1: icmp_seq=3 ttl=64 time=4.23 ms
64 bytes from 172.31.0.1: icmp_seq=4 ttl=64 time=3.42 ms
64 bytes from 172.31.0.1: icmp_seq=5 ttl=64 time=3.61 ms
IBMCloudからAzureへの通信確認
[root@azure-sv ~]# hping3 -S -p 80 192.168.1.4
HPING 192.168.1.4 (eth0 192.168.1.4): S set, 40 headers + 0 data bytes
len=46 ip=192.168.1.4 ttl=62 DF id=0 sport=80 flags=SA seq=0 win=29200 rtt=5.3 ms
len=46 ip=192.168.1.4 ttl=62 DF id=0 sport=80 flags=SA seq=1 win=29200 rtt=5.8 ms
len=46 ip=192.168.1.4 ttl=62 DF id=0 sport=80 flags=SA seq=2 win=29200 rtt=6.7 ms
len=46 ip=192.168.1.4 ttl=62 DF id=0 sport=80 flags=SA seq=3 win=29200 rtt=5.6 ms
len=46 ip=192.168.1.4 ttl=62 DF id=0 sport=80 flags=SA seq=4 win=29200 rtt=5.5 ms