ネットワーク
VyOS
GRE
soft

SoftLayerとvyosでネットワークの基礎を勉強1-(トンネルGRE編)

More than 1 year has passed since last update.

1. はじめに

 クラウドシステムの基盤構築を行う上で、ネットワークは重要な要素の一つです。学習する上で実機を使って行うほうが、理解が深まります。
ただ、必要な機材を準備すると費用と時間がかかりますが、SoftLayreを使って、安く短時間に実機で構築学習を行います。
(これがクラウドの良いところだです。)

今回は、基本としてGREの設定してみます。

2. GREについて

 GRE(Generic Routing Encapsulation)の前に、VPNについてを説明します。
VPN(Virtual Private Network)は文字通り、公衆ネットワーク(Internet)を介してプライベートネットワーク間を接続します。
ネットワークは、あたかも自分専用の回線として接続されますので、公衆ネットワーク経由でもセキュリティを高めてくれます。
 
そのVPNの仕組みで重要な要素は、
(1)トンネリング-----経路
(2)暗号化------------データ  です。
 
GREはトンネリングプロトコルのひとつで、他には
・Layer2トンネリングのL2F, PPTP, L2TP
・Layer3トンネリングのGRE, IPsec などがあります。
また、暗号化はIPsecのみですので、L2TP/IPsecのようにトンネリングと暗号化を組み合わせて利用します。

今回は、GREのトンネリングだけで暗号化は行いません。

3. 構成について

 SoftLayerのシンガポールと東京の2ロケーションをGRE(VyOS)で接続して、各ロケーションにデプロイしたWindows2012サーバ間でデータの送受信を行います。
注意点として、VLANスパニングをオフにして、2ロケーションのプライベートネットワークが接続されていない状態で確認テストを行います。
 また、VyOSの導入は下記情報などを参考にしてください。
QIITA「SoftLayer仮想サーバにVyOSをインストールしました」
http://qiita.com/Mitsu-Murakita/items/d793250566a8e9f3562b
03.png
05.png
06.png

4. 構築手順

07.png

5. 構築

 VyOSの基本的な操作について

