本文へジャンプします。

【シンプルVPN】RHEL6.7をVPNクライアントとしてニフクラからオンプレに接続してみる

こんにちは、ニフティクラウド シンプルVPNチームです。
今回は、シンプルVPNのリモート接続サービスを用いて、RHEL 6.7 をサービスアダプターのあるオンプレミス環境にVPN接続してみたいと思います。

はじめに

シンプルVPN リモート接続サービス とは、サービスアダプターというVPN専用機器を用いることで、拠点と遠隔地を簡単に接続することができるサービスです。
VPNルーターやVPNサーバーを用意する必要もなく、VPNに関する知識がほとんどない方でも簡単にVPNを構築することができてしまいます。
従来はPCやモバイル端末などから拠点へのVPN接続が可能でしたが、2017年6月27日に、ニフティクラウドサーバー(Windows Server 2012 R2/RDS、Ubuntu 16.04、RHEL 6.7)からもVPN接続が可能になりました。
今回はRHEL 6.7 をVPNクライアントとしてニフティクラウド(以降ニフクラ)からVPN接続してみたいと思います(図1↓)。

図1. おおまかな構成イメージ

図1. おおまかな構成イメージ

前提

本ブログ記事では、主に以下のような方を対象としています。

  • Linuxの基本操作ができる方
  • 簡単安価にオンプレ環境とニフクラ環境をVPN接続したい方

シンプルVPN利用中であれば数分で拠点とサーバー間のVPN接続が可能になります。
まだ利用中でなくとも、基本的な部分は一般的なVPNクライアントの構築手順と変わらないので、そちらにご興味がある方も是非ご一読ください。

RHEL 6.7 VPN接続設定

シンプルVPNリモート接続サービスでは、L2TP/IPsecでVPN接続を行いますので、今回は strongSwan と xl2tpd というミドルウェア(OSS)を用いて、L2TP/IPsec を実現します。
ということで、まずこの2つをインストールします。

# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install strongswan-5.4.0-2.el6.x86_64
# yum -y install xl2tpd-1.3.8-1.el6.x86_64

最初のコマンドはEPELリポジトリをインストールしています。これは yum で strongSwan と xl2tpd をインストールするためのものと考えてください。
インストールが完了したら、それぞれの設定をしていきましょう。

strongSwan 設定

strongSwan は IPsec接続を実現しますので、このセクションでは IPsec に関する設定をしていきます。

ipsec.conf 編集

まずは /etc/strongswan/ipsec.conf なる IPsec の設定ファイルを編集します。
とりあえず安全のためバックアップを取っておきます。

# cp -ip /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.`date +%Y%m%d`

実際に編集していきます。

# vi /etc/strongswan/ipsec.conf

vi コマンドでファイルを開き、以下を最後に追加します。

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    authby=secret
    rekey=no
    keyingtries=3
    type=transport
    keyexchange=ikev1
    left=%defaultroute
    leftprotoport=17/1701
    rightprotoport=17/1701
    auto=add
    ike=3des-sha1-modp1536
    esp=3des-sha1

conn {ipsec:任意の名前}
    right={接続先IPアドレス}

{ipsec:任意の名前}にはお好きな名前を入力してください。
後々の手順でこの名前を指定しますので、メモを取っておくと良いでしょう。
{接続先IPアドレス}については、ニフクラコンパネから、リモート接続サービスの設定画面(図2参照)を開き、赤枠の部分のFODNをIPアドレスにして入力してください。

図2. 接続先アドレスの参照

図2. 接続先アドレスの参照


また、FQDNからIPアドレスへの変換は、ここから確認できます。
※nifty法人IDとパスワードでログインする必要があります。
以降{接続先IPアドレス}とあったら同じものを入力してOKです。

ipsec.secrets 新規作成

次に、/etc/strongswan/ipsec.secrets というファイルを作成します。

# vi /etc/strongswan/ipsec.secrets

