LoginSignup
2
2

More than 5 years have passed since last update.

SoftLayer仮想サーバーでVyOSの冗長化構成を勉強3-(OpenVPNリモートアクセス接続編)

Posted at

1. はじめに

VyOSの冗長化構成で、OpenVPNリモートアクセス接続を試しました。
仮想サーバーにVyOSを導入した環境での構成です。

下記情報も併せてご覧ください。
・VyOS導入
「SoftLayer仮想サーバにVyOSをインストールしました」
http://qiita.com/Mitsu-Murakita/items/d793250566a8e9f3562b

・OpenVPNリモートアクセス接続
「SoftLayerとVyOSでネットワークの基礎を勉強3-(OpenVPNリモートアクセス編)」
http://qiita.com/Mitsu-Murakita/items/fb23bd7fc7214aabfd48

・VRRP
「SoftLayer仮想サーバーでVyOSの冗長化構成を勉強1-(VRRP基本構成編)」
http://qiita.com/Mitsu-Murakita/items/15660fd4281959816a0f

2. 構成について

2-1. 全体構成

Softlayerの東京DCでVRRP構成のVyOS(OpenVPNサーバー)仮想インスタンスをデプロイし、オンプレミスのOpenVPNクライアントから接続します。
01.png
VRRP構成は、「vyos-TOK01」のPriorityが250、「vyos-TOK02」のPriorityが240ですので、初期状態では「vyos-TOK01」MASTER「vyos-TOK02」 BACKUPです。
03.png

3. 設定の手順

02.png
クライアント側OpenVPNの設定は、 「SoftLayerとVyOSでネットワークの基礎を勉強3-(OpenVPNリモートアクセス編)」
http://qiita.com/Mitsu-Murakita/items/fb23bd7fc7214aabfd48
をご覧ください。

①まず、 「vyos-TOK01」だけで設定し接続確認します。
「vyos-TOK01」をpoweroffして停止した後、「vyos-TOK02」だけで設定し接続確認します。
③VRRPの設定を「vyos-TOK01」「vyos-TOK02」 に行います。①②それぞれで接続確認しているので、接続できるはずですが、接続できません。
④VRRPに関係するOpenVPNの設定をし、接続確認します。

※③で接続できないのは、OpenVPNはUPDで接続しに行きますが、VRRPの関係でTCPで接続するように変更する必要があります。
この変更は、VyOS側とクライアント側の両方に行います。

4. 設定

4-1.① vyos-TOK01 OpenVPN設定、接続確認

4-1-1.VyOS設定

VyOSは導入しているとして、残っている設定は
(1) IP Address(PrivateとPublic)
(2) SSH
(3) Gatewat Address
(4) DNS
(5) Domain Name
(6) Host Name
(7) Static route
です。
※説明しやすいように行番号(xxx)をつけてますが、実際に登録する際は行番号を入力しないでください。

vyos-TOK01のVyOS設定
(001)  interfaces {
(002)     ethernet eth0 {
(003)         address 10.132.52.225/26
(004)         duplex auto
(005)         hw-id 06:0a:86:51:ea:06
(006)         smp_affinity auto
(007)         speed auto
(008)     }
(009)     ethernet eth1 {
(010)         address 161.202.138.186/29
(011)         duplex auto
(012)         hw-id 06:88:83:ca:74:82
(013)         smp_affinity auto
(014)         speed auto
(015)     }
(016)     loopback lo {
(017)     }
(018) }
(019) protocols {
(020)     static {
(021)         route 10.0.0.0/8 {
(022)             next-hop 10.132.52.193 {
(023)             }
(024)         }
(025)     }
(026) }
(027) service {
(028)     ssh {
(029)         port 22
(030)     }
(031) }
(032) system {
(033)     config-management {
(034)         commit-revisions 20
(035)     }
(036)     console {
(037)         device hvc0 {
(038)             speed 9600
(039)         }
(040)         device ttyS0 {
(041)             speed 9600
(042)         }
(043)     }
(044)     domain-name softlayer.com
(045)     gateway-address 161.202.138.185
(046)     host-name vyos-TOK01
(047)     login {
(048)         user vyos {
(049)             authentication {
(050)                 encrypted-password xxxxxxxxxxxxxxxxxxxxx
(051)                 plaintext-password ""
(052)             }
(053)             level admin
(054)         }
(055)     }
(056)     name-server 10.0.80.11
(057)     name-server 10.0.80.12
(058)     ntp {
(059)         server time.service.networklayer.com {
(060)         }
(061)     }
(062)     package {
(063)         repository community {
(064)             components main
(065)             distribution helium
(066)             url http://packages.vyos.net/vyos
(067)         }
(068)     }
(069)     syslog {
(070)         global {
(071)             facility all {
(072)                 level notice
(073)             }
(074)             facility protocols {
(075)                 level debug
(076)             }
(077)          }
(078)     }
(079) }

