fbpx

CL LAB

HOME > CL LAB > softlayer > ソフトウェアルータVyattaとVyOSを用いてSoftLayerとオフィスをIPsec VPN接続する #softlayer

ソフトウェアルータVyattaとVyOSを用いてSoftLayerとオフィスをIPsec VPN接続する #softlayer

 ★ 105

VyOS とは

VyOS とは、オープンソースで開発されているソフトウェアルータです。Debian GNU/Linux をベースとし、ルータとして動作するためのさまざまなソフトウェアや管理用のコマンドが搭載されています。

VyOS は Vyatta から派生したソフトウェアルータです。Vyatta は当初、米 Vyatta 社によってオープンソースで開発され、有償版と無償版が提供されていました。Vyatta 社が米 Brocade 社によって買収された後、無償版の開発は中止され、その無償版 Vyatta から分岐した VyOS の開発が始まりました。

SoftLayer では仮想サーバの OS に無償版の Vyatta を選択し、ソフトウェアルータとして活用することができます。なお、SoftLayer では無償版の Vyatta 以外に、Brocade 社による有償版の Vyatta の利用もできます。こちらは HA 構成などが可能なベアメタルサーバですがやや高価であるため、IPsec VPN 自体の検証を目的とする本項で取り扱いません。

IPsec VPN とは

SoftLayer が提供している VPN にはさまざまなプロトコルがあり、そのうち無料で利用できる VPN として SSL-VPN と PPTP-VPN があります。どちらも暗号化 VPN トンネルを介して SoftLayer のプライベートネットワークに接続し、サーバの管理を行うことができます。

しかし、SSL-VPN はブラウザベースであるためリモートアクセス用途という側面が強く、PPTP-VPN も元々はクライアントとサーバの接続に考案された形態のため、拠点間接続には都合が悪い場合があります。

IPsec VPN はルータ同士を IPsec で暗号化接続する形態で、拠点間接続に特化した方式と言えます。SoftLayer でも IPsec VPN を提供しています。しかし、Question about SoftLayer Standard IPSec offering によると、この SoftLayer 標準の IPsec はあくまでもサーバの管理用で、実際の拠点間接続には向かないとの記載があります。

The customer uses Softlayer Standard IPSec (the one in customer portal) as the communication path of app integration. But they saw some issue with that.The technical guy on customer end did some troubleshooting and found source NAT is performed on Softlayer VPN gateway.

SoftLayer Standard IPSec offering in customer portal is for admin/management purpose only. It is not really for application integration, .e.g. customer VM to server on their corporate network.

そこで、当該ブログでも推奨されている通り、本項ではソフトウェアルータの Vyatta および VyOS を用いて SoftLayer とオフィスを IPsec VPN で接続してみます。

前提とする検証環境

SoftLayer とオフィスそれぞれの IPsec VPN ゲートウェイは、無償版 Vyatta および VyOS を用いて検証を行います。SoftLayer 側を有償版 Vyatta に置き換え、オフィス側を VyOS や Vyatta と通信可能なルータに置き換えても動作すると思われます。

オフィスはブロードバンドルータを介して不定の IP アドレスでインターネットに接続しており、KVM ホスト上の仮想ネットワークに VyOS を配置します。


softlayer-vyos-1

オフィス側

ブロードバンドルータ
グローバル側: xxx.xxx.xxx.xxx
プライベート側: 192.168.24.1

オフィス内 LAN
ネットワーク: 192.168.24.0/24
デフォルトゲートウェイ: 192.168.24.1 (ブロードバンドルータ)

KVM ホスト
オフィス内 LAN 側: 192.168.24.201
仮想ネットワーク側: 192.168.122.1

仮想ネットワーク
ネットワーク: 192.168.122.0/24
デフォルトゲートウェイ: 192.168.122.1 (KVM ホスト)

クライアントPC (Ubuntu 12.04 LTS)

プライベート側: 192.168.100.101 (eth1 のみ)

VyOS (1.0.4)

仮想ネットワーク側: 192.168.122.10
プライベート側: 192.168.100.10

