EdgeRouterでAzureとSite to Site接続

#はじめに
あるお方から、ずっとEdgeRouterを借りていたのですが、なかなか触れませんでしたが、やっと時間が取れたのでとりあえずAzure上のVNETとSite to Site接続を試しました。

Edgerouter LITE 3Port Router (ERLite-3)というやつで、Amazonでも2万円しないくらいで購入可能みたいです。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/27f351ac-e2e5-a7d0-2430-948c676fa060.png)

#初期設定
社内の既存のLANに繋げるため、まずはEdgeRouterをシリアルコンソール経由で接続してEdgeRouterのeth0ポートのIPアドレスを固定化しました。

シリアルコンソールケーブルと、PCのUSB⇔シリアル変換ケーブルまで一緒に貸してくれましたのでありがたく利用します。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/1a1bfff9-69d1-b7f7-1bf6-6b1b11f44569.png)

PC側ではTeraTermを利用して、新しい接続で「シリアルポート」を選択して、USBで認識したCOMポートを選択、あと「設定」メニューの「シリアルポート設定」ではボーレートに「115200」を選択して、他の接続設定についてはデフォルトのままでOKでした。
一般的にパソ通時代から言われている「N81XN」でOKです。

適当にEnterキーを押すとログイン画面が表示されるので、初期IDとPW(ubnt/ubnt)を入力してログイン完了。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/2053c890-4721-eb74-a57d-c1657a55a47b.png)

EdgeRouterは初期状態でEth0に192.168.1.1/24が割り当てられているようですが、これを私は192.168.245.12/24に変更しました。
変更コマンドイメージは以下のとおりです。

```
ubnt@ubnt:~$ configure
[edit]
ubnt@ubnt# show interfaces ethernet eth0 address
 address 192.168.1.1/24
[edit]
ubnt@ubnt# set interfaces ethernet eth0 address 192.168.245.12/24
[edit]
ubnt@ubnt# show interfaces ethernet eth0 address
 address 192.168.1.1/24
+address 192.168.245.12/24
[edit]
ubnt@ubnt# delete interfaces ethernet eth0 address 192.168.1.1/24
[edit]
ubnt@ubnt# show interfaces ethernet eth0 address
-address 192.168.1.1/24
+address 192.168.245.12/24
[edit]
ubnt@ubnt# commit
[edit]
ubnt@ubnt# show interfaces ethernet eth0 address
 address 192.168.245.12/24
[edit]
ubnt@ubnt# save
Saving configuration to '/config/config.boot'...
Done
[edit]
ubnt@ubnt# exit
exit
ubnt@ubnt:~$
```

"set interfaces ethernet"コマンドで新しいIPアドレスを追加後、"delete interfaces ethernet"で既存のIPアドレスを削除。最後に"commit"で適用して、さらに"save"で永続化する感じでしょうか。

これで事務所内のLAN環境に直接EdgeRouterが設置できました。
https://EdgeRouterのIPアドレス/ でUIの管理画面を使うこともできますし、sshでログインすることもできました。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/70e38596-7f9b-da27-8586-1e862c4311fd.png)


#Azure側の準備
Azure側には任意のリソースグループに以下の仮想ネットワークとゲートウェイを作成しました。

- 仮想ネットワーク
    - アドレス空間 : 10.0.0.0/16
    - Subnet-1 : 10.0.0.0/24
    - GatewaySubnet : 10.0.1.0/24
- 仮想ネットワークゲートウェイ
    - SKU : Basic
    - 種類 : VPN
    - VPNの種類 : ルートベース

仮想ネットワークゲートウェイの作成には40分くらいかかるのでじっと待ちます。

その間に疎通確認用の仮想マシンを一台、Subnet-1セグメントに作成しておくと良いです。
私はCentOS 7.3をStandard A1のサイズで作成しました。最近はManaged Diskも使ってとても気軽に仮想マシンをお試しで立ち上げることができますね。
(従来のストレージアカウントを使った形式だと、ストレージアカウント名の重複などが少し面倒という意味です)

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/09559195-3350-d2cd-1081-15c61b1d99d0.png)

続いてローカルネットワークゲートウェイリソースを作成します。
これはAzureから見たオンプレ側(今回でいうとEdgeRouter側)の情報を設定して作成します。

- IPアドレス(EdgeRouter側のグローバルIPアドレス) : xx.xx.xx.xx (利用環境によって異なります)
- アドレス空間: 192.168.245.0/24 (利用環境によって異なります)

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/abf13c3a-74eb-3265-4595-a2a4a57d6dae.png)

最後に接続(Connection)リソースを作成します。

- 仮想ネットワークゲートウェイ : 先ほど作った仮想ネットワークゲートウェイ
- ローカルネットワークゲートウェイ : 先ほど作ったローカルネットワークゲートウェイ
- 共有キー : hoehoe (任意の文字列)

共有キーはそのあとEdgeRouter側の設定で同じ文字列を指定する必要があります。

Azure側としてはここまでの設定で終了です。

