IDCFクラウドで拠点間VPNを構築して社内LANをクラウド化する

# はじめに
IDCFクラウドと事業所間で拠点間VPN(Site-to-Site VPN)を構築すると、社内LANをクラウド化することができます。

社内LANのクラウド化というのは、昨今においては珍しいことではないと思いますが、IDCFクラウドの場合は500円から仮想マシンが構築できることと、データ転送量は3,240GB/月まで無料という点で、かなりリーズナブルに社内LANのクラウド化を実現することができます。そして、国内第一位の回線総量（バックボーン）を保有しているという点でも安心感があります。

そこで、IDCFクラウド上で拠点間VPNを構築する手順について簡単にまとめました。
なお、拠点側のルータはYAMAHAのRT(X)シリーズを利用するものとします。

#拠点間VPN(Site-to-Site VPN)

IDCFクラウドにはAWSのVPCやさくらのクラウドのVPCルータのような仮想アプライアンスのようなものはありません。その代わり、VyOSテンプレートが用意されており、VyOSテンプレートから仮想マシンを構築し、その仮想マシン上で動作するVyOSをVPNルータとして利用します。VyOSテンプレートは無償で利用可能です。

拠点間VPN(IDCFクラウド)
http://www.idcf.jp/cloud/spec/vyos-vpn.html

IDCFクラウドでは、「VyOS での IPsecサイト間 VPN 接続ガイド」という設定ガイドがPDFで公開されていますので、そちらを参考に進めていくことで、非常に簡単に拠点間VPNを構築することができます。

VyOS での IPsecサイト間 VPN 接続ガイド
http://www.idcf.jp/pdf/cloud/self/vyos_self.pdf

## クラウド側のVPN設定

前述の通り、VyOSテンプレートより仮想マシンを構築してから、その仮想マシン上で動作するVyOSの設定を進めます。

なお、IDCFクラウドではS2以上のマシンタイプを推奨していますが、S1でも全く問題ありません。S1からS2へのスケールアップは後からでも可能ですので、まずはS1で運用してみて、S1でパフォーマンスが出ないと感じた時にS2にしてみると良いでしょう。ちなみに、私の場合はS1のままで十分動作していて、S2に変更したことは一度もありません。

VyOSの設定は、「VyOS での IPsecサイト間 VPN 接続ガイド」の「YAMAHA RTX1200 の場合」の『クラウド側VyOSの設定』を参考に設定を行えば問題なく接続できるはずです。

なお、拠点の先にさらに別セグメントのローカルネットワークが存在している場合や、拠点からさらに別の拠点への拠点間VPNが構築されている場合、それらのネットワークへのルーティングが通りません。対応方法については、下記の内容にまとめてありますので、ご参照ください。

VyOSのIPSec site-to-site VPNでVPN対向先の別セグメントに対してルーティングする方法
http://qiita.com/tabimoba/items/e3c9457fe21ec29136f5


## 拠点側のVPN設定

基本的な設定は「VyOS での IPsecサイト間 VPN 接続ガイド」の「YAMAHA RTX1200 の場合」の『YAMAHA RTX1200 の設定』を参考に設定を行えば問題なく接続できるはずです。

## スタティックルーティング設定

拠点側においては拠点側ルータがデフォルトルータである場合は、拠点側ルータに対してスタティックルーティングの設定を行っていれば、それ以外の設定は特に必要ありませんが、クラウド側においては仮想マシンごとに拠点側ネットワークへのスタティックルーティング設定が必要となります。

こちらは、「VyOS での IPsecサイト間 VPN 接続ガイド」の『スタティックルートの設定』を参考に、各OSで設定を行います。

なお、CentOSの場合は以下の通り設定します。

### CentOS6の場合

/etc/sysconfig/network-scripts/route-eth0 へ以下の行を追加します。（対向側LANのセグメントが192.168.11.0/24の場合）

```
192.168.11.0/24 via 10.5.0.2
```

### CentOS7の場合

nmtuiを起動し、ルーティングに対向側LANセグメントのIPアドレスと、VyOSのプライベートIPアドレスを追加します。

