【VMware on IBM Cloud】NSX EdgeとVRA(Virtual Router Appliance)でIPSec VPNを構築する

#はじめに

VMware社が提供しているネットワーク仮想化ソリューションであるNSXではNSX Edgeという仮想ルーターが利用できます。NSX Edgeはルーティング、ファイアウォール、ロードバランス、VPN、P2V接続などの機能が搭載されたルーターで、NSXの根幹を担っているコンポーネントと言えます。

今回は<font color="red">**NSX EdgeのIPSec VPN機能について確認したい**</font>と思います。



また、IPSec VPNはPeer to PeerのVPNですので、対向側のルーターが必要になります。

そこで今回はIBM Cloudで提供している[VRA](http://knowledgelayer.softlayer.com/topic/virtual-router-appliance)(Virtual Router Appliance)という仮想ルーターを利用し、NSX Edge - VRA間でIPSec VPNのトンネルを構築したいと思います。

#対象読者

今回構成するのはNSX EdgeとVRA間のIPSec VPNですが、下記に当てはまる方も参考になるかもしれません。
・オンプレミス上のルーターとIBM Cloud上のVRAとの間でIPSec VPNを構成したい
・オンプレミス上のルーターとIBM Cloud上のNSX Edgeとの間でIPSec VPNを構成したい
・オンプレミス上のNSX EdgeとIBM Cloud上のNSX Edgeとの間でIPSec VPNを構成したい
・とにかくNSX EdgeでIPSec VPNを構成したい
・VRAでIPSec VPNを構成したい


#構成図

簡単な構成図を載せておきます。NSX Edgeの背後にある192.168.5.0/24のセグメント(NSXの論理スイッチ、つまりVXLAN)とVRAの背後にある10.111.xxx.xxx/26のセグメント(IBM Cloudから提供されるVLAN)をIPSec VPN経由で接続します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/2db7fae0-41ff-4b7b-2d54-ddab5b2f55d0.png)



#NSX Edgeの構成

まずはNSX EdgeのIPSec VPN設定を行います。

##事前準備

IPSec VPNに関する設定を行う前に、下記の設定を完了する必要があります。

###1. NSX Edgeのデプロイ

vCenterにWeb Clientでログインし、メニューの「Networking and Security」から「NSX Edge」を選択し、追加します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/ea5a3cc0-4261-cb79-84c8-8a5227ff8653.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/e557986e-768e-df55-b2c3-96d73fbb390e.png)



###2. NSX EdgeのNetwork設定

デプロイが完了したら(デプロイ時に設定しても構いません)、NSX Edgeのインターフェースを設定します。

「Uplink」のvNICとしてインターネットに接続できるIPアドレス、「内部」のvNICとしてIPSec VPNで接続したいローカルのIPアドレスを設定してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/f047fd44-466b-a7b9-b757-7620bae21045.png)

もちろんvNICに接続する論理スイッチもあらかじめ作成しておく必要があります。

##IPSec VPN設定
IPSec VPNの設定をしていきます。
設定の参考にしたドキュメントは[こちら](https://docs.vmware.com/jp/VMware-NSX-for-vSphere/6.3/com.vmware.nsx.admin.doc/GUID-6152B56B-2119-48E7-B2F2-BDDCF58B3F14.html)です。

まずはNSX Edgeの管理画面から「VPN」タブを選択し、「IPSec VPN」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/e4ad5e26-9db9-66fc-5afa-1e291a71eb37.png)

「＋」マークをクリックし、IPSec VPNの設定をします。

設定するのは下記の項目になります。IPSec VPNの設定をしたことのある方はご存知かと思いますが、NSX Edgeから見て「ローカル」というのがNSX Edge側で「ピア」がVRA(対向)側の呼称になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/5007289b-0483-18d2-18d0-6eb5dfc3acf9.png)

暗号化アルゴリズムやPSK(プリシェアードキー)、DHグループなどをローカル、ピアの両方で合わせる必要があることに注意してください。