#EdgeRouter側の設定
とりあえずインターネット回線へ繋げるためのppoe設定はWeb GUI画面からサクッと設定します。

Web GUI上のダッシュボードから「Add Interface」→「Add PPPoE」あたりを選択して、利用しているプロバイダの情報を入力します。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/90e00a52-d1d0-e4f6-8281-92154ba314ef.png)

VPNの設定はssh上でCLIにて設定します。
基本的にVyOSのコマンドそのままと思われます。
今回は先人の知恵という事で、[Site to Site VPN into Azure with EdgeRouter](https://tom-henderson.github.io/2016/07/30/edgerouter-azure-vpn.html)の設定例を参考にさせてもらいました。

以下のコマンドを実行することでSite to Siteの設定は完了します。

```
configure
set vpn ipsec ipsec-interfaces interface pppoe0
set vpn ipsec auto-firewall-nat-exclude enable
set vpn ipsec nat-traversal enable

set vpn ipsec esp-group esp-azure compression disable
set vpn ipsec esp-group esp-azure lifetime 3600
set vpn ipsec esp-group esp-azure mode tunnel
set vpn ipsec esp-group esp-azure pfs disable
set vpn ipsec esp-group esp-azure proposal 1 encryption aes256
set vpn ipsec esp-group esp-azure proposal 1 hash sha1

set vpn ipsec ike-group ike-azure key-exchange ikev2
set vpn ipsec ike-group ike-azure ikev2-reauth no
set vpn ipsec ike-group ike-azure lifetime 28800
set vpn ipsec ike-group ike-azure proposal 1 dh-group 2
set vpn ipsec ike-group ike-azure proposal 1 encryption aes256
set vpn ipsec ike-group ike-azure proposal 1 hash sha1

set vpn ipsec site-to-site peer <azure-gateway-ip> description Azure
set vpn ipsec site-to-site peer <azure-gateway-ip> authentication mode pre-shared-secret
set vpn ipsec site-to-site peer <azure-gateway-ip> authentication pre-shared-secret <super-secret-pre-shared-key>
set vpn ipsec site-to-site peer <azure-gateway-ip> connection-type initiate
set vpn ipsec site-to-site peer <azure-gateway-ip> default-esp-group esp-azure
set vpn ipsec site-to-site peer <azure-gateway-ip> ike-group ike-azure
set vpn ipsec site-to-site peer <azure-gateway-ip> ikev2-reauth inherit
set vpn ipsec site-to-site peer <azure-gateway-ip> local-address any
set vpn ipsec site-to-site peer <azure-gateway-ip> tunnel 1 allow-nat-networks disable
set vpn ipsec site-to-site peer <azure-gateway-ip> tunnel 1 allow-public-networks disable
set vpn ipsec site-to-site peer <azure-gateway-ip> tunnel 1 esp-group esp-azure
set vpn ipsec site-to-site peer <azure-gateway-ip> tunnel 1 local prefix <local-prefix>
set vpn ipsec site-to-site peer <azure-gateway-ip> tunnel 1 remote prefix <remote-prefix>
commit
save
exit
```

"\<super-secret-pre-shared-key\>"にはAzure側のローカルネットワークゲートウェイ作成時に指定した共有キーを設定します。
"\<azure-gateway-ip\>"はAzure側の仮想ネットワークゲートウェイに割り当てられたパブリックIPアドレスを設定します。
"\<local-prefix\>"はオンプレ側のネットワークをCIDR形式で設定します(今回の例では192.168.245.0/24)
"\<remote-prefix\>"はAzure側のネットワークをCIDR形式で設定します(今回の例では10.0.0.0/16)

暫く待つとAzure側からも接続(Connection)リソースの接続状態が接続済みになります。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/38a741f3-4e68-10b7-32b0-387f9c54d6b4.png)


#接続確認
とりあえずオンプレ側のメインルーターのルーティング設定は変更せずに、クライアントPC側でスタティックルートの設定を追加してクライアントPC→Azure側LinuxにプライベートIPアドレスで接続します。

管理者モードでWindowsのコマンドプロンプトを開き、以下のコマンドでスタティックルートを追加します。

```
route add 10.0.0.0 mask 255.255.0.0 192.168.245.12
```

CIDRの値、EdgeRouterのIPアドレスは適宜変更してください。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/895aa629-a49d-c911-f6cf-de5aec4b44b5.png)

TeraTermからも直接10.0.0.4(Azure側のCentOSに割り当てられたプライベートIPアドレス)にssh接続ができることが確認できました。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/34c76e5a-c216-a5d3-439a-7811cbfab397.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3e7fa96f-aeb4-ac24-ec1c-c1303c4e8ce8.png)

#おわりに
今回はとても駆け足でEdgeRouterの初期設定～AzureとのVPN接続を試しましたが、本番環境として利用するためにはFirewall設定など色々と別途設定が必要と思われますが、まずはMS非検証のEdgeRouterでも簡単に接続が行える事がわかりました。

今回の検証ではEdgeRouterのファームウェアは執筆時点で最新となる1.9.1を使用して確認しました。