![スクリーンショット 2015-12-29 22.19.46.png](https://qiita-image-store.s3.amazonaws.com/0/64876/ecc53103-bd4e-dc19-23c4-a8429ba59fa0.png)



# 設定例
※VPN接続に関連する設定のみ記載しています。必要に応じて適宜調整が必要です。

## VyOS
```
 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 FW_RULE {
         default-action drop
         rule 100 {
             action accept
             source {
                 address 10.5.0.0/22　※クラウド側のネットワークセグメント
             }
         }
         rule 110 {
             action accept
             source {
                 address 192.168.11.0/24　※拠点側のLAN側ネットワークセグメント
             }
         }
     }
     receive-redirects disable
     send-redirects enable
     source-validation disable
     syn-cookies enable
     twa-hazards-protection disable
 }
 interfaces {
     ethernet eth0 {
         address dhcp
         duplex auto
         smp_affinity auto
         speed auto
     }
     tunnel tun0 {
         address 192.168.123.1/24　※拠点側VPNルーターのIPIP接続用アドレス
         encapsulation ipip
         local-ip 10.5.0.2　※クラウド側のVyOSのプライベートIPアドレス
         mtu 1422
         multicast disable
         remote-ip 172.16.0.1  ※拠点側VPNルーターのグローバルIPアドレス
     }
     vti vti0 {
     }
 }
 protocols {
     static {
         interface-route 192.168.11.0/24 {　※拠点側のLAN側ネットワークセグメント
             next-hop-interface vti0 {
             }
         }
     }
 }
 vpn {
     ipsec {
         esp-group ESP-G {
             compression disable
             lifetime 1800
             mode tunnel
             pfs enable
             proposal 1 {
                 encryption 3des
                 hash md5
             }
         }
         ike-group IKE-G {
             ikev2-reauth no
             key-exchange ikev1
             lifetime 3600
             proposal 1 {
                 encryption 3des
                 hash md5
             }
         }
         ipsec-interfaces {
             interface eth0
         }
         nat-traversal enable
         site-to-site {
             peer 192.168.123.2 {　※クラウド側VyOSのIPIP接続用IPアドレス
                 authentication {
                     mode pre-shared-secret
                     pre-shared-secret VPN(IPSec)事前共有鍵
                 }
                 connection-type initiate
                 default-esp-group ESP-G
                 ike-group IKE-G
                 ikev2-reauth inherit
                 local-address 192.168.123.1　※拠点側VPNルーターのIPIP接続用アドレス
                 vti {
                     bind vti0
                 }
             }
         }
     }
 }
```

## RTX810
※以下は固定IPをlan2インターフェースへ割り当てた場合の設定となります。PPPoE接続の場合は、調整が必要となります。

```
ip route default gateway lan2
ip route 10.5.0.0/22 gateway tunnel 2　※クラウド側のLAN側ネットワークセグメント
ip route 172.16.0.2 gateway 172.16.0.1 ※172.16.0.1:本機のグローバルIPアドレス,172.16.0.2:クラウド側VyOSのグローバルIPアドレス
ip keepalive 1 icmp-echo 10 5 172.16.0.1　※本機のグローバルIPアドレス
ip lan1 address 192.168.11.1/24　※LAN側のネットワークセグメント
ip lan2 address 172.16.0.1/24　※WAN側のネットワークセグメント
ip lan2 secure filter in 101003 101004 101020 101021 101022 101023 101024 101025 101030 101032
ip lan2 secure filter out 101004 101013 101020 101021 101022 101023 101024 101025 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ip lan2 nat descriptor 200
provider lan1 name LAN:
provider lan2 name PRV/0/1/5/0/0/0:devel
tunnel select 1
 tunnel encapsulation ipip
 tunnel endpoint address 172.16.0.1 172.16.0.2 ※172.16.0.1:本機のグローバルIPアドレス,172.16.0.2:クラウド側VyOSのグローバルIPアドレス
 ip tunnel address 192.168.123.2/24　※クラウド側VyOSのIPIP接続用IPアドレス
 tunnel enable 1
tunnel select 2
 ipsec tunnel 2
  ipsec sa policy 2 2 esp 3des-cbc md5-hmac
  ipsec ike duration ipsec-sa 2 1800
  ipsec ike encryption 2 3des-cbc
  ipsec ike group 2 modp1024
  ipsec ike hash 2 md5
  ipsec ike keepalive use 2 on icmp-echo 10.5.0.2　※クラウド側VyOSのプライベートIPアドレス
  ipsec ike local address 2 192.168.123.2　※クラウド側VyOSのIPIP接続用IPアドレス
  ipsec ike pre-shared-key 2 text VPN(IPSec)事前共有鍵
  ipsec ike remote address 2 192.168.123.1　※本機のIPIP接続用IPアドレス
 tunnel enable 2
ip filter 101000 reject 10.0.0.0/8 * * * *
ip filter 101001 reject 172.16.0.0/12 * * * *
ip filter 101002 reject 192.168.0.0/16 * * * *
ip filter 101003 reject 192.168.11.0/24 * * * *　※本機のLAN側ネットワークセグメント
ip filter 101004 pass 172.16.0.2 * * * *　※クラウド側VyOSのグローバルIPアドレス
ip filter 101010 reject * 10.0.0.0/8 * * *
ip filter 101011 reject * 172.16.0.0/12 * * *　※クラウド側VyOSのグローバルIPアドレス
ip filter 101012 reject * 192.168.0.0/16 * * *
ip filter 101013 reject * 192.168.11.0/24 * * *　※本機のLAN側ネットワークセグメント
ip filter 101020 reject * * udp,tcp 135 *
ip filter 101021 reject * * udp,tcp * 135
ip filter 101022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 101023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 101024 reject * * udp,tcp 445 *
ip filter 101025 reject * * udp,tcp * 445
ip filter 101030 pass * * icmp * *
ip filter 101031 pass * * established * *
ip filter 101032 pass * * tcp * ident
ip filter 101033 pass * * tcp ftpdata *
ip filter 101034 pass * * tcp,udp * domain
ip filter 101035 pass * * udp domain *
ip filter 101036 pass * * udp * ntp
ip filter 101037 pass * * udp ntp *
ip filter 101098 reject-nolog * * established
ip filter 101099 pass * * * * *
ip filter 500000 restrict * * * * *
ip filter dynamic 101080 * * ftp
ip filter dynamic 101081 * * domain
ip filter dynamic 101082 * * www
ip filter dynamic 101083 * * smtp
ip filter dynamic 101084 * * pop3
ip filter dynamic 101085 * * submission
ip filter dynamic 101098 * * tcp
ip filter dynamic 101099 * * udp
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
ipsec auto refresh on
```