はじめに
AzureのLocal Network Gateway(以下LNG)とVPN Gateway、さくらのクラウドのVPNルータ(旧VPCルータ)を使用して拠点間VPNできればいいよねという思いつきで試してみたところ、PING疎通までは確認できたので備忘録としておいておきます。
完成図
構築
仮想ネットワークやVM等をデプロイしておく(Azure側)
ここでは詳しく紹介しませんが、いつも通りにVNETや必要な仮想マシンをデプロイしておいてください。
ただし、VNETの中にVirtual Networok Gatewayの目的を持ったサブネットを用意しておいてください

VPN Gateway用にパブリックIPv4アドレスを1つ用意しておく (Azure側)
VPN Gatewayのデプロイには時間がかかります。
さくらのクラウド側で入力するときに、これがないと作業ができないのであらかじめ確定しておきたい
スイッチ作成(さくらのクラウド側)
仮想マシンとVPNルータを接続するスイッチを作成しておきます
ルーター機能は必要ありません。
VPNルータ作成(さくらのクラウド側)
スタンダードでOKです。インターネットVPNなのでインターネット接続は必須です。
作成できたらさくらのクラウド側のグローバルIPアドレスが確定します
スイッチとVPNルータの接続(さくらのクラウド側)
先程作成したスイッチとVPNルータを接続する
ここではIPアドレスは192.168.100.254/24とします。ご自身の環境に合わせてスイッチを生やしてください

サイト間VPNの設定を追加する(さくらのクラウド側)
| 対向IPアドレス | Azureで事前に取得したパブリックIPアドレス |
| 対向ID | Azureで事前に取得したパブリックIPアドレス |
| Pre Shared Secret | 事前共有キーを決める。Azure側でも使う |
| 対向Prefix | Azure側のサブネット(複数可) |
| ローカルPrefix | さくらのクラウド側のサブネット(複数可) |
反映をクリックしたら、さくらのクラウド側の操作は一旦終わり
LNG作成(Azure側)
※ExpressRouteじゃないよ!

リソースグループやリージョンはそれぞれ違うと思います
| エンドポイント | IPアドレス(FQDNがあればそれでもOK) |
| IPアドレス | さくらのクラウドVPNルータのグローバルIPアドレス |
| アドレス空間 | さくらのクラウド側のサブネット |
BGPの設定は無し
入力したらデプロイする
VPN Gateway作成(Azure側)
| ゲートウェイの種類 | VPN |
| SKU | VpnGw1Azで試しました |
| 世代 | Generation1 |
| 仮想ネットワーク | VPNで結ぶAzure側のVNET |
| サブネット | VNET内のGatewaySubnetが自動選択される |
| パブリックIPアドレス | 既存のものを使用 |
| パブリックIPアドレスの選択 | VPN Gateway用に取得したv4アドレス |
| アクティブ/アクティブモードの有効化 | 無効(対応してるのか未検証) |
| BGPの構成 | 無効 |
| 認証情報 | 無効 |
できたらデプロイする(Japan Eastで30分程度。めっちゃ時間かかる)
VPN connectionsの作成(Azure側)
※ExpressRouteじゃないよ!
基本
設定
さくらのクラウド側の設定にあわせてIPsecおよびIKEポリシーを調整します

| 仮想ネットワークゲートウェイ | 先程作成したVPN Gateway |
| ローカルネットワークゲートウェイ | 先程作成したLNG |
| IKEプロトコル | IKEv1 |
| AzureプライベートIPアドレスを使用する | なし |
| BGPを有効にする | なし |
| IPsecおよびIKEポリシー | カスタム |
IKEフェーズ1
| 暗号化 | AES128 |
| 整合性またはPRF | SHA1 |
| DHグループ | DHGroup2 |
IKEフェーズ2(IPsec)
| IPsec暗号化 | AES128 |
| IPsec整合性 | SHA1 |
| PFSグループ | PFS2 |
その下
| IPsec SAの有効期間(KB) | 28800 |
| IPsec SAの有効期間(秒) | 1800 |
| DPDタイムアウト | 30 |
事前共有キーはデプロイ後に入力します
間違いなければデプロイ
このあたりでさくらのクラウド側のVPNルータの電源を投入しておきましょう
事前共有キーを設定しに行く(Azure側)
※ExpressRouteじゃないよ!
VPN connectionsの一覧から作成したものをクリック

認証の設定を確認すると共有キー(PSK)を入力する欄があるので入力して保存する

保存して何度か画面を更新すればトンネルのstatusがConnectedに変わります

さくらのクラウド側でもトンネルの状態がUPになっているはずです

テスト
Azureとさくらのクラウド、両方に仮想マシンを建ててPINGしてみます
さくらのクラウド側VMの情報
ubuntu@skic-az-dx-skvm01:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9c:a3:ba:33:f8:d7 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 192.168.100.1/24 brd 192.168.100.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::9ea3:baff:fe33:f8d7/64 scope link
valid_lft forever preferred_lft forever
ubuntu@skic-az-dx-skvm01:~$
ubuntu@skic-az-dx-skvm01:~$ ip route
default via 192.168.100.254 dev eth0 proto static
192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.1
ubuntu@skic-az-dx-skvm01:~$
Azure側VMの情報
azureuser@skic-az-dx-azvm01:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:22:48:e6:67:c7 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.4/24 metric 100 brd 10.0.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::222:48ff:fee6:67c7/64 scope link
valid_lft forever preferred_lft forever
azureuser@skic-az-dx-azvm01:~$
azureuser@skic-az-dx-azvm01:~$ ip route
default via 10.0.1.1 dev eth0 proto dhcp src 10.0.1.4 metric 100
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
10.0.1.1 dev eth0 proto dhcp scope link src 10.0.1.4 metric 100
168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp src 10.0.1.4 metric 100
169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp src 10.0.1.4 metric 100
azureuser@skic-az-dx-azvm01:~$
さくらのクラウド → Azure
VPNルータに搭載されたPING機能を使って先程の仮想マシンにPINGしてみましょう

こっちもOKですね。Azure側からのtcpdumpでもしっかり見えています

仮想マシン対仮想マシンのPINGはどうでしょうか

OKです
※仮想マシン側の経路設定に注意してください。
VPNルータにデフォゲが向いていれば問題ないですが、デフォゲが共有セグメントに向いている場合はAzure側のサブネットがVPNルータに向くような静的経路が必要です。
Azure → さくらのクラウド
Azure側に仮想マシンを建てて、さくらのクラウド VPNルータに向けてPINGしてみましょう
石狩から東京なので遅延はありますが、しっかりトンネルを経由してくれてそうです
こちらの経路設定はVNETでいい感じにやってくれるので変更しなくてもいいです
終わり!
参考資料








