ニフクラ ブログ

ニフクラ/FJ Cloud-Vやクラウドの技術について、エンジニアが語るブログです。

VPNゲートウェイでVTIを使ったVPN接続方法

みなさんこんにちは!ニフティの蓮沼です。 2年ぶりのユーザブログ投稿になります。もう3年目になりました。 普段はニフティクラウドのVPNゲートウェイやルーターの開発、運用などを行っています。

今回は多くのお客様からお問い合わせをいただいている、ニフティクラウドのVPNゲートウェイの「IPsec VTI」機能について機能概要、構成、設定方法についてご紹介したいと思います!

VTIとは?

VTIとはVirtual Tunnnel Interfaceの略で、VPNゲートウェイのVPN接続先を対象としたルーティング設定ができる機能です。この機能は2016年4月13日にルーター・VPNゲートウェイ 機能エンハンスで追加されました。 通常のIPsec接続では、ニフティクラウドのプライベートLANから対向機器LAN側IPアドレス帯、下の図では192.168.0.0/24のみ通信ができます。これはVPNゲートウェイの仕様になります。

VTIでの接続であればVPN接続先をInterfaceとして認識するため、VTIに対してルーティング設定を行うことが可能になります。VTIでは192.168.0.0/24 , 172.16.0.0/24に対しても通信ができます。

VTIが必要な構成例

ニフティクラウドにVPN接続するお客様拠点の異なるネットワークが、複数ある場合には原則VTIを利用する必要があります。 ※お客様拠点のVPN機器に接続されるネットワークが192.168.0.0/24 , 192.168.1.0/24と隣り合っている場合には、対向機器LAN側IPアドレス帯を192.168.0.0/23と設定する事で、2つのネットワークに対して通信が可能になる場合もあります。

VTIの設定方法

では構成例がわかったところで、実際に以下のネットワークを構築してみます。

ニフティクラウド上のサーバーとお客様環境のサーバー間でping疎通できるように構築していきます。 今回ニフティクラウドをeast-21 , お客様環境は擬似環境としてニフティクラウドのwest-12で構築を行っています。

各サーバー、ネットワークの作成

構成図の通り、各サーバーやネットワークをコンパネから作成していきます。

east-21(ニフティクラウド環境)

west-12(擬似お客様環境)

VPNゲートウェイにはバージョンがあります。過去VTIに関する不具合や仕様変更がありましたので、最新のバージョンか確認してください。 今回、執筆時点の最新バージョンであるv2.3を利用します。

カスタマーゲートウェイの作成

次にVPN接続を行うためのカスタマーゲートウェイを作成します。 以下はeast-21(ニフティクラウド環境)で設定する、対向拠点側west-12(擬似お客様環境)の設定です。ここではIPアドレス124.24.43.50を設定しています。

ポイントは以下2点です。

  • 対向機器LAN側IPアドレス帯にはVTIの場合でもIPsecと同様に、対向機器のLANネットワークアドレス帯を指定します。
  • 対向機器LAN側IPアドレスはVPNゲートウェイに設定される対向側IKE IDです。VPNゲートウェイはデフォルトで対向側IKE IDにグローバルIPアドレスである「対向機器IPアドレス」を利用するため、VPNゲートウェイ同士の接続の場合は空欄にします。接続する対向機器のIKE IDがプライベートIPを利用する場合には設定が必要です。

同様にwest-12(擬似お客様環境)でも、対向拠点側east-21(ニフティクラウド環境)のカスタマーゲートウェイを作成します。

VTIでのVPNコネクションの作成

それではVTIでVPNコネクションを作成し、VPN接続を行います。 以下はeast-21(ニフティクラウド環境)のVPNコネクションの作成画面です。

VTIの場合、接続方式で「VTI / IPsec」を選択します。

同様にwest-12(擬似お客様環境)でもVPNコネクションを作成します。 以下の様にコネクションステータスが接続済みとなればIPsec SAが確立された事を意味し、VPN接続が確立された状態となります。

east-21(ニフティクラウド環境)

west-12(擬似お客様環境)

もしVPN接続ができていなかったら

ニフティクラウドのVPNゲートウェイにはログ機能があります。このログからお客様の機器設定ミスなど接続できない原因を切り分ける事が可能です。 お客様はエラー番号から、エラー内容、解決方法を参照しトラブルシュートする事が可能になっています。とても便利な機能ですので「VPN接続できない!」という時にはぜひご活用ください!

ルートテーブルの設定