VyOSには「一般モード」(プロンプト$)と「設定モード」(プロンプト#)があります。
モード変更は、
・「一般モード」から「設定モード」へ変更は”configure”コマンド
・「設定モード」から「一般モード」へ変更は"exit"コマンド です。
08.png
「一般モード」では、設定状態や動作状態が確認できます。
「設定モード」では、動作のための値が設定できます。
「設定モード」でよく使うコマンドは、
"set"-------値の入力
"delete"---値の削除
"discard"--入力した値の破棄(commit前なら有効)
"commit"--入力した値の有効化
"save"-----保存(saveしないで再起動すると、値が消えてしまいます。)
"show"----構成情報の表示

5-1. VLANスパニングをOFF

SoftLayerポータルでの操作です。
09.png
「Network」⇒「VLANs」⇒「Span」タグ

10.png
「Off」選択

以上で「VLANスパニングをOFF」完了です。
※テスト終わりましたら、ONに戻してください。

5-2. VyOS-TOK(VyOS)の設定

まず、Tokyo側から設定。
IPをまだ設定してないので、SoftLayerのKVM操作です。

VyOSの初期値は下記の通りです。

vyos初期値
interfaces {
    ethernet eth0 {
        hw-id 06:ce84:86:0a:e6
    }
    ethernet eth1 {
        hw-id 06:96:da:92:17:25
    }
    loopback lo {
    }
}
system {
    config-management {
        commit-revisions 20
    }
    console {
        device hvc0 {
            speed 9600
        }
        device ttyS0 {
            speed 9600
        }
    }
    login {
        user vyos {
            authentication {
                encrypted-password  
                plaintext-password ""
            }
            level admin
        }
    }
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    package {
        repository community {
            components main
            distribution helium
            url http://packages.vyos.net/vyos
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
}

この初期値に値を設定していきます。

IP(interface)の設定

ここでは、eth0がプライベート、eth1がパブリックです。

IP(interfaces)の設定
# set interfaces ethernet eth0 address 10.132.52.247/26 ⏎
# set interfaces ethernet eth1 address 161.202.91.38/28 ⏎
# commit ⏎
# save ⏎

下記3行は再起動後、自動的に追加されますが、ここでは明示的に設定します。
・duplex auto
・smp_affinity auto
・speed auto

IP(interfaces)の設定続き
# set interfaces ethernet eth0 duplex auto ⏎
# set interfaces ethernet eth1 duplex auto ⏎
# set interfaces ethernet eth0 smp_affinity auto ⏎
# set interfaces ethernet eth1 smp_affinity auto ⏎
# set interfaces ethernet eth0 speed auto ⏎
# set interfaces ethernet eth1 speed auto ⏎
# commit ⏎
# save ⏎

ssh(service)の設定

クライアントPCからssh接続できるようにします。

ssh(service)の設定
# set service ssh port 22 ⏎
# commit ⏎
# save ⏎

Gatewayアドレス(system)の設定

パブリックのゲートウェイアドレスを設定。

Gatewayアドレス(system)の設定
# set system gateway-address 161.202.91.33 ⏎
# commit ⏎
# save ⏎

DNS(system)の設定

SoftLayerのDNS、
・10.0.80.11
・10.0.80.12 を設定します。

DNS(system)の設定
# set system name-server 10.0.80.11 ⏎
# set system name-server 10.0.80.12 ⏎
# commit ⏎
# save ⏎

ドメイン名(system)の設定

ここではドメイン名を「softlayer.com」にしました。

ドメイン名(system)の設定
# set system domain-name softlayer.com ⏎
# commit ⏎
# save ⏎

ホスト名(system)の設定

ここではホスト名を「VyOS-TOK」にしました。

ホスト名(system)の設定
# set system host-name VyOS-TOK ⏎
# commit ⏎
# save ⏎

タイムゾーン(system)の設定

ここではタイムゾーンを「Asia/Tokyo」にしました。

ホスト名(system)の設定
# set system time-zone Asia/Tokyo ⏎
# commit ⏎
# save ⏎

GREトンネル(interfaces)の設定

トンネルは「tun0」という名前にします。
Tokyo側のトンネルIPは、”10.20.20.2/24”です。

GREトンネル(interfaces)の設定-Tokyo側トンネルIP設定
# set interfaces tunnel tun0 address 10.20.20.2/24 ⏎
# commit ⏎
# save ⏎

トンネルの記述を、"GRE tunnel to VyOS-SNG”にします。

GREトンネル(interfaces)の設定-Tokyo側トンネル記述設定
# set interfaces tunnel tun0 description "GRE tunnel to VyOS-SNG” ⏎
# commit ⏎
# save ⏎

パケットに新しいヘッダを付け加え、カプセル化(Encapsulation)して通信するのにGREを使います。

GREトンネル(interfaces)の設定-カプセル化にGRE使用
# set interfaces tunnel tun0 encapsulation gre ⏎
# commit ⏎
# save ⏎

ローカルIP指定(Tokyo側パブリックIP)

GREトンネル(interfaces)の設定-ローカルIP指定(Tokyo側パブリックIP)
# set interfaces tunnel tun0 local-ip 161.202.91.38 ⏎
# commit ⏎
# save ⏎

リモートIP指定(Singapore側パブリックIP)

GREトンネル(interfaces)の設定-リモートIP指定(Singapore側パブリックIP)
# set interfaces tunnel tun0 remote-ip 161.202.24.119 ⏎
# commit ⏎
# save ⏎

Singaporeに対してのスタティックルート(protocols)の設定

GREトンネル(interfaces)の設定-Singaporeに対してのスタティックルート(protocols)の設定
# set protocols static route 10.116.145.0/26  next-hop 10.20.20.2 ⏎
# commit ⏎
# save ⏎

以上で、「VyOS-TOK(VyOS)の設定」完了です。
"show"コマンドで設定値を確認します。

GREトンネルの設定(Tokyo)-showコマンドで確認
 interfaces {
     ethernet eth0 {
         address 10.132.52.247/26
         duplex auto
         hw-id 06:ce:84:86:0a:e6
         smp_affinity auto
         speed auto
     }
     ethernet eth1 {
         address 161.202.91.38/28
         duplex auto
         hw-id 06:96:da:92:17:25
         smp_affinity auto
         speed auto
     }
     loopback lo {
     }
     tunnel tun0 {
         address 10.20.20.2/24
         description "GRE tunnel to VyOS-SNG"
         encapsulation gre
         local-ip 161.202.91.38
         remote-ip 161.202.24.119
      }
 }
 protocols {
     static {
         route 10.116.145.0/26 {
             next-hop 10.20.20.2 {
             }
         }
     }
 }
 service {
     ssh {
         port 22
     }
 }
 system {
     config-management {
         commit-revisions 20
     }
     console {
         device hvc0 {
             speed 9600
         }
          device ttyS0 {
             speed 9600
         }
     }
     domain-name softlayer.com
     gateway-address 161.202.91.33
     host-name VyOS-TOK
     login {
         user vyos {
             authentication {
                 encrypted-password 
                 plaintext-password ""
             }
             level admin
         }
     }
     name-server 10.0.80.11
     name-server 10.0.80.12
     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 helium
             password ""
             url http://packages.vyos.net/vyos
             username ""
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
         }
     }
      time-zone Asia/Tokyo
 }

5-3. VyOS-SNG(VyOS)の設定

「5-2. VyOS-TOK(VyOS)の設定」と同じ操作で設定してください。

GREトンネルの設定(Singapore)-showコマンドで確認
 interfaces {
     ethernet eth0 {
         address 10.116.145.13/26
         duplex auto
         hw-id 06:bd:96:13:b1:e0
         smp_affinity auto
         speed auto
     }
     ethernet eth1 {
         address 161.202.24.119/28
         duplex auto
         hw-id 06:f0:5f:d6:7b:c4
         smp_affinity auto
         speed auto
     }
     loopback lo {
     }
     tunnel tun0 {
         address 10.20.20.1/24
         description "GRE tunnel to VyOS-TOK"
         encapsulation gre
         local-ip 161.202.24.119
         remote-ip 161.202.91.38
      }
 }
 protocols {
     static {
         route 10.132.52.192/26 {
             next-hop 10.20.20.1 {
             }
         }
     }
 }
 service {
     ssh {
         port 22
     }
 }
 system {
     config-management {
         commit-revisions 20
     }
     console {
         device hvc0 {
             speed 9600
         }
          device ttyS0 {
             speed 9600
         }
     }
     domain-name softlayer.com
     gateway-address 161.202.24.113
     host-name VyOS-SNG
     login {
         user vyos {
             authentication {
                 encrypted-password 
                 plaintext-password ""
             }
             level admin
         }
     }
     name-server 10.0.80.11
     name-server 10.0.80.12
     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 helium
             password ""
             url http://packages.vyos.net/vyos
             username ""
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
         }
     }
      time-zone Asia/Tokyo
 }