・(001)-(018) IPアドレス関連の設定
・(027)-(031) SSHの設定
・(045)-(045) Gatewat Addressの設定
・(056)-(057) DNSの設定
・(044)-(044) Domain Nameの設定
・(046)-(046) Host Nameの設定
・(020)-(025) Static routeの設定

4-1-2.vyos-TOK01 OpenVPN設定

まず、rootアカウントの有効化を行います。

rootアカウントの有効化
# set system login user root authentication plaintext-password rootのパスワード ⏎
# commit ⏎
# save ⏎

サーバー側、クライアント側秘密鍵・公開鍵の作成します。
「SoftLayerとVyOSでネットワークの基礎を勉強3-(OpenVPNリモートアクセス編)」の「5.サーバー側、クライアント側秘密鍵・公開鍵の作成」をご覧ください。
http://qiita.com/Mitsu-Murakita/items/fb23bd7fc7214aabfd48
ここでは、サーバー用の鍵関連は /rootに保存しました。
・ca.crt
・dh1024.pem
・server.crt
・server.key

VyOSの設定を行います。

OpenVPNの設定
# set interfaces openvpn vtun0 ⏎
# set interfaces openvpn vtun0 mode server ⏎
# set interfaces openvpn vtun0 openvpn-option "--push route 10.0. 0.0 255.0.0.0  --push dhcp-option DNS 10.0.80.11" ⏎
# set interfaces openvpn vtun0 server client client ip 10.132.42. 50 ⏎
# set interfaces openvpn vtun0 server subnet 10.132.42.48/28 ⏎
# set interfaces openvpn vtun0 tls ca-cert-file /root/ca.crt ⏎
# set interfaces openvpn vtun0 tls cert-file /root/server.cr ⏎
# set interfaces openvpn vtun0 tls dh-file /root/dh1024.pem ⏎
# set interfaces openvpn vtun0 tls key-file /root/server.key ⏎
# commit ⏎
# save ⏎
NATの設定
# set nat source rule 1 ⏎
# set nat source rule 1 outbound-interface eth0  ⏎
# set nat source rule 1 source address 10.132.42.48/28 ⏎
# set nat source rule 1 translation address masquerade ⏎
# commit ⏎
# save ⏎

設定は終わりましたので、接続します。
クライアントPCの接続設定の関しては、
「SoftLayerとVyOSでネットワークの基礎を勉強3-(OpenVPNリモートアクセス編)」の「7.クライアントPCの設定」「8.接続確認」をご覧ください。
http://qiita.com/Mitsu-Murakita/items/fb23bd7fc7214aabfd48

04.png

4-2.② vyos-TOK02 OpenVPN設定、接続確認

「 4-1.① vyos-TOK02 OpenVPN設定、接続確認」を参考に設定と接続を行ってください。
サーバー用鍵は「vyos-TOK01」/rootディレクトリーから「vyos-TOK02」/rootディレクトリーへコピーしてください。
・ca.crt
・dh1024.pem
・server.crt
・server.key

vyos-TOK02のVyOS設定
 interfaces {
     ethernet eth0 {
         address 10.132.52.224/26
         duplex auto
         hw-id 06:c6:d3:50:ed:82
         smp_affinity auto
         speed auto
     }
     ethernet eth1 {
         address 161.202.138.188/29
         duplex auto
         hw-id 06:f1:6b:7d:eb:6c
         smp_affinity auto
         speed auto
     }
     loopback lo {
     }
 }
 protocols {
     static {
         route 10.0.0.0/8 {
             next-hop 10.132.52.193 {
             }
         }
     }
 }
 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.188.185
     host-name vyos-TOK02
     login {
         user vyos {
             authentication {
                 encrypted-password $1$hNEJiYUZ$YO1n8CsFpLTROKeLIChN7/
                 plaintext-password ""
             }
             level admin
         }
     }
     name-server 10.0.80.11
     name-server 10.0.80.12
     ntp {
         server time.service.networklayer.com {
         }
     }
     package {
         repository community {
             components main
             distribution helium
             url http://packages.vyos.net/vyos
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
          }
     }
     time-zone Asia/Tokyo
 }