SoftLayer 側

Vyatta (6.6 Community Edition)
グローバル側: 119.XXX.XXX.243 (eth1)
プライベート側: 10.110.42.196 (eth0)

プライベートネットワーク
ネットワーク: 10.110.42.192/26

プライベートネットワーク
ネットワーク: 10.110.42.192/26

サーバPC (CentOS 6 Minimal Install)

プライベート側: 10.110.43.197 (eth0 のみ)

オフィス側 VyOS のインストールと設定

VyOS のインストールは公式ドキュメントの Installation (日本語) を参照してください。本項ではドキュメントにあるようにほぼデフォルト設定で進めたことを前提としています。

インストールが完了したら、公式ドキュメントの Quick Start Guide (日本語版) を参照し、ネットワークの設定を行います。

vyos@vyos$ configure
[edit]
vyos@vyos#
vyos@vyos# show interfaces
 ethernet eth0 {
     hw-id xx:xx:xx:xx:xx:xx
 }
 ethernet eth1 {
     hw-id yy:yy:yy:yy:yy:yy
 }
 loopback lo {
 }
[edit]
vyos@vyos#

IPアドレスを設定します。先の前提とする環境から eth0 は 192.168.122.10、eth1 は 192.168.100.10 とします。

vyos@vyos# set interfaces ethernet eth0 address '192.168.122.10/24'
[edit]
vyos@vyos# set interfaces ethernet eth0 description 'OUTSIDE'
[edit]
vyos@vyos# set interfaces ethernet eth1 address '192.168.100.10/24'
[edit]
vyos@vyos# set interfaces ethernet eth1 description 'INSIDE'
[edit]
vyos@vyos#

vyos@vyos# show interfaces
 ethernet eth0 {
+    address 192.168.122.10/24
+    description OUTSIDE
     hw-id xx:xx:xx:xx:xx:xx
 }
 ethernet eth1 {
+    address 192.168.100.10/24
+    description INSIDE
     hw-id yy:yy:yy:yy:yy:yy
 }
 loopback lo {
 }
[edit]
vyos@vyos#

vyos@vyos# commit
[edit]
vyos@vyos#

vyos@vyos# show interfaces
 ethernet eth0 {
     address 192.168.122.10/24
     description OUTSIDE
     hw-id xx:xx:xx:xx:xx:xx
 }
 ethernet eth1 {
     address 192.168.100.10/24
     description INSIDE
     hw-id yy:yy:yy:yy:yy:yy
 }
 loopback lo {
 }
[edit]
vyos@vyos#

デフォルトゲートウェイを設定します。先の前提とする環境から 192.168.122.1 とします。

vyos@vyos# show system gateway-address
Configuration under specified path is empty
[edit]
vyos@vyos#

vyos@vyos# set system gateway-address 192.168.122.1
[edit]
vyos@vyos#

vyos@vyos# show system gateway-address
+gateway-address 192.168.122.1
[edit]
vyos@vyos#

vyos@vyos# commit
[edit]
vyos@vyos#

vyos@vyos# show system gateway-address
 gateway-address 192.168.122.1
[edit]
vyos@vyos#

eth1 側に NAT を設定します。クライアントPCを VyOS の eth1 側ネットワークから通信させるためです。

vyos@vyos# show nat
Configuration under specified path is empty
[edit]
vyos@vyos#

vyos@vyos# set nat source rule 100 outbound-interface 'eth0'
[edit]
vyos@vyos# set nat source rule 100 source address '192.168.100.0/24'
[edit]
vyos@vyos# set nat source rule 100 translation address 'masquerade'
[edit]
vyos@vyos#

vyos@vyos# show nat
+source {
+    rule 100 {
+        outbound-interface eth0
+        source {
+            address 192.168.100.0/24
+        }
+        translation {
+            address masquerade
+        }
+    }
+}
[edit]
vyos@vyos#

vyos@vyos# commit
[edit]
vyos@vyos#

vyos@vyos# show nat
 source {
     rule 100 {
         outbound-interface eth0
         source {
             address 192.168.100.0/24
         }
         translation {
             address masquerade
         }
     }
 }
