6.5 オフィスLANをSoftLayerへ延長するには

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
オフィスLANとSoftLayerのプライベートLANへ接続する方法は、Vyatta Gateway Applianceを用いる方法と、SoftLayerの標準サービスであるIPSec VPNを用いる方法とがあります。 ここでは、2つの接続方法を比較し、カスタマーポータルから設定できるIPSec VPNを用いる接続方法についてご紹介します。

（注意事項）
標準サービスのVPN IPSec の接続では、NAT-T (NATトラバーサル）をサポートしない方針が打ち出されています。
このため、ブロードバンドルーターのNAT配下のプライベートネットワークに配置した VyOSのルーターとVPNセッションが確立できなくなります。
NAT-Tを利用するケースでは、ベアメタルサーバーにVyatta を導入、または、Network Gateway Appliance を利用いただく必要があります。
 

オフィスLANを延長する2つの方法とその比較
ここではオフィスLANをSoftLayerへ接続するための2つの方法について、それぞれの特徴をご紹介します。

一つめの接続方法は、SoftLayerにVyattaのGateway Applianceを注文し、接続する方法です。 この方法には以下のような特徴があります。
 

本番環境での利用を想定
 専有の環境のため目的に合わせて柔軟な設定が可能（WebインターフェースまたはCLI経由）
ファイアウォールも含めた設定、アプライアンス管理が必要
専有のネットワーク帯域を確保できるため、安定した通信が可能（10Gbpsのアップリンクをサポート）
豊富なパブリックアウトバウンド通信無料枠（20TB/月、無料枠を超えると通信料は従量課金）
冗長構成を組んで作成することが可能

以下は、Vyattaを用いる場合の構成図です。

2つめの接続方法は、SoftLayerが共通設備として提供しているIPSec VPNを注文し、接続する方法です。 この方法には以下のような特徴があります。
 

あくまで管理用途での利用を想定
カスタマーポータルから容易に設定可能
ファイアウォールの設定、SoftLayer側の管理が不要
共有のネットワーク帯域のため、通信帯域が限られる
通信量に関わらず、通信料は固定料金制
冗長構成はとられていない


以下は、SoftLayerのIPSec VPNサービスを用いる場合の構成図です。



以降では、カスタマーポータルから容易に設定できるSoftLayerのIPSec VPNを利用する方法について詳しくご紹介します。
 

構築するネットワークの構成
以降で構築するネットワークの構成は次図の通りです。 構築するネットワークではSoftLayerのIPSec VPNとオフィスLANのVyOS PCルーターとの間でVPN接続します。 このVPN接続によって、SoftLayerの10.112.33.65/26とオフィスLANの192.168.1.0/24の間で通信可能になります。

VyOSとはVyatta Coreから派生して開発が続けられているオープンソースのソフトウェア・ルーターです。 詳しくはVyOSのホームページ( http://vyos.net )をご参照お願いします。 ここではVyOSをPCにインストールして、VPNルーターとして利用します。


IPSec VPNの注文方法
オフィスLANをSoftLayerのIPSec VPNサービスを用いてSoftLayerのプライベートLANに接続するために、まずIPSec VPNサービスをカスタマーポータルから注文します。

注文のために、まずカスタマーポータルのメニューバーから「Network」->「IPSec VPN」をクリックします。

表示される画面の右上にある「Order IPSec VPN」をクリックします。

次にデータセンターと支払い方法を選択します。 ここでは、オフィスから接続したいインスタンスがあるデータセンターを選択します。 「Continue」をクリックすると確認画面が表示されますので、注文内容を確認し、注文を実行します。

注意点として、IPSec VPNで選択したデータセンターと別のデータセンターにあるインスタンスに接続するにはVLAN spanを注文があります。
 

SoftLayer側のIPSec VPNの設定方法
注文したIPSec VPNサービスに対して、オフィスLANをSoftLayerのプライベートLANへ接続するための設定をします。 設定はカスタマーポータルから行います。 オフィスLANと接続するために最低限必要な設定は以下の4箇所です。
(1) Remote Peer Address: オフィスのPCルーターのグローバルIPアドレス
(2) Preshared Key: 共有鍵(パスワード)で、0〜9、A〜Z、a〜zから成る文字列
(3) Customer Subnets: オフィス側のサブネットアドレス
(4) Hosted Private Subnets: SoftLayer側のプライベートサブネットアドレス

「Hosted Peer Address」はオフィス側のPCルーターの設定の際に必要になりますので、メモします。 また、「Hosted Service Subnets」はDNSやiSCSIなどの基盤サービスのサブネットです。 今回は初期値のまま設定を進めます。

上記(1)のRemote Peer Addressの設定については次の注意点があります。 IPSec VPNを用いる方法ではRemote Peer Addressに任意を示す0.0.0.0を設定できません。 また、インターネット・プロバイダーの加入者のルーターは、動的にIPアドレスが付与されます。 このため、IPアドレスが変わる度にRemote Peer Addressにインターネット・ルーターのIPアドレスを直接設定する必要があります。 これを避けるためには、Vyattaを用いてVPN接続するといいでしょう。

オフィス側のVyOS PCルーターの設定方法
オフィスに設置するVyOSのPCルーターに対して、SoftLayerのIPSec VPNサービスへ接続するための設定をします。 最低限設定が必要なのは以下の6箇所です。
(1) Hosted Peer Addressに表示されるIPアドレス、SoftLayer側の共用VPNルーターのIPアドレス
(2) オフィス側のインターネット・ルーターへのデフォルトGWアドレス、YahooBBルーターのIPアドレス
(3) Perfect forward secrecy(FPS)を無効にする
(4) SoftLayer上の行き先Privateアドレス
(5) SoftLayer側で設定した共有鍵
(6) 上記(4)と同じサブネットアドレス
 
```
vyos@slgw# show
firewall {
     all-ping enable
     broadcast-ping disable
     config-trap disable
     ipv6-receive-redirects disable
     ipv6-src-route disable
     ip-src-route disable
     log-martians enable
     name VpnFw {
         default-action drop
         enable-default-log
         rule 100 {
             action accept
             source {
                 address 192.168.1.0/24
             }
         }
         rule 120 {
             action accept
             source {
                 address 5.10.127.7     <-- (1) SoftLayerのロンドンDCのVPNルータアドレス
             }
         }
     }
     receive-redirects disable
     send-redirects enable
     source-validation disable
     state-policy {
         established {
             action accept
         }
         related {
             action accept
         }
     }
     syn-cookies enable
}
interfaces {
     ethernet eth0 {
         duplex auto
         hw-id 00:02:2F:e0:Fb:47
         smp_affinity auto
         speed auto
     }
     ethernet eth1 {
         address 192.168.1.2/24
         description OUTSIDE
         duplex auto
         firewall {
             local {
                 name VpnFw
             }
         }
         hw-id 00:1c:cF:dF:04:03
         smp_affinity auto
         speed auto
     }
     loopback lo {
     }
}
service {
     ssh {
         port 22
     }
}
system {
     config-management {
         commit-revisions 20
     }
     console {
         device ttyS0 {
             speed 9600
         }
     }
     domain-name linux.bogus
     gateway-address 192.168.1.1   <-- (2) インターネット・ルーターのアドレス
     host-name slgw
     login {
         user vyos {
             authentication {
                 encrypted-password **********************************
             }
             level admin
         }
     }
     name-server 192.168.1.1
     ntp {
         server 0.pool.ntp.org {
         }
         server 1.pool.ntp.org {
         }
         server 2.pool.ntp.org {
         }
     }
     package {
         auto-sync 1
         repository community {
             components main
             distribution hydrogen
             password ""
             url http://packages.vyos.net/vyos
             username ""
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
         }
     }
     time-zone UTC
}
vpn {
     ipsec {
         esp-group ESP-1E {
             compression disable
             lifetime 1800
             mode tunnel
             pfs disable     <--  (3) SoftLayerのポータルの設定に合わせる
             proposal 1 {
                 encryption aes256
                 hash sha1
             }
             proposal 2 {
                 encryption aes128
                 hash sha1
             }
         }
         ike-group IKE-1E {
             lifetime 3600
             proposal 1 {
                 encryption aes256
                 hash sha1
             }
             proposal 2 {
                 encryption aes128
                 hash sha1
             }
         }
         ipsec-interfaces {
             interface eth1
         }
         nat-networks {
             allowed-network 10.112.33.64/26 {  <-- (4) SoftLayer上の行先Privateアドレス
             }
         }
         nat-traversal enable
         site-to-site {
             peer 5.10.127.7 {
                 authentication {
                     mode pre-shared-secret
                     pre-shared-secret 1234567890  <-- (5) SoftLayerのポータルの設定に合わせる
                 }
                 connection-type initiate
                 default-esp-group ESP-1E
                 ike-group IKE-1E
                 local-address 192.168.1.2
                 tunnel 2 {
                     allow-nat-networks disable
                     allow-public-networks disable
                     local {
                         prefix 192.168.1.0/24
                     }
                     remote {
                         prefix 10.112.33.64/26  <-- (6) SoftLayer上の行先Privateアドレス
                     }
                 }
             }
         }
     }
}
[edit]
```

VPNセッションの確認
オフィスに設置しているVyOS PCルーターとSoftLayerのIPSec VPNサービスとが接続できるか確認します。 オフィス側のVyOS PCルーターから以下のようにコマンドを実行し確認します。 鍵交換とIPSecの両方で「State」が「up」になっていれば、VPNセッションが確立されています。
 
```
vyos@slgw:~$ sh vpn ike sa
Peer ID / IP                            Local ID / IP
------------                            -------------
5.10.127.7                              192.168.1.2

    State  Encrypt  Hash  D-H Grp  NAT-T  A-Time  L-Time
    -----  -------  ----  -------  -----  ------  ------
    up     aes256   sha1  5        yes    757     3600
 

vyos@slgw:~$ sh vpn ipsec sa
Peer ID / IP                            Local ID / IP
------------                            -------------
5.10.127.7                              192.168.1.2

    Tunnel  State  Bytes Out/In   Encrypt  Hash  NAT-T  A-Time  L-Time  Proto
    ------  -----  -------------  -------  ----  -----  ------  ------  -----
    2       up     0.0/0.0        aes128   sha1  yes    973     1800    all
```

オフィスとSoftLayerのサーバーの接続テスト
オフィスのWindows PCからVPNとSoftLayerのプライベートLANを経由してSoftLayer内のサーバーへVPN経由で接続できることを確認します。まず、オフィスのPCからVPN経由でSoftLayerへ向かうルーティングを追加するために、以下のコマンドを実行します。
 
```
C:Windowssystem32>route -p add 10.112.33.64 mask 255.255.255.192 192.168.1.2
```

ここでは次の図に示すようにインスタンスがあるとします。 VPN経由でインスタンスに接続するためには、図中の「Private IP」に表示されているIPアドレスを使用します。

以下は、server1からserver4のそれぞれに対してオフィスのWindows PCからpingを実行した結果です。 ここまで、サーバー側ではスタティック・ルーティングを設定していません。 しかしNATが自動的に設定されているため、オフィスのPCとインスタンスは問題なく疎通します。
 
```
C:Program FilesMicrosoft SDKsWindowsv7.1>ping 10.112.33.68

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

10.112.33.68 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 279ms、最大 = 292ms、平均 = 282ms

C:Program FilesMicrosoft SDKsWindowsv7.1>ping 10.112.33.69

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

10.112.33.69 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 279ms、最大 = 280ms、平均 = 279ms

C:Program FilesMicrosoft SDKsWindowsv7.1>ping 10.112.33.70

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

10.112.33.70 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 279ms、最大 = 280ms、平均 = 279ms

C:Program FilesMicrosoft SDKsWindowsv7.1>ping 10.112.33.71

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

10.112.33.71 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 279ms、最大 = 279ms、平均 = 279ms
```

以下はServer1へログインし、「w」コマンドと「netstat -nr」コマンドを実行した結果です。 「w」コマンドの「FROM」からわかるように、ログイン元となるオフィスのPCのIPアドレスはNATによって10.2.222.12に変換されています。 また、「netstat -nr」 の結果から以下の2つのことが分ります。
(1) デフォルトゲートウェイはインターネットのアドレス範囲である5.10.103.16
(2) プライベートアドレスの10.0.0.0のゲートウェイは、10.112.33.65


以下はインターネットに接続していないServer4へログインし、先の図と同様に「w」コマンドと「netstat -nr」コマンドを実行した結果です。 先のServer1との違いは、デフォルトゲートウェイが10.0.0.0のゲートウェイルーターと同じアドレスになっていることです。 これはつまり、このインスタンスからインターネット側へパケットが流れることがないことを示します。 社内向けサービスをSoftLayerのインスタンスから提供する場合などは、このようにすると社内から安全に接続できると考えられます。

最後に、オフィスのPCからServer4までの経路を「tracert」コマンドで出力した結果を示します。 VPN区間を除き、東京からロンドンまで3ホップで接続されていることが分ります。


```
C:Program FilesMicrosoft SDKsWindowsv7.1>tracert 10.112.33.71

10.112.33.71 へのルートをトレースしています。 経由するホップ数は最大 30 です

  1    <1 ms    <1 ms    <1 ms  192.168.1.2
  2     *        *        *     要求がタイムアウトしました。
  3     *        *        *     要求がタイムアウトしました。
  4     *        *        *     要求がタイムアウトしました。
  5   279 ms   280 ms   279 ms  10.112.33.71
```

トレースを完了しました。