rootアカウントの有効化
# set system login user root authentication plaintext-password rootのパスワード ⏎
# commit ⏎
# save ⏎
OpenVPNの設定
# set interfaces openvpn vtun0 ⏎
# set interfaces openvpn vtun0 mode server ⏎
# set interfaces openvpn vtun0 openvpn-option "--push route 10.0. 0.0 255.0.0.0  --push dhcp-option DNS 10.0.80.11" ⏎
# set interfaces openvpn vtun0 server client client ip 10.132.42. 50 ⏎
# set interfaces openvpn vtun0 server subnet 10.132.42.48/28 ⏎
# set interfaces openvpn vtun0 tls ca-cert-file /root/ca.crt ⏎
# set interfaces openvpn vtun0 tls cert-file /root/server.cr ⏎
# set interfaces openvpn vtun0 tls dh-file /root/dh1024.pem ⏎
# set interfaces openvpn vtun0 tls key-file /root/server.key ⏎
# commit ⏎
# save ⏎
NATの設定
# set nat source rule 1 ⏎
# set nat source rule 1 outbound-interface eth0 ⏎
# set nat source rule 1 source address 10.132.42.48/28 ⏎
# set nat source rule 1 translation address masquerade ⏎
# commit ⏎
# save ⏎

接続確認します。
04.png

4-3.③ VRRPの設定

vyos-TOK01-VRRPの設定
# set interfaces ethernet eth0 vrrp ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 advertise-interrval 1 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 preempt true ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 priority 250 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 sync-group synccgroup01 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 virtual-addresss  10.132.52.225 ⏎
# commit ⏎
# save ⏎
# set interfaces ethernet eth1 vrrp ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 advertise-interrval 1 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 priority 250 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 sync-group synccgroup01 ⏎  
# set interfaces ethernet eth1 vrrp vrrp-group 200 virtual-addresss 161.202.138.186 ⏎
# commit ⏎
# save ⏎
vyos-TOK02-VRRPの設定
# set interfaces ethernet eth0 vrrp ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 advertise-interrval 1 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 preempt true ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 priority 240 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 sync-group synccgroup01 ⏎
# set interfaces ethernet eth0 vrrp vrrp-group 100 virtual-addresss 10.132.52.225 ⏎
# commit ⏎
# save ⏎
# set interfaces ethernet eth1 vrrp ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 advertise-interrval 1 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 priority 240 ⏎
# set interfaces ethernet eth1 vrrp vrrp-group 200 sync-group synccgroup01 ⏎  
# set interfaces ethernet eth1 vrrp vrrp-group 200 virtual-addresss 161.202.138.186 ⏎
# commit ⏎
# save ⏎

4-4.④ VRRPに関係する、OpenVPNの設定接続確認

「4-1.① vyos-TOK01 OpenVPN設定、接続確認」「4-2.② vyos-TOK02 OpenVPN設定、接続確認」でそれぞれで接続できていましたが、VRRPを設定後に「vyos-TOK02」をMASTERにして接続しようとするとエラーで接続できません

05.png

結論から言いますと、標準ではOpenVPNサーバーはUDPで待ちうけていますが、VRRPではUDPではなくTCPでないと通信できないためです。
サーバー側とクライアント側のOpenVPN設定をTCPに変更すると接続できます。
<サーバー側>

vyos-TOK01のVRRP用追加設定
# set interfaces openvpn vtun0  protocol tcp-passive ⏎
vyos-TOK02のVRRP用追加設定
# set interfaces openvpn vtun0  protocol tcp-passive ⏎

<クライアント側>
OpenVPNクライアント構成ファイルに「proto tcp」を追加します。
06.png

5. 設定したVyOS構成

