OpenVPN(サイト間トンネル)機能を用いた接続

動作確認バージョン:|fwversion|
OpenVPNは、SSL/TSL技術を利用したSSL VPN技術になります。 |vfirewall| では、OpenVPNがサポートされています。
ここでは、OpenVPNを利用して、サイト間接続用トンネルの設定を紹介します。
OpenVPNのトンネルを構築することで、互いのサイト内ネットワークをVPNトンネルを経由で接続し通信をすることが可能になります。

OpenVPN(site-to-siteモード)設定

OpenVPNのsite-to-siteモードを使ってVPN設定(サイト間接続トンネル)をします。
サイト間の接続トンネルは、2台のファイアウォール間でトンネルを構築します。

サンプル設定のシナリオ

  • ファイアウォール間をVPN接続(トンネル接続)させ各ファイアウォール配下のサーバーがサーバー間で通信が可能にしたい
  • VPN接続の方式は、OpenVPN機能を利用したい
  • OpenVPNのサイト間接続には、PSK(PreSharedKey:事前共有鍵)を利用して接続させたい
構成図
openvpn_tunnel_fig1

注釈

OpenVPN設定前に、2台のファイアウォール間の通信は確立できているものとします。 サービス提供上の理由により、Open VPN設定時はポート番号80及び443は指定されないようお願い致します。

シナリオにおける設定の流れ

ファイアウォール1号機側設定
1.インターフェイスにvtun0というトンネルのインターフェイスを作成
2.vtun0のインターフェイスは、192.168.200.1/24を設定
3.サイト間のトンネル接続のためモードをsite-to-siteに設定
4.トンネルが直接つながる対向のIPアドレスに192.168.200.2を設定
5.トンネルを構築する対向ルータのIPアドレスに192.168.2.9を設定
6.利用するPSKファイルsecretを作成して2号機へ共有
7.利用するPSKファイルに /config/auth/secret を指定
8.対向ファイアウォール配下のネットワーク(192.168.3.0/24)はトンネル経由の通信になるようスタティックルート設定

ファイアウォール2号機側設定

1.インターフェイスにvtun0というトンネルのインターフェイスを作成
2.vtun0のインターフェイスは、192.168.200.2/24を設定
3.サイト間のトンネル接続のためモードをsite-to-siteに設定
4.トンネルが直接つながる対向のIPアドレスに192.168.200.1を設定
5.トンネルを構築する対向ルータのIPアドレスに192.168.2.5を設定
6.利用するPSKファイルに /config/auth/secret を指定
7.対向ファイアウォール配下のネットワーク(192.168.3.0/24)はトンネル経由の通信になるようスタティックルート設定

PSKの準備

ファイアウォールの機能を利用してPSK(Pre Shared Key)の作成する手順を説明します。
1号機側でPSKを作成して、2号機にもコピーします。
コピーに関しては、ファイアウォールで実行できるSCPの機能を利用して実行します。
user-admin@vya1:/usr/sbin$ /usr/sbin/openvpn --genkey --secret /config/auth/secret
user-admin@vya1:~$
user-admin@vya1:~$
user-admin@vya1:~$ scp /config/auth/secret user-admin@192.168.2.9:/config/auth/
Welcome to Brocade vRouter

user-admin@192.168.2.9's password:
secret                                       100%  636     0.6KB/s   00:00
user-admin@vya1:~$

注釈

|vfirewall| のマニュアルに記載されている事前共有鍵の作成を実行しますと、互いのファイアウォールで鍵ファイルを共有するためにファイアウォールの再起動が必要になります。 上記手順は、マニュアルの例と異なる方法ですが、再起動することなく事前共有鍵を共有する方法の例について記載しております。

CLIにて入力するコマンド

ファイアウォール1号機(@vya1)のOpenVPN設定
set interface openvpn vtun0 local-address '192.168.200.1'
set interface openvpn vtun0 mode 'site-to-site'
set interface openvpn vtun0 remote-address '192.168.200.2'
set interface openvpn vtun0 remote-host '192.168.2.9'
set interface openvpn vtun0 shared-secret-key-file '/config/auth/secret'
set protocols static interface-route 192.168.3.0/24 next-hop-interface 'vtun0'
ファイアウォール2号機(@vya2)のOpenVPN設定
set interface openvpn vtun0 local-address '192.168.200.2'
set interface openvpn vtun0 mode 'site-to-site'
set interface openvpn vtun0 remote-address '192.168.200.1'
set interface openvpn vtun0 remote-host '192.168.2.5'
set interface openvpn vtun0 shared-secret-key-file '/config/auth/secret'
set protocols static interface-route 192.168.1.0/24 next-hop-interface 'vtun0'

注釈

設定例では、/config/auth/配下に secret というPSKファイルを置いて指定しています。