[edit]
vyos@vyos#

リモートから操作できるように SSH サーバを22/tcpで起動します。

vyos@vyos# set service ssh port '22'
[edit]
vyos@vyos#

vyos@vyos# commit
[ service ssh ]
Restarting OpenBSD Secure Shell server: sshd.

[edit]
vyos@vyos#

設定を保存します。

vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@vyos#

以降この VyOS にはリモートから SSH 接続して作業を行います。

% ssh vyos@192.168.122.10
Welcome to VyOS
vyos@192.168.122.10's password:
Linux vyatta 3.3.8-1-amd64-vyatta #1 SMP Wed Oct 30 22:54:40 CET 2013 x86_64
Welcome to VyOS.
This system is open-source software. The exact distribution terms for
each module comprising the full system are described in the individual
files in /usr/share/doc/*/copyright.
Last login: Thu Jul  3 08:23:57 2014 from 192.168.122.1
vyos@vyos:~$

クライアントPCのインストールと設定

クライアントPCとなる仮想サーバには Ubuntu 12.04 LTS を用います。

IPアドレスとデフォルトゲートウェイを設定します。先の前提とする環境から eth0 は用いず、eth1 を 192.168.100.101、デフォルトゲートウェイは 192.168.100.10 (VyOS の eth1 側) とします。

ubuntu@ubuntu:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0

# The secondary network interface
auto eth1
iface eth1 inet static
    address     192.168.100.101
    netmask     255.255.255.0
    broadcast   192.168.100.255
    gateway     192.168.100.10
ubuntu@ubuntu:~$

オフィス側 VyOS の IPsec VPN 設定

IPsec の接続を確立にはいくつもの段階を踏みますが、ここでは省略します。また、IPsec の用語についても詳しい説明は省きます。詳細は IPsec の専門書等を参照してください。

まず IPsec を有効にするインターフェイスを VyOS のパブリック側の eth0 に設定します。

vyos@vyos# set vpn ipsec ipsec-interfaces interface eth0
[edit]
vyos@vyos#

NAT トラバーサルを有効にします。許可するネットワークは SoftLayer のプライベートネットワーク 10.110.42.192/26 です。

vyos@vyos# set vpn ipsec nat-traversal enable
[edit]
vyos@vyos# set vpn ipsec nat-networks allowed-network 10.110.42.192/26
[edit]
vyos@vyos#

IKE と ESP の設定

IKE (Internet Key Exchange) のグループ名を IKE-1-EAST とします。

vyos@vyos# set vpn ipsec ike-group IKE-1-EAST                      
[edit]
vyos@vyos#

1つ目の Proposal (提案) は暗号アルゴリズムを aes256、ハッシュアルゴリズムを sha1 とします。

vyos@vyos# set vpn ipsec ike-group IKE-1-EAST proposal 1 encryption aes256
[edit]
vyos@vyos# set vpn ipsec ike-group IKE-1-EAST proposal 1 hash sha1        
[edit]
vyos@vyos#

2つ目の Proposal は aes128sha1 とします。

vyos@vyos# set vpn ipsec ike-group IKE-1-EAST proposal 2 encryption aes128
[edit]
vyos@vyos# set vpn ipsec ike-group IKE-1-EAST proposal 2 hash sha1        
[edit]
vyos@vyos#

IKE の lifetime は 3600 とします。

vyos@vyos# set vpn ipsec ike-group IKE-1-EAST lifetime 3600
[edit]
vyos@vyos#

ESP (Encapsulated Security Payload) のグループ名を ESP-1-EAST とします。

vyos@vyos# set vpn ipsec esp-group ESP-1-EAST
[edit]
vyos@vyos#

ESP の Proposal は IKE と同様にします。

vyos@vyos# set vpn ipsec esp-group ESP-1-EAST proposal 1 encryption aes256
[edit]
vyos@vyos# set vpn ipsec esp-group ESP-1-EAST proposal 1 hash sha1        
[edit]
vyos@vyos#
vyos@vyos# set vpn ipsec esp-group ESP-1-EAST proposal 2 encryption aes128
[edit]
vyos@vyos# set vpn ipsec esp-group ESP-1-EAST proposal 2 hash sha1        
[edit]
vyos@vyos#

ESP の lifetime は 3600 とします。

vyos@vyos# set vpn ipsec esp-group ESP-1-EAST lifetime 3600
[edit]
vyos@vyos#

ピアリングの設定

SoftLayer 側の Vyatta と接続するための設定を行います。

接続先に SoftLayer 側の Vyatta のパブリック IP アドレス 119.XXX.XXX.243 を指定します。

vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243
[edit]
vyos@vyos#

認証モードに事前共有秘密 (pre-shared-secret) 方式を指定し、事前共有秘密として任意の文字列を設定します。事前共有秘密の文字列はピアリングする両者で一致していなければいけません。

vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 authentication mode pre-shared-secret
[edit]
vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 authentication pre-shared-secret PRE_SHARED_SECRET
[edit]
vyos@vyos#

先に設定した ESP-1-EASTIKE-1-EAST をそれぞれ指定します。

vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 default-esp-group ESP-1-EAST
[edit]
vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 ike-group IKE-1-EAST
[edit]
vyos@vyos#

オフィスの VyOS のパブリック側の IP アドレス 192.168.122.10 を指定します。

vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 local-address 192.168.122.10
[edit]
vyos@vyos#

トンネルのローカル側ネットワークはオフィスのプライベートネットワークアドレス 192.168.122.0/24 を、リモート側ネットワークは SoftLayer のプライベートネットワークアドレス 10.110.42.192/26 を指定します。

vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 tunnel 1 local prefix 192.168.122.0/24
[edit]
vyos@vyos# set vpn ipsec site-to-site peer 119.XXX.XXX.243 tunnel 1 remote prefix 10.110.42.192/26
[edit]
vyos@vyos#

ファイアウォールの設定

オフィスのプライベートネットワークと、SoftLayer 側 Vyatta のトラフィックのみを許可するよう設定します。

vyos@vyos# set firewall name office-fw
[edit]
vyos@vyos# set firewall name office-fw default-action drop
[edit]
vyos@vyos# set firewall name office-fw enable-default-log
[edit]
vyos@vyos# set firewall name office-fw rule 100 action accept
[edit]
vyos@vyos# set firewall name office-fw rule 100 source address 192.168.0.0/16
[edit]
vyos@vyos# set firewall name office-fw rule 200 action accept  
[edit]
vyos@vyos# set firewall name office-fw rule 200 source address 119.XXX.XXX.243
[edit]
vyos@vyos#

確立したセッションと関係するセッションを許可するよう設定します。

vyos@vyos# set firewall state-policy established action accept
[edit]
vyos@vyos# set firewall state-policy related action accept    
[edit]
vyos@vyos#

ファイアウォールのルールを eth0 に適用します。

vyos@vyos# set interfaces ethernet eth0 firewall local name office-fw
[edit]
vyos@vyos#

設定を反映して保存します。

vyos@vyos# commit
[edit]
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@vyos#

設定確認

オフィス側 VyOS の IPsec VPN 設定とファイアウォール設定は次の通りです。

vyos@vyos# show vpn
 ipsec {
     esp-group ESP-1-EAST {
         compression disable
         lifetime 3600
         mode tunnel
         pfs enable
         proposal 1 {
             encryption aes256
             hash sha1
         }
         proposal 2 {
             encryption aes128
             hash sha1
         }
     }
     ike-group IKE-1-EAST {
         lifetime 3600
         proposal 1 {
             encryption aes256
             hash sha1
         }
         proposal 2 {
             encryption aes128
             hash sha1
         }
     }
     ipsec-interfaces {
         interface eth0
     }
     nat-networks {
         allowed-network 10.110.42.192/26 {
         }
     }
     nat-traversal enable
     site-to-site {
         peer 119.XXX.XXX.243 {
             authentication {
                 mode pre-shared-secret
                 pre-shared-secret PRE_SHARED_SECRET
             }
             default-esp-group ESP-1-EAST
             ike-group IKE-1-EAST
             local-address 192.168.122.10
             tunnel 1 {
                 local {
                     prefix 192.168.122.0/24
                 }
                 remote {
                     prefix 10.110.42.192/26
                 }
             }
         }
     }
 }
[edit]
vyos@vyos#
vyos@vyos# show firewall
 name office-fw {
     default-action drop
     enable-default-log
     rule 100 {
         action accept
         source {
             address 192.168.0.0/16
         }
     }
     rule 200 {
         action accept
         source {
             address 119.XXX.XXX.243
         }
     }
 }
 state-policy {
     established {
         action accept
     }
     related {
         action accept
     }
 }
[edit]
vyos@vyos#

vyos@vyos# show interfaces ethernet eth0
 address 192.168.122.10/24
 description OUTSIDE
 duplex auto
 firewall {
     local {
         name office-fw
     }
 }
 hw-id 52:54:00:e0:0d:df
 smp_affinity auto
 speed auto
[edit]
vyos@vyos#

SoftLayer 側 Vyatta の IPsec VPN 設定

オフィス側の VyOS と同様、SoftLayer 側の Vyatta の設定を行います。

IPsec を有効にするインターフェイスを Vyatta のパブリック側の eth1 に設定します。

vyatta@vyatta-sl# set vpn ipsec ipsec-interfaces interface eth1
[edit]
vyatta@vyatta-sl#

NAT トラバーサルを有効にします。許可するネットワークはオフィスのプライベートネットワークアドレス 192.168.122.0/24 です。

vyatta@vyatta-sl# set vpn ipsec nat-traversal enable
[edit]
vyatta@vyatta-sl# set vpn ipsec nat-networks allowed-network 192.168.122.0/24
[edit]
vyatta@vyatta-sl#

IKE と ESP の設定

グループ名以外の設定は、ピアリングする両者で一致していなければいけません。

IKE のグループ名を IKE-1-WEST とします。

vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST          
[edit]
vyatta@vyatta-sl#

1つ目の Proposal は暗号アルゴリズムを aes256、ハッシュアルゴリズムを sha1 とします。

vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST proposal 1 encryption aes256
[edit]
vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST proposal 1 hash sha1  
[edit]
vyatta@vyatta-sl#

2つ目の Proposal は aes128sha1 とします。

vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST proposal 2 encryption aes128
[edit]
vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST proposal 2 hash sha1      
[edit]
vyatta@vyatta-sl#

IKE の lifetime は 3600 とします。

vyatta@vyatta-sl# set vpn ipsec ike-group IKE-1-WEST lifetime 3600      
[edit]
vyatta@vyatta-sl#

ESP のグループ名を ESP-1-WEST とします。

vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST              
[edit]
vyatta@vyatta-sl#

ESP の Proposal は IKE と同様にします。

vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST proposal 1 encryption aes256
[edit]
vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST proposal 1 hash sha1      
[edit]
vyatta@vyatta-sl#
vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST proposal 2 encryption aes128
[edit]
vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST proposal 2 hash sha1
[edit]
vyatta@vyatta-sl#

ESP の lifetime は 3600 とします。

vyatta@vyatta-sl# set vpn ipsec esp-group ESP-1-WEST lifetime 3600      
[edit]
vyatta@vyatta-sl#

ピアリングの設定

オフィス側の VyOS と接続するための設定を行います。

オフィス側の VyOS はブロードバンドルータによるインターネット接続のため、IP アドレスが不定です。よって、任意の IP アドレスを意味する 0.0.0.0 を指定します。この場合、オフィス側の VyOS から SoftLayer 側の Vyatta に対して接続を開始する形となります。

vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0                    
[edit]
vyatta@vyatta-sl#

認証モードに pre-shared-secret 方式を指定し、オフィス側の VyOS で指定したものと同じ文字列を設定します。

vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 authentication mode pre-shared-secret
[edit]
vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 authentication pre-shared-secret PRE_SHARED_SECRET
[edit]
vyatta@vyatta-sl#

先に設定した ESP-1-EASTIKE-1-EAST をそれぞれ指定します。

vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 default-esp-group ESP-1-WEST
[edit]
vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 ike-group IKE-1-WEST
[edit]
vyatta@vyatta-sl#

SoftLayer の Vyatta のパブリック側の IP アドレス 119.XXX.XXX.243 を指定します。

vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 local-address 119.XXX.XXX.243
[edit]
vyatta@vyatta-sl#

トンネルのローカル側ネットワークは SoftLayer の Vyatta のプライベート側のネットワークアドレス 10.110.42.192/26 を、リモート側ネットワークはオフィスのプライベートネットワークアドレス 192.168.122.0/24 を指定します。

vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 tunnel 1 local prefix 10.110.42.192/26
[edit]
vyatta@vyatta-sl# set vpn ipsec site-to-site peer 0.0.0.0 tunnel 1 remote prefix 192.168.122.0/24
[edit]
vyatta@vyatta-sl#

ファイアウォールの設定

お互いのプライベートネットワークと、IPsec のトラフィックみを許可するよう設定します。

vyatta@vyatta-sl# set firewall name sl-fw
[edit]
vyatta@vyatta-sl# set firewall name sl-fw default-action drop
[edit]
vyatta@vyatta-sl# set firewall name sl-fw enable-default-log
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 100 action accept
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 100 source address 10.0.0.0/8
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 110 action accept            
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 110 source address 192.168.0.0/16
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 120 action accept      
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 120 destination port 500
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 120 protocol udp        
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 130 action accept
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 130 destination port 4500
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 130 protocol udp        
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 140 action accept
[edit]
vyatta@vyatta-sl# set firewall name sl-fw rule 140 protocol esp  
[edit]
vyatta@vyatta-sl#

確立したセッションと関係するセッションを許可するよう設定します。

vyatta@vyatta-sl# set firewall state-policy established action accept
[edit]
vyatta@vyatta-sl# set firewall state-policy related action accept
[edit]
vyatta@vyatta-sl#

ファイアウォールのルールを eth1 に適用します。

vyatta@vyatta-sl# set interfaces ethernet eth1 firewall in name sl-fw
[edit]
vyatta@vyatta-sl# set interfaces ethernet eth1 firewall local name sl-fw
[edit]
vyatta@vyatta-sl#

eth0 側に NAT を設定します。

vyatta@vyatta-sl# set nat source rule 10 outbound-interface eth0
[edit]
vyatta@vyatta-sl# set nat source rule 10 source address 192.168.0.0/16
[edit]
vyatta@vyatta-sl# set nat source rule 10 translation address masquerade
[edit]
vyatta@vyatta-sl#

設定を反映して保存します。

vyatta@vyatta-sl# commit
[edit]
vyatta@vyatta-sl# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyatta@vyatta-sl#

設定確認

SoftLayer 側 Vyatta の IPsec VPN 設定とファイアウォール設定は次の通りです。

vyatta@vyatta-sl# show vpn
 ipsec {
     esp-group ESP-1-WEST {
         lifetime 3600
         proposal 1 {
             encryption aes256
             hash sha1
         }
         proposal 2 {
             encryption aes128
             hash sha1
         }
     }
     ike-group IKE-1-WEST {
         lifetime 3600
         proposal 1 {
             encryption aes256
             hash sha1
         }
         proposal 2 {
             encryption aes128
             hash sha1
         }
     }
     ipsec-interfaces {
         interface eth1
     }
     nat-networks {
         allowed-network 192.168.122.0/24 {
         }
     }
     nat-traversal enable
     site-to-site {
         peer 0.0.0.0 {
             authentication {
                 mode pre-shared-secret
                 pre-shared-secret PRE_SHARED_SECRET
             }
             default-esp-group ESP-1-WEST
             ike-group IKE-1-WEST
             local-address 119.XXX.XXX.243
             tunnel 1 {
                 local {
                     prefix 10.110.42.192/26
                 }
                 remote {
                     prefix 192.168.122.0/24
                 }
             }
         }
     }
 }
[edit]
vyatta@vyatta-sl#
vyatta@vyatta-sl# show firewall
 name sl-fw {
     default-action drop
     enable-default-log
     rule 100 {
         action accept
         source {
             address 10.0.0.0/8
         }
     }
     rule 110 {
         action accept
         source {
             address 192.168.0.0/16
         }
     }
     rule 120 {
         action accept
         destination {
             port 500
         }
         protocol udp
     }
     rule 130 {
         action accept
         destination {
             port 4500
         }
         protocol udp
     }
     rule 140 {
         action accept
         protocol esp
     }
 }
 state-policy {
     established {
         action accept
     }
     related {
         action accept
     }
 }
[edit]
vyatta@vyatta-sl#

vyatta@vyatta-sl# show interfaces ethernet eth1
 address 119.XXX.XXX.243/28
 duplex auto
 firewall {
     in {
         name sl-fw
     }
     local {
         name sl-fw
     }
 }
 hw-id 06:b1:db:d8:47:3f
 smp_affinity auto
 speed auto
[edit]
vyatta@vyatta-sl#

vyatta@vyatta-sl# show nat                    
 source {
     rule 10 {
         outbound-interface eth0
         source {
             address 192.168.0.0/16
         }
         translation {
             address masquerade
         }
     }
 }
[edit]
vyatta@vyatta-sl#

接続確認

オフィス側の VyOS、SoftLayer 側の Vyatta のそれぞれで show vpn ike sa を実行してください。

vyos@vyos:~$ show vpn ike sa
Peer ID / IP                            Local ID / IP              
------------                            -------------
119.XXX.XXX.243                          192.168.122.10                        

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

 
vyos@vyos:~$
vyatta@vyatta-sl:~$ show vpn ike sa
Peer ID / IP                            Local ID / IP              
------------                            -------------
xxx.xxx.xxx.xxx                         119.XXX.XXX.243                        

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

 
vyatta@vyatta-sl:~$

両方の State が up になっていれば、IPsec VPN 接続が確立しています。

オフィス側のクライアント PC にログインし、SoftLayer 側のサーバ PC に対して ping コマンドを実行してみます。

ubuntu@ubuntu:~$ ping -c 4 10.110.43.197
PING 10.110.43.197 (10.110.43.197) 56(84) bytes of data.
64 bytes from 10.110.43.197: icmp_req=1 ttl=62 time=68.4 ms
64 bytes from 10.110.43.197: icmp_req=2 ttl=62 time=68.6 ms
64 bytes from 10.110.43.197: icmp_req=3 ttl=62 time=71.8 ms
64 bytes from 10.110.43.197: icmp_req=4 ttl=62 time=68.5 ms

--- 10.110.43.197 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 68.464/69.367/71.892/1.470 ms
ubuntu@ubuntu:~$

応答がありました。traceroute コマンドで経路を確認してみます。

ubuntu@ubuntu:~$ traceroute 10.110.43.197
traceroute to 10.110.43.197 (10.110.43.197), 30 hops max, 60 byte packets
 1  192.168.100.10 (192.168.100.10)  0.408 ms  0.400 ms  0.392 ms
 2  * * *
 3  10.110.43.197 (10.110.43.197)  69.073 ms  69.052 ms  69.061 ms
ubuntu@ubuntu:~$

オフィスと SoftLayer のそれぞれのプライベートネットワークが IPsec VPN によって接続されていることがわかります。

まとめ

ソフトウェアルータの Vyatta と VyOS を用いて、SoftLayerとオフィスを IPsec VPN してみました。ただし、現状では実際のアプリケーションの利用などは行っていません。次の記事でさらに IPsec VPN の利用について見ていきます。

参考文献

CL LAB Mail Magazine

CL LABの情報を逃さずチェックしよう!

メールアドレスを登録すると記事が投稿されるとメールで通知します。

メールアドレス: 登録

※登録後メールに記載しているリンクをクリックして認証してください。

Related post