VTIでのVPN接続はできましたので、次にVPNゲートウェイに対してルートテーブルの設定を行います。まずVTIのVPNコネクションを作成すると、自動的にVPNゲートウェイに以下の様なルートテーブルの設定がされます。

このためVTIのVPN接続が確立された直後ではニフティクラウドの「10.0.0.0/24」とお客様環境の「192.168.0.0/24」のネットワーク帯のみ疎通が出来る状態になっています。 「10.0.0.0/24」と「172.16.0.0/24」のネットワーク間で疎通できるように以下のルートテーブルを作成します。

east-21(ニフティクラウド環境) , west-12(擬似お客様環境)のVPNゲートウェイに設定するルートテーブル

作成後VPNゲートウェイの操作から、「ルートテーブル設定変更」でルートテーブルを変更します。

ここでポイントなのが、VPNゲートウェイに設定するルートテーブルは「172.16.0.0/24」のみという事です。VTIのVPNコネクションが設定されているVPNゲートウェイは、設定されるルーテーブルに自動的にVTIのルールを追加します。このため今回設定するルートテーブルは「172.16.0.0/24」のみのルールとなります。

また疎通確認のために、west-12(擬似お客様環境)のルーターのデフォルトゲートウェイの設定も行っておきます。

west-12(擬似お客様環境)のルーターに設定するルートテーブル

疎通確認

以上でVTIのVPN接続、ルーティング設定が完了しました。 さっそく172.16.0.0.100(擬似お客様環境)のサーバーから10.0.0.100(ニフティクラウド)のサーバーにping疎通してみます。 pingコマンドの前に、各サーバーのルーティング設定を行います。

10.0.0.100(ニフティクラウド)のサーバー CentOS 7.1
[root@localhost ~]# route add -net 192.168.0.0/24 gw 10.0.0.1
[root@localhost ~]# route add -net 172.16.0.0/24 gw 10.0.0.1
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         27.133.232.1    0.0.0.0         UG    100    0        0 ens160
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens192
27.133.232.0    0.0.0.0         255.255.248.0   U     100    0        0 ens160
172.16.0.0      10.0.0.1        255.255.255.0   UG    0      0        0 ens192
192.168.0.0     10.0.0.1        255.255.255.0   UG    0      0        0 ens192

172.16.0.0.100(擬似お客様環境)のサーバー Microsoft Windows Server 2012 R2
PS C:\Windows\system32> route add 192.168.0.0 mask 255.255.255.0 172.16.0.254
 OK!
PS C:\Windows\system32> route add 10.0.0.0 mask 255.255.255.0 172.16.0.254
 OK!
PS C:\Windows\system32>

172.16.0.0.100(擬似お客様環境)のサーバーからpingを実行します。

PS C:\Windows\system32> ping 10.0.0.100 -t

10.0.0.100 に ping を送信しています 32 バイトのデータ:
10.0.0.100 からの応答: バイト数 =32 時間 =10ms TTL=61
10.0.0.100 からの応答: バイト数 =32 時間 =10ms TTL=61
10.0.0.100 からの応答: バイト数 =32 時間 =10ms TTL=61

10.0.0.100(ニフティクラウド)のサーバーのtcpdump

[root@localhost ~]# tcpdump  -n -i ens192 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 65535 bytes
17:38:36.027467 IP 172.16.0.100 > 10.0.0.100: ICMP echo request, id 1, seq 24, length 40
17:38:36.027498 IP 10.0.0.100 > 172.16.0.100: ICMP echo reply, id 1, seq 24, length 40
17:38:37.043041 IP 172.16.0.100 > 10.0.0.100: ICMP echo request, id 1, seq 25, length 40
17:38:37.043066 IP 10.0.0.100 > 172.16.0.100: ICMP echo reply, id 1, seq 25, length 40
17:38:38.058701 IP 172.16.0.100 > 10.0.0.100: ICMP echo request, id 1, seq 26, length 40
17:38:38.058731 IP 10.0.0.100 > 172.16.0.100: ICMP echo reply, id 1, seq 26, length 40
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel

無事VPNを介して疎通確認ができました!

まとめ

今回VTIを使ったVPN接続の要件、一連の設定内容をご紹介しました。
VTIのVPN接続によりお客様の既存のネットワークを維持しながら、ニフティクラウドへのセキュアな接続が可能です。
またVPNゲートウェイのログ機能により、VPN接続が出来ない原因をトラブルシュートできるなどユーザーフレンドリーなサービスになっています。
既存のシステムをクラウドに接続する事で柔軟に拡張する事が可能ですので、ぜひご活用ください!