正しく設定が完了したときのコンフィグレーションは次のとおりです。
ファイアウォール1号機コンフィグ
interfaces {
        dataplane dp0s4 {
                address 192.168.1.3/24
        }
        dataplane dp0s5 {
                address 192.168.2.5/24
        }
        dataplane dp0s6 {
        }
        dataplane dp0s7 {
        }
        loopback lo
        openvpn vtun0 {
                local-address 192.168.200.1
                mode site-to-site
                remote-address 192.168.200.2
                remote-host 192.168.2.9
                shared-secret-key-file /config/auth/secret
        }
}
protocols {
        static {
                interface-route 192.168.3.0/24 {
                        next-hop-interface vtun0
                }
        }
}
ファイアウォール2号機コンフィグ
interfaces {
        dataplane dp0s4 {
                address 192.168.3.5/24
        }
        dataplane dp0s5 {
                address 192.168.2.9/24
        }
        dataplane dp0s6 {
        }
        dataplane dp0s7 {
        }
        loopback lo
        openvpn vtun0 {
                local-address 192.168.200.2
                mode site-to-site
                remote-address 192.168.200.1
                remote-host 192.168.2.5
                shared-secret-key-file /config/auth/secret
        }
}
protocols {
        static {
                interface-route 192.168.1.0/24 {
                        next-hop-interface vtun0
                }
        }
}

動作確認結果

2台のファイアウォールでOpenVPNのトンネルが確立しており、それぞれのファイアウォールに接続するサーバーからOpenVPNのトンネルを利用して通信ができているためサイト間OpenVPNが正しく設定できました。
#ファイアウォール1号機(vya1) OpenVPNのトンネルの状態

      user-admin@vya1:~$ sh openvpn site-to-site status
      OpenVPN client status on vtun0

      Remote CN       Remote IP       Tunnel IP       TX byte RX byte Connected Since
      --------------- --------------- --------------- ------- ------- ------------------------
      None (PSK)      192.168.2.9     192.168.200.2     90.9K   90.6K N/A


#ファイアウォール2号機(vya2) OpenVPNのトンネルの状態

      user-admin@vya2:~$ sh openvpn site-to-site status
      OpenVPN client status on vtun0

      Remote CN       Remote IP       Tunnel IP       TX byte RX byte Connected Since
      --------------- --------------- --------------- ------- ------- ------------------------
      None (PSK)      192.168.2.5     192.168.200.1     98.4K   99.0K N/A


#ファイアウォール1号機配下のサーバーインスタンスからの対向サーバーへの通信確認結果 -> OK

      [root@localhost ~]# ping 192.168.3.3 -c 60
      PING 192.168.3.3 (192.168.3.3) 56(84) bytes of data.
      64 bytes from 192.168.3.3: icmp_seq=1 ttl=60 time=4.14 ms
      64 bytes from 192.168.3.3: icmp_seq=2 ttl=60 time=2.73 ms
      64 bytes from 192.168.3.3: icmp_seq=3 ttl=60 time=2.41 ms
      64 bytes from 192.168.3.3: icmp_seq=4 ttl=60 time=2.71 ms
      64 bytes from 192.168.3.3: icmp_seq=5 ttl=60 time=2.37 ms
                              (途中省略)
      64 bytes from 192.168.3.3: icmp_seq=56 ttl=60 time=3.11 ms
      64 bytes from 192.168.3.3: icmp_seq=57 ttl=60 time=2.66 ms
      64 bytes from 192.168.3.3: icmp_seq=58 ttl=60 time=2.27 ms
      64 bytes from 192.168.3.3: icmp_seq=59 ttl=60 time=3.17 ms
      64 bytes from 192.168.3.3: icmp_seq=60 ttl=60 time=3.24 ms

      --- 192.168.3.3 ping statistics ---
      60 packets transmitted, 60 received, 0% packet loss, time 59098ms
      rtt min/avg/max/mdev = 2.120/6.661/57.831/13.230 ms
      [root@localhost ~]#

#ファイアウォール2号機配下のサーバーインスタンスからの対向サーバーへの通信確認結果 -> OK

      test@web1:~$ ping 192.168.1.4 -c 61
      PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
      64 bytes from 192.168.1.4: icmp_seq=1 ttl=60 time=5.14 ms
      64 bytes from 192.168.1.4: icmp_seq=2 ttl=60 time=2.89 ms
      64 bytes from 192.168.1.4: icmp_seq=3 ttl=60 time=2.95 ms
      64 bytes from 192.168.1.4: icmp_seq=4 ttl=60 time=20.8 ms
      64 bytes from 192.168.1.4: icmp_seq=5 ttl=60 time=2.40 ms
                              (途中省略)
      64 bytes from 192.168.1.4: icmp_seq=56 ttl=60 time=2.59 ms
      64 bytes from 192.168.1.4: icmp_seq=57 ttl=60 time=2.40 ms
      64 bytes from 192.168.1.4: icmp_seq=58 ttl=60 time=2.37 ms
      64 bytes from 192.168.1.4: icmp_seq=59 ttl=60 time=2.71 ms
      64 bytes from 192.168.1.4: icmp_seq=60 ttl=60 time=2.52 ms
      64 bytes from 192.168.1.4: icmp_seq=61 ttl=60 time=3.39 ms
      ^C
      --- 192.168.1.4 ping statistics ---
      61 packets transmitted, 61 received, 0% packet loss, time 60097ms
      rtt min/avg/max/mdev = 2.225/5.493/57.795/11.357 ms