6. GREトンネル接続確認

6-1. VyOSトンネルが”up”状態であることを確認

VyOSの「一般モード」で行います。
show コマンドで確認します。

GREトンネルup確認
$ show interfaces tunnel ⏎

11.png

GREトンネルup確認-詳細
$ show interfaces tunnel detail⏎

12.png

Toykyo側で確認しましたが、Shigapore側でも確認してください。

6-2. PINGで確認

PINGはVyOSの「一般モード」で行います。

(1)Tokyo側のVyOS-TOKから、Singapore側のVyOS-SNGのプライベートアドレス(10.116.145.13)に対してPINGが通る事を確認する。

(2)Singaporeo側のVyOS-SNGから、Tokyo側のVyOS-TOKのプライベートアドレス(10.132.52.247)に対してPINGが通る事を確認する。

7. Windows2012R2サーバ、スタティックルートの設定

PowerShellでの操作です。

・W2012R2-TOK設定

W2012R2-TOKスタティックルート設定
>route add -p 10.116.145.0 mask 255.255.255.0 10.132.52.247 ⏎

・W2012R2-SNG設定

W2012R2-SNGスタティックルート設定
>route add -p 10.132.52.0 mask 255.255.255.0 10.116.145.13 ⏎

8 Windows2012Server間データ転送確認

「6. GREトンネル接続確認」を参考にして確認してください。

(1)Tokyo側のW2012R2-TOKから、Singapore側のW2012R2-SNGのプライベートアドレス(10.116.145.25)に対してPINGが通る事を確認する。

(2)Singaporeo側のW2012R2-SNGから、Tokyo側のW2012R2-TOKのプライベートアドレス(10.132.52.213)に対してPINGが通る事を確認する。

6. おわりに

 IPアドレスには表示上マスクをかけるのが安全ですが、わかりにくくなると思い、あえてマスクをかけませんでした。
(インスタンスを削除する予定です。)

SoftLayerを活用すると、ネットワークを勉強する上で、少ない費用で実機勉強でき知識が深まります。

今後、L2TPやIPsecも投稿する予定です。