このファイルには、IPsec接続に使う「事前共有キー」というものを書いておきます。
「secrets」というファイルには他人に公開すべきでない情報が入るのですね。

{接続先IPアドレス} %any : PSK "{事前共有キー}"

{事前共有キー}は、{接続先IPアドレス}と同じ画面に書いてあります(図3参照)ので、これをそのまま書いちゃいます。

図3. 事前共有キーの参照

図3. 事前共有キーの参照


これで strongSwanの設定は終わりです。

xl2tpd 設定

続いて xl2tpd の設定をしていきます。
xl2tpd はその名の通りL2TPを実現するOSSですね。

xl2tpd.conf 編集

最初に /etc/xl2tpd/xl2tpd.conf なる設定ファイルを編集します。
ipsec.conf 編集と同じようにバックアップを取ってから vi で開きます。

# cp -ip /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.`date +%Y%m%d`
# vi /etc/xl2tpd/xl2tpd.conf

まずは、以下のように[lns default]の配下にある行をすべて”;”でコメントアウトします。

[lns default]
;ip range = 192.168.1.128-192.168.1.254
;local ip = 192.168.1.99
;require chap = yes
;refuse pap = yes
;require authentication = yes
;name = LinuxVPNserver
;ppp debug = yes
;pppoptfile = /etc/ppp/options.xl2tpd
;length bit = yes

そしたら、ファイルの末尾に以下を追加します。

[lac {xl2tpd:任意の名前}]
lns = {接続先IPアドレス}
require chap = yes
refuse pap = no
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.{ppp:任意のファイル名}
length bit = yes

{xl2tpd:任意の名前}と{任意のファイル名}にはお好きな名前を設定してください。
この後すぐ使いますので、覚えるかメモしておきましょう。

options.{ppp:任意のファイル名} 編集

次に、pppの設定ファイルを編集していきます。
1つ前の手順(xl2tpd の設定ファイルの編集)で、以下を設定しましたが、
pppoptfile = /etc/ppp/options.{ppp:任意のファイル名}
これがpppの設定ファイルになっていますので、編集します。

# vi /etc/ppp/options.{ppp:任意のファイル名}

以下をファイルの最後に追加してください。

name {リモート接続アカウント名}
ipcp-accept-local
ipcp-accept-remote
netmask 255.255.255.0
noauth
crtscts
mtu 1410
mru 1410
defaultroute
refuse-chap
lock
proxyarp
ipparam monitor
logfile /var/log/xl2tpd/{log:任意のファイル名}
refuse-chap

{リモート接続アカウント名}も、{接続先IPアドレス}などと同じ画面から確認できます(↓図)。

図4. リモート接続アカウント名の参照

図4. リモート接続アカウント名の参照


まだアカウントがない場合は、「リモート接続アカウント追加」というボタンからポチッと作っちゃってください(月額1000円/アカウントなので作りすぎにご注意!)
また、{log:任意のファイル名}には任意のファイル名を入力してください。ログファイルのディレクトリがまだないので、ここでついでに作成しておきます。

# mkdir /var/log/xl2tpd

pap-secrets 編集

ところで、{リモート接続アカウント名}に対するパスワードもどこかのファイルに書いておく必要があります。
というわけで、/etc/ppp/pap-secrets なるファイルを開いてそこに書きます。

# vi /etc/ppp/pap-secrets

# client server secret IP addresses と書かれた行があるので、その下に以下のように1行追加します。

# client server secret IP addressses
"{リモート接続アカウント名}" "{リモート接続アカウント名}" "{リモート接続パスワード}" *

{リモート接続アカウント名}は先ほど確認したとおりで、{リモート接続パスワード}は対応するパスワードになります。

ip-up.local 新規作成

最後に、/etc/ppp/ip-up.local なるファイルを作成します。
これは、ppp接続が確立したのちに実行される bashファイルです。
ルーティング テーブルにppp接続の経路情報を追加するための処理を書き込んでおきます。
vi コマンドでファイルを作成して、