vyos-TOK01
 interfaces {
     ethernet eth0 {
         address 10.132.52.225/26
         duplex auto
         hw-id 06:0a:86:51:ea:06
         smp_affinity auto
         speed auto
         vrrp {
             vrrp-group 100 {
                 advertise-interval 1
                 preempt true
                 priority 250
                 sync-group syncgroup01
                 virtual-address 10.132.52.225
             }
         }
     }
     ethernet eth1 {
         address 161.202.138.186/29
         duplex auto
         hw-id 06:88:83:ca:74:82
         smp_affinity auto
         speed auto
          vrrp {
             vrrp-group 200 {
                 advertise-interval 1
                 preempt true
                 priority 250
                 sync-group syncgroup01
                 virtual-address 161.202.138.186
             }
         }
     }
     loopback lo {
     }
     openvpn vtun0 {
         mode server
         openvpn-option "--push route 10.0.0.0 255.0.0.0  --push dhcp-option DNS  10.0.80.11"
         protocol tcp-passive
         server {
             client client {
                 ip 10.132.42.50
             }
             subnet 10.132.42.48/28
         }
          tls {
             ca-cert-file /root/ca.crt
             cert-file /root/server.crt
             dh-file /root/dh1024.pem
             key-file /root/server.key
         }
     }
 }
 nat {
     source {
         rule 1 {
             outbound-interface eth0
             source {
                 address 10.132.42.48/28
             }
             translation {
                 address masquerade
             }
         }
     }
 }
 protocols {
     static {
          route 10.0.0.0/8 {
             next-hop 10.132.52.193 {
             }
         }
     }
 }
 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.138.185
     host-name vyos-TOK01
     login {
         user root {
             authentication {
                 encrypted-password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                 plaintext-password ""
             }
         }
         user vyos {
             authentication {
                 encrypted-password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                 plaintext-password ""
             }
             level admin
         }
     }
     name-server 10.0.80.11
     name-server 10.0.80.12
     ntp {
         server time.service.networklayer.com {
          }
     }
     package {
         repository community {
             components main
             distribution helium
             url http://packages.vyos.net/vyos
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
         }
     }
 } 
vyos-TOK02
 interfaces {
     ethernet eth0 {
         address 10.132.52.224/26
         duplex auto
         hw-id 06:c6:d3:50:ed:82
         smp_affinity auto
         speed auto
         vrrp {
             vrrp-group 100 {
                 priority 240
                 sync-group syncgroup01
                 virtual-address 10.132.52.225
             }
         }
     }
     ethernet eth1 {
         address 161.202.138.188/29
         duplex auto
         hw-id 06:f1:6b:7d:eb:6c
         smp_affinity auto
         speed auto
         vrrp {
             vrrp-group 200 {
                  priority 240
                 sync-group syncgroup01
                 virtual-address 161.202.138.185
             }
         }
     }
     loopback lo {
     }
     openvpn vtun0 {
         mode server
         openvpn-option "--push route 10.0.0.0 255.0.0.0  --push dhcp-option DNS  10.0.80.11"
         protocol tcp-passive
         server {
             client client {
                 ip 10.132.42.50
             }
             subnet 10.132.42.48/28
         }
         tls {
             ca-cert-file /root/ca.crt
             cert-file /root/server.crt
             dh-file /root/dh1024.pem
              key-file /root/server.key
         }
     }
 }
 nat {
     source {
         rule 1 {
             outbound-interface eth0
             source {
                 address 10.132.42.48/28
             }
             translation {
                 address masquerade
             }
         }
     }
 }
 protocols {
     static {
         route 10.0.0.0/8 {
             next-hop 10.132.52.193 {
             }
         }
      }
 }
 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.138.185
     host-name vyos-TOK02
     login {
          user root {
             authentication {
                 encrypted-password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                 plaintext-password ""
             }
         }
         user vyos {
             authentication {
                 encrypted-password xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                 plaintext-password ""
             }
             level admin
         }
     }
     name-server 10.0.80.11
     name-server 10.0.80.12
     ntp {
         server time.service.networklayer.com {
         }
     }
     package {
         repository community {
              components main
             distribution helium
             url http://packages.vyos.net/vyos
         }
     }
     syslog {
         global {
             facility all {
                 level notice
             }
             facility protocols {
                 level debug
             }
         }
     }
     time-zone Asia/Tokyo
 }

6. おわりに

OpenVPNをVRRPで冗長化する際は、初期のUDPでなくTCPの設定を行ってください。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2