この記事は、ニフクラブログで2016-11-14に公開された記事を移転したものです。
前回のニフティクラウドにVPN接続する(ニフティクラウド設定編)では、ニフティクラウド側でVPNゲートウェイを設定しました。今回は手元側にあるRTX1200をVPNルーターとして設定し、ニフティクラウドにVPN接続します。また、VPNでニフティクラウド上のサーバーとの間でやり取りするには、サーバーにルーティングの設定を別途行う必要がありますので、その手順についても解説します。
RTX1200にIPsecを設定する
RTX1200にニフティクラウド側のVPNゲートウェイに接続する設定を行います。
RTX1200で設定コマンドを実行する
RTX1200のWeb管理画面では暗号アルゴリズムとしてAES128/256を選択できない制約があるので、コマンドを実行して設定を行う必要があります。設定コマンドの実行は、RTX1200にSSHで接続するなどのほか、Web管理画面でも「運用サポート機能」→「保守」から「設定の管理」→「コマンドの入力」を実行するとWebブラウザ経由で実行できるので活用するとよいでしょう。
VPN設定用のコマンドを取得
VPN設定用のコマンドは、ニフティクラウド側のVPNコネクションから色々なルーター用の設定を取得できるので、その中からYAMAHA RTXシリーズ用の設定を取得します。設定には事前共有鍵なども含まれているので設定が簡単に行えます。
ニフティクラウドのダッシュボードから「ネットワーク」を選択し、作成したVPNコネクションをクリックします。VPNコネクションは、VPNゲートウェイとカスタマーゲートウェイを結んでいる線です。
ちなみにカスタマーゲートウェイとは、この場合にはRTX1200にあたります。トポロジー図だと右側に来ているので分かりにくいですが、実際には共通グローバルのネットワークを経由して左側に来ているもの、と考えるとしっくりと来るでしょう。実はずっと「これ、どういう意味なんだろう?」と思っていたのですが、9月21日(水)に行われた「ニフティクラウドエンジニア交流会」で直接VPNゲートウェイ開発担当の方から教えてもらったのでした。素朴な疑問も、サポートに問い合わせたりした方がいいようです。
閑話休題。
VPNコネクションをクリックして表示されるダイアログから、「カスタマーゲートウェイ用設定情報」をクリックします。ドロップダウンリストから自分の使用しているVPNルーターに合わせた項目を選ぶと、設定用のコマンドが表示されます。今回は「YAMAHA RTXシリーズ用」を選択します。
VPN設定用コマンドの実行
取得した設定用のコマンド全体をコピー&ペーストして、RTX1200に対して実行します。
1つだけ、「no tunnel select」というコマンドがエラーを起こしますが、特に影響しないので気にしないでも大丈夫です。
設定は即時有効になりますが、VPN接続が確立するには少し時間がかかります。少し時間を置いてから、VPNルーター側、VPNコネクション側で接続が確立したことを確認しましょう。
サーバーにルーティングを設定する
手元のVPNルーターからニフティクラウド側のVPNゲートウェイまで接続できましたが、今回の構成では、手元側とニフティクラウド側のネットワークは異なるネットワークとして構成されているので、ネットワーク間でのルーティングを設定する必要があります。
RTX1200のルーティングを確認する
VPN設定用コマンドの中に含まれておりすでに設定されているので、コマンドだけ確認しておきます。設定用コマンドに以下の1行が含まれており、ニフティクラウド側のネットワーク 192.168.10.0/24にはtunnel 1、すなわちVPN接続を利用することが設定されています。
# 静的経路情報の設定
# トンネルの番号はお客様の環境に合わせて設定してください。
#
ip route 192.168.10.0/24 gateway tunnel 1
サーバーのルーティングを設定する
次にサーバーのルーティングを設定します。サーバーは作成時、あるいは作成後にネットワーク設定を変更して、あらかじめ作成したVPN接続用のプライベートLANに接続されているものとします。
サーバーのデフォルトゲートウェイはグローバル側を指しているものとして、手元側のネットワーク(192.168.100.0/24)に接続する場合のみ、VPNゲートウェイを利用して通信するように設定します。 今回はサーバーとしてCentOS 7.1を使用しています。
VPNゲートウェイのIPアドレス確認
VPNゲートウェイのIPアドレスを確認します。ニフティクラウドのダッシュボードから、「ネットワーク」を選択し、VPNゲートウェイをクリックします。表示されるダイアログから「ネットワーク」をクリックします。今回は192.168.10.2が割り当てられていました。
ネットワークインターフェース名の確認
ネットワークインターフェース名を確認します。サーバーにSSHでログインして作業を行います。
# ip a
(略)
3: ens192: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:82:63:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 brd 192.168.10.255 scope global dynamic ens192
(略)
インターフェース名はens192に設定されていることを確認しました。
ルーティング設定コマンドを実行
以下のコマンドを実行してルーティングを設定します。
# route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.10.2 ens192
routeコマンドで設定を確認します。
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens160
164.70.0.0 0.0.0.0 255.255.240.0 U 100 0 0 ens160
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 ens192
192.168.100.0 192.168.10.2 255.255.255.0 UG 0 0 0 ens192
VPN経由での通信疎通の確認
正しくルーティングされているかどうかを確認します。
まず手元側のマシンから、サーバーのVPN接続側のIPアドレスにPINGを打ってみます。
$ ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10): 56 data bytes
64 bytes from 192.168.10.10: icmp_seq=0 ttl=62 time=53.303 ms
64 bytes from 192.168.10.10: icmp_seq=1 ttl=62 time=50.474 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=62 time=50.820 ms
^C
--- 192.168.10.10 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 50.474/51.532/53.303/1.260 ms
次にサーバー側から手元側のマシンにPINGを打ってみます。
# ping 192.168.100.2
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_seq=1 ttl=62 time=50.2 ms
64 bytes from 192.168.100.2: icmp_seq=2 ttl=62 time=47.3 ms
64 bytes from 192.168.100.2: icmp_seq=3 ttl=62 time=53.5 ms
SSHで接続できるかどうかも確認してみましょう。
$ ssh root@192.168.10.10
Last login: Sat Oct 29 22:06:57 2016 from 124.41.86.43
[root@localhost ~]#
これでサーバーにVPN経由で接続できるようになりました。
ルーティング設定をファイルに記述する
ルーティングの設定はシステムを再起動すると無効になってしまうので、再起動する度に設定されるようにファイルを記述しておきます。
/etc/sysconfig/network-scriptsディレクトリに「route-インターフェース名」というファイルを作成しておき、その中に以下のように記述しておきます。
[root@localhost ~]# cat /etc/sysconfig/network-scripts/route-ens192
192.168.100.0/24 via 192.168.10.2
設定が正しく適用されるか、システムを再起動して確認しておきましょう。