# vi /etc/ppp/ip-up.local

以下を追加します。

#!/bin/bash
case "$6" in
monitor)
sbin/route add -net ${4%.*}.0 netmask 255.255.255.0 gw $4
echo
;;
esac

ここで注意なのですが、以下のネットマスクの設定の部分、
netmask 255.255.255.0
これは、ご自身のローカルネットワークのサブネットマスク値を設定してください。

そして、作成したファイルを実行可能にしておきます。

# chmod 755 /etc/ppp/ip-up.local

これにて xl2tpd の設定も終了となります、お疲れ様です。

接続開始

ここまでで接続設定は全て終了したので、接続を開始していきます。

strongSwan, xl2tpd 起動

まずは strongSwan と xl2tpd を起動して行きましょう。
strongSwan を以下のコマンドで起動します。

# chkconfig strongswan on
# chkconfig --list strongswan
# service strongswan start

2行目の実行で以下の出力が出ることを確認してください。

strongswan 0:off 1:off 2:on 3:on 4:on 5:on 6:off

次に同じようにして xl2tpd を起動します。

# chkconfig xl2tpd on
# chkconfig --list xl2tpd
# service xl2tpd start

2行目の実行で以下の出力が出ることを確認します。

xl2tpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

L2TP/IPsec 接続確立

2つとも起動したらいよいよVPN接続を開始しましょう。
ここでようやくメモしておいた名前を使います。
以下のコマンドで IPsec 接続を確立して、

# strongswan up {ipsec:任意の名前}

出力の末尾に以下があることを確認します。

connection '{ipsec:任意の名前}' established successfully

そして、L2TP接続を以下のコマンドで確立します。

# xl2tpd-control connect {xl2tpd:任意の名前}

↑このコマンド、何故かこの xl2tpd のバージョンのデフォルトだと標準出力がないので、コマンドが成功したかどうかを一応確認しておきます(以前のバージョンだと 00 OK って言ってくれたのですが…)。

# echo $?

0と表示されれば、L2TP接続もOKです。
これでL2TP/IPsec接続、つまり、VPN接続が確立したはずです!

動作確認

最後に、本当にローカルネットワークとVPN接続されているのか確認しておきましょう。

まずは、pppインターフェースが作成されているかを確認してみます。

# ip a | grep ppp

以下の出力が確認できるはずです。

11: ppp0:  mtu 1410 qdisc pfifo_fast state UNKNOWN qlen 3
link/ppp
inet 192.168.11.103 peer 1.0.0.1/32 scope global ppp0

ここで、以下の部分はDHCPサーバーが ppp0 NIC に割り当てたローカルIPアドレスですので、一致している必要はありません。

inet 192.168.11.103

次に、route経路が作成されたかを確認してみます。

# route -n

出力された経路情報の中に、以下のような行があることが確認できるはずです。

192.168.11.0 192.168.11.103 255.255.255.0 UG 0 0 0 ppp0

目的地(オンプレミス環境)のネットワークが 192.168.11.0/24 で、GW(ppp0 NIC)のIPアドレスが 192.168.11.103 である場合の出力例ですね。

以上の2つの確認がとれれば基本的にOKですが、最後にダメ押しで ping を飛ばして確認しておきましょう。

# ping {オンプレミス環境内のルーターやホストのIPアドレス}

レスポンスがあれば確実にVPN接続されていることになりますね~。

最後に

本ブログ記事では、シンプルVPNのリモート接続サービスを使って、ニフクラサーバー環境の RHEL 6.7 をサービスアダプターのあるオンプレミス環境にVPN接続してみました。
これでクラウドとオンプレミス環境間でファイルのやり取りや遠隔メンテナンスなどが安全にできるようになります。
簡単でしたよね?

最後まで読んでいただきありがとうございました!

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています