[さくらのクラウド] さくらのクラウドで月1900円の固定IP環境を構築する(L2TP/IPSec編)

さくらのクラウドの仮想サーバにソフトウェアルータVyattaでゲートウェイを構築して、固定IP環境を安価に構築してみました。
gfx
Webサーバの改竄が続いていますが、改竄対策の一つとしてFTPの接続元IPを制限する方法があります。しかし動的IPのプロバイダを使用していたり、外部からモバイルルータを使用する場合には、接続元IPを固定するのは困難です。この時利用できるのが本記事の方法です。


固定IPでアクセスできる環境を構築するため、PCからの接続をクラウド上の仮想サーバを経由して接続する環境を構築します。仮想サーバ上では、ソフトウェアルータのVyattaを使用します。このソフトウェアルータは高機能で無償版もあるため人気があります。
今回クラウドにはさくらのクラウドを使用しました。クラウドサービスは各社提供していますが、さくらのクラウドでは、管理画面が日本語化されいるためわかりやすく、今回使用するVyattaが予め用意されているので簡単に構築できます。また仮想サーバを月1900円からと、安価に利用できます。

今回の構成図は次のとおりです
sakura_on_vyatta_l2tp

  1. さくらのクラウド上の仮想サーバにソフトウェアルータVyattaの環境を構築します。この仮想サーバには2つのネットワークインターフェースがありeth0はインターネットに接続し、eth1はプライベートネットワークに接続しています。
  2. PCから仮想サーバにVPN(L2TP/IPsec)で接続します。接続時には仮想サーバから10.200.0.200のIPアドレスが付与され、あたかも仮想サーバのプライベートネットワーク(eth1側)に存在するPCのように振る舞います。
  3. VPN経由し外部に接続すると、外部のサーバ(たとえばWebサーバ)からはあたかも仮想サーバから接続しているように見えます。

それでは実際に構築してみます。
説明の中では、以下の設定情報を使用します。設定する環境に合わせて変更してください、

  • eth0(インターネット側)IPアドレス 133.242.y.z
  • eth0ゲートウェアアドレス 133.242.y.1
  • eth1(プライベート側)IPアドレス 10.200.0.1
  • リモート接続用のアドレスプール 10.200.0.200-209

手順は以下のとおりです。

  1. さくらのクラウド上の仮想サーバの構築
  2. Vyattaの設定
  3. Mac OSXによるL2TP/IPSecの設定および動作確認

【1. さくらのクラウド上の仮想サーバの構築】
※構築には、さくらインターネットの通常のアカウントの他、さくらのクラウドのアカウントが必要です。HTML5対応のブラウザで操作することを推奨します。

vyatta_on_sakura_l2tp01
ログオン後、グローバルメニューの「サーバ」をクリックします。

vyatta_on_sakura_l2tp02
サーバ一覧が表示されます。上部の「追加」をクリックします。

vyatta_on_sakura_l2tp03
追加する仮想サーバの設定内容が表示されます。
ここでは以下のとおり設定します。

[設定]タブ
ゾーン: 「is1a」(初期値)
CPU: 「1」
メモリ: 「1GB」
ディスク: 「作成」
ディスクプラン: 「標準プラン」
ディスクインターフェース: 「IDE」
ディスクソース: 「アーカイブ」
アーカイブ選択: 「20GB Vyatta Core 6.5R1 32bit (6rd対応)」
ディスク修正: 「はい」
ホスト名: 特に指定は必要ありません。
パスワード: 任意のパスワードを指定します。Vyattaにログインする際に使用します。
公開鍵: 「なし」
NIC: 「インターネットに接続」
インターネットに接続: 「1IP共有セグメント/100Mbpsベストエフォート」
etc: どちらも選択しないでください。

vyatta_on_sakura_l2tp04

[情報]タブ
名前: 任意ですが、サーバ一覧画面でわかりやすくするために設定することをお勧めします。(ここではgw1としました)
説明: 任意です。特に入力しなくても問題ありません。
タグ: 任意です。特に入力しなくても問題ありません。 
アイコン: 任意

ここまで入力が完了したら、右上の「作成」をクリックします。
その後確認画面が表示されますので、「作成」をクリックします。

vyatta_on_sakura_l2tp06
サーバ作成中は上記が表示されます。すべて完了すると、ステータスが「成功」になり、右下にサーバ追加:完了と表示されます。

vyatta_on_sakura_l2tp07
左側の一覧をクリックすると、作成されたサーバが表示されます。先ほど作成したサーバ(ここではgw1)が表示されていますのでそのサーバをダブルクリックします。

vyatta_on_sakura_l2tp08
コンソールが表示されます。ここで「NIC」をクリックします。

vyatta_on_sakura_l2tp09
仮想サーバのネットワークインターフェースが表示されます。
ここではIPアドレス、ゲートウェイアドレスを控え(後ほど使用します)、右下の「追加」をクリックします。
その後確認画面が表示されますので、「追加」をクリックします。
インターフェースが追加されましたら「閉じる」をクリックします。

vyatta_on_sakura_l2tp12
ネットワークインターフェースに未接続と書かれたインターフェースが追加されているのが確認できます。

vyatta_on_sakura_l2tp13
それでは実際に仮想サーバを起動します。右上の「DOWN:電源操作」をクリックし、プルダウンから「起動」を選択します。

vyatta_on_sakura_l2tp14
「モニタ」タブをクリックすると黒い画面が表示されます。こちらが仮想サーバのリモートスクリーンになります。様々な情報が表示されて Vyatta login: と表示されましたら起動完了です。

【2. Vyattaの設定】
先ほど構築した仮想サーバのVyattaに、eth1の設定、NATの設定、L2TP/IPSecの設定を行います。Vyattaの設定はブラウザのリモートスクリーンから行います。

左上の「リモートスクリーンに接続」から「HTML5モード」を選択します。これでコンソールが操作できるようになります。

Vyatta login: に「vyatta」と入力し、Password: に仮想サーバ作成時にVyattaのパスワードを入力します。

ログインが成功すると vyatta@vyatta:~$ と表示されます。(これをプロンプトと呼びます)
プロンプトの最後が$の時は一般モードですので設定ができません。設定するためには「configure」コマンドを実行します

configure

設定モードに変更されるとプロンプトが vyatta@vyatta# と表示されます。

vyatta@vyatta# 

■eth1設定
eth0は仮想サーバ構築時に設定されますが、eth1は設定されておりません。
したがってここで設定します。

set interface ethernet eth1 address 10.200.0.1/24

■NAT設定
VPN接続する場合IPはプライベートIPが付与されますので、NAT設定を行います。ここではIP Masqueradeの設定をします。

set nat source rule 999 outbound-interface eth0
set nat source rule 999 translation address masquerade

■L2TP/IPSecの設定
続いて、L2TP/IPsecの設定を行います。

下の設定内容のうち、()内の値は読みかえてください

L2TPユーザー名/L2TPパスワード
 接続するユーザー毎に指定することをお勧めします。
IPsec事前共有鍵
 任意のものを指定します。
133.242.y.z(仮想サーバ eth0 のIPアドレス)
133.242.y.1(仮想サーバ eth0 のゲートウェアIPアドレス)
 仮想サーバのNICタブで確認できます。

set vpn ipsec ipsec-interface interface eth0
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
set vpn ipsec nat-traversal enable

edit vpn l2tp remote-access
set authentication local-users username (L2TPユーザー名) password (L2TPパスワード)
set authentication mode local
set client-ip-pool start 10.200.0.200
set client-ip-pool stop 10.200.0.209
set dns-server server-1 133.242.0.3
set dns-server server-2 133.242.0.4
set ipsec-settings authentication mode pre-shared-secret
set ipsec-settings authentication pre-shared-secret (IPsec事前共有鍵)
set mtu 1280
set outside-address (133.242.y.z)
set outside-nexthop (133.242.y.1)

■設定の反映および保存
ここまで入力した時点で設定内容を反映させるために「commit」コマンドを入力します。
commit後、設定内容を保存しますので「save」コマンドを入力します。

以上で、設定は完了です。

【3. Mac OSXによるL2TP/IPSecの設定および動作確認】
ここではMac OSXでL2TP/IPSecで先ほど構築した仮想サーバに接続する設定を行います。

mac_l2tp01
システム環境設定を選択します。

mac_l2tp02
ネットワークをクリックします。

mac_l2tp03
左下の「+」をクリックします。

mac_l2tp04
以下の値を選択・入力して、「作成」をクリックします。
インターフェス: 「VPN」を選択
VPNタイプ: 「L2TP over IPSec」を選択
サービス名: 任意の名前を入力します。

mac_l2tp06
VPNインターフェースが作成されますので、サーバアドレス、アカウント名を設定します。
以下の値を入力して、「認証設定」をクリックします。
サーバアドレス: 仮想サーバのeth0のIPアドレス
アカウント名: L2TPユーザー名

mac_l2tp07
認証情報として以下の値を入力し、「OK」をクリックします。
ユーザー認証 パスワード: L2TPパスワード
コンピュータ認証 共有シークレット: IPSec事前共有鍵
続いて、「詳細」をクリックします。

mac_l2tp08
セッションオプションの「すべてのトラフィックをVPN接続経由で送信」をチェックを入れて、「OK」をクリックします。このチェックを入れない場合にはプライベートアドレス宛ての接続のみがVPNを経由しますので注意が必要です。

mac_l2tp09
「接続」をクリックしてしばらくすると状況が接続済みと表示され接続が完了します。
接続に失敗する場合には、接続先のIPアドレス、アカウント名、パスワード、IPSec事前共有鍵を再確認してください。

mac_l2tp10
「メニューバーにVPNの状況を表示」をクリックしておくと、メニューバーに接続状態と接続時間が表示されますので便利です。メニューバー上から接続・切断も可能です。

mac_l2tp11
ブラウザで確認くん(http://www.ugtop.com/spill.shtml)を開くと、IPアドレスが表示されます。このIPアドレスが仮想サーバのものであれば正常に仮想サーバ経由で接続できていることが確認できます。

Mac OSXのほか、iPhone/Androidでも接続可能です。Windows PCの場合レジストリ変更が必要となりますので注意が必要です(機会を見て記事を書こうと思っています)

このように比較的手軽に環境構築ができます。またさくらのクラウドは1日単位で課金されますので、必要に応じて管理画面から起動してから接続すると言ったこともできます。月1900円から利用できますので、是非活用してみてください。

この記事を書くにあたって参考にさせていただいたURL
「さくらのクラウド」におけるVyattaの活用事例
http://www.slideshare.net/sakuranocloud/20130405-jvumpost

参考にさせていただいた書籍
「Vyatta入門」