また、NSX Edgeで使用されるIKEフェーズ1, 2のパラメータは[こちら](https://docs.vmware.com/jp/VMware-NSX-for-vSphere/6.3/com.vmware.nsx.admin.doc/GUID-2FDA8948-148B-4600-BA10-69C2BEF6D3C4.html)にあります。





#VRAの構成

次にVRAを構成していきます。
構成の際に参考になる資料は[こちら](https://console.bluemix.net/docs/infrastructure/virtual-router-appliance/getting-started.html)にリンクがあります。
IPSec VPNについては[こちら](https://public.dhe.ibm.com/cloud/bluemix/network/vra/vyatta-network-os-5.2r1-ipsec-vpn.pdf)のファイルをご覧ください。

##VRAのオーダー

IBM Cloudの[ポータルにログイン](https://console.bluemix.net/login/)し、VRAをオーダーします。
(IBM Cloudのアカウントをお持ちでないない方は[こちら](https://console.bluemix.net/registration/)から登録できます。)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/d810be2f-7ea7-2aba-16ae-ff3541b1d549.png)

ログインに成功したら右上の「カタログ」からVRA(Virtual Router Appliance)を選択し、「作成」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/d0576704-6a31-2f1d-0b5b-4d7cdcbea6ad.png)

右上の「ゲートウェイの注文」から注文してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/bf61d312-ac60-2a03-ce78-df4f600f6abc.png)

IBM Cloudで提供されている仮想ルーターのVRAは、CPUのモデル、メモリー、ディスクの構成などを自由にカスタマイズすることができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/1825f43c-ed49-deb0-4f7d-efa8843f027b.png)


##事前準備

オーダーが完了したらVRAにログインし、構成していきます。
VRAの構成を変更するには、ポータルから「デバイス詳細」を選択し、ユーザー名とパスワードを取得してssh経由でログインします。

IPSec VPNを構成する前に、以下の設定が完了している必要があります。

###1. インターフェースの構成

IPSec VPNのエンドポイントとして利用するインターフェース、内部サブネット用のインターフェースを事前に構成しておく必要があります。

###2. IPアドレスの設定

構成したインターフェースにIPアドレスを設定する必要があります。DHCPによる設定も可能です。

###3. ファイアウォールの設定

IPSec VPNの構築に必要なポート下記のポートが疎通するようにルールを追加しておく必要があります。

- UDP(4500, 500)
- ESP


##IPSec VPN設定

ここでの設定は一例です。NSX Edge側での設定と合わせるように設定します。

###1. IKEグループの構成
```
set security vpn ipsec ike-group IKE-1 proposal 1
set security vpn ipsec ike-group IKE-1 proposal 1 encryption aes256
set security vpn ipsec ike-group IKE-1 proposal 1 hash sha1
set security vpn ipsec ike-group IKE-1 proposal 1 dh-group 14
set security vpn ipsec ike-group IKE-1 lifetime 28800
```


###2. ESPグループの構成
```
set security vpn ipsec esp-group ESP-1 proposal 1
set security vpn ipsec esp-group ESP-1 proposal 1 encryption aes256
set security vpn ipsec esp-group ESP-1 proposal 1 hash sha1
set security vpn ipsec esp-group ESP-1 lifetime 3600
```

###3. ピアサイトの設定
```
set security vpn ipsec site-to-site peer 161.202.xxx.xxx authentication mode pre-shared-secret
set security vpn ipsec site-to-site peer 161.202.xxx.xxx authentication pre-shared-secret secret_key
set security vpn ipsec site-to-site peer 161.202.xxx.xxx default-esp-group ESP-1
set security vpn ipsec site-to-site peer 161.202.xxx.xxx ike-group IKE-1
set security vpn ipsec site-to-site peer 161.202.xxx.xxx local-address 119.81.xxx.xxx
set security vpn ipsec site-to-site peer 161.202.xxx.xxx tunnel 1 local prefix 10.111.xxx.xxx/26
set security vpn ipsec site-to-site peer 161.202.xxx.xxx tunnel 1 remote prefix 192.168.5.0/24
```

両方の構成が完成すると自動的にIPSec VPNのトンネルが構築されます。


#IPSec VPNの疎通確認

IPSec VPNのトンネルが構築されていることがそれぞれ下記のように確認できます。

NSX Edgeの場合、NSX EdgeのVPN管理画面で「IPSec統計の表示」を選択してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/990d8e14-6d17-2534-04d7-77db3bd5fe40.png)
トンネルステータスが接続中になっていれば接続されています。

また、VRAの場合は下記のコマンドで確認することができます。

```
$ show vpn ipsec sa

Peer ID / IP                            Local ID / IP
------------                            -------------
161.202.xxx.xxx                         119.81.xxx.xxx                         

    Tunnel  Id          State  Bytes Out/In   Encrypt       Hash      DH A-Time  L-Time
    ------  ----------  -----  -------------  ------------  --------  -- ------  ------
    1       2           up     0.0/0.0        aes256        sha1      14 2530    3600   

```
StateがupになっていればIPSec VPNのトンネルが張れていることが確認できます。

仮想マシン同士の疎通も確認します。

192.168.xxx.xxx(VXLAN) -> 10.111.xxx.xxx(VLAN)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/116e472d-8a9b-1adc-0ffa-b963d3810755.png)

10.111.xxx.xxx(VLAN) -> 192.168.xxx.xxx(VXLAN)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103277/582c6870-5b16-4dba-bf06-9bd1350745cd.png)

IPSec VPNを張ることによって、Privateネットワーク同士の接続を確認することができました。


#トラブルシューティング

設定自体は非常に簡単ですのですぐに構築することはできると思いますが、いくつかエラーが出る場面があったので備忘録として下記にまとめておきます。


###1. peer not responding, trying again

VRAで確認できるエラーです。このエラーが表示される時はそもそもパケットが返ってきていません。考えられるのは
・対向側のIPアドレスやネットワーク、vSwitchなどの設定ができていない、
・間にファイアウォールやプロキシが挟まっている場合はそこでドロップされている
などの理由でパケットが届いていないという状況が考えられます。ルーターだけでなく、VMwareの設定も今一度見直した方が良いでしょう。

###2. NO_PROPOSAL_CHOSEN

これはIKE/IPSecの暗号化方式が双方で異なっている時に出るエラーです。プロポーザルの暗号化方式やDHグループなどの設定を見直す必要があります。

また、他の事象で接続が上手くいかない場合、下記のURLを確認してみてください。
[NSX for vSphere 6.x における IPSec VPN のトラブルシューティング (2134560)](https://kb.vmware.com/s/article/2134560)
[NSX Edge IPSec VPN - トラブルシューティング](https://docs.vmware.com/jp/VMware-NSX-for-vSphere/6.3/com.vmware.nsx.troubleshooting.doc/GUID-E995869C-82EE-462C-A4CB-35751ACAED6D.html)



#まとめ

今回はNSX EdgeとVRA(Virtual Router Appliance)を利用してIPSec VPNを構築しました。

非常に簡単にIPSec VPNを利用することが可能なので是非[IBM Cloud](https://www.ibm.com/cloud/)で構築してみてください。