OpenVPN(サーバー・クライアント)機能を用いた接続¶
動作確認バージョン: | |fwversion| |
---|
OpenVPNは、SSL/TSL技術を利用したSSL VPN技術になります。 |vfirewall| では、OpenVPNがサポートされています。
ここでは、OpenVPNを利用して、リモートアクセスを受けるサーバーと要求元になるクライアントの設定を紹介します。
サーバー・クライアントモードにすることで、OpenVPNクライアントが動作するファイアウォールをはじめ、PC端末などがOpenVPNサーバーに対して仮想的に直接接続するネットワークを構築することが可能です。
注釈
サービス提供上の理由により、Open VPN設定時はポート番号80及び443は指定されないようお願い致します。
OpenVPN(Server・Clientモード)設定¶
OpenVPNのサーバーモードを使ってOpenVPNクライアントからのリモートアクセスを接続させる設定を紹介します。
OpenVPNクライアントが動作するPCやファイアウォールを利用しVPN接続をさせることが可能です。
OpenVPNサーバーは、接続するクライアントがトンネルインターフェイスを通して仮想的に直接接続するように経路設定されます。
サンプル設定のシナリオ
- VPN接続の方式は、OpenVPN機能を利用したい
- 将来的にインターネットアクセスできるPCからファイアウォールにVPN接続をさせたいためサーバー・クライアントモードにしたい
- クライアントの認証には、証明書を使った認証を行いたい
構成図
注釈
OpenVPN設定前に、サーバー・クライアント間の通信は確立できているものとします。
シナリオにおける設定の流れ
- ファイアウォール(OpenVPNサーバーモード ホスト名:FW80)設定
1.インターフェイスにvtun0というトンネルのインターフェイスを作成
2.vtun0のインターフェイスは、OpenVPNのサーバーモードを設定
3.OpenVPNのトンネルが利用するIPアドレスに、192.168.110.0/24を設定
4.OpenVPN接続後に、サーバーからクライアントにルート注入する経路として192.168.60.0/24を設定
5.CA証明書を/config/auth/ca.crtを指定
6.サーバー証明書を/config/auth/server.crtを指定
7.サーバーの秘密鍵を /config/auth/server.keyを指定
8.DHファイルを/config/auth/dh.pemを指定
- ファイアウォール(OpenVPNクライアントモード ホスト名:FW70)
1.インターフェイスにvtun0というトンネルのインターフェイスを作成
2.vtun0のインターフェイスは、OpenVPNのクライアントモードを設定
3.VPNトンネルを接続するためのサーバー側のアドレス172.16.210.80を設定
4.CA証明書を/config/auth/ca.crtを指定
5.クライアント証明書を/config/auth/client1.crtを指定
6.クライアントの秘密鍵を /config/auth/client1.keyを指定
証明書の準備
OpenVPNのサーバー接続に関しては、証明書を使った方法での認証を実行しております。
証明書ファイルについては、必要に応じて利用者が信頼できる認証期間から発行された証明書などをご利用ください。
必要な証明書ファイルは以下のとおりです。
ファイル名(例) | 証明書や鍵ファイル種別 | 保存する装置 |
ca.crt | CA証明書 | サーバー・クライアントで共通で保存 |
server.crt | CA局から発行されたサーバー証明書 | 接続するサーバーモードの機器へ保存 |
server.key | サーバー秘密鍵 | 接続するサーバーモードの機器へ保存 |
dh.pem | DHファイル | 接続するサーバーモードの機器へ保存 |
client.crt | CA局から発行されたクライアント証明書 | 接続するクライアントモードの機器へ保存 |
client.key | クライアント秘密鍵 | 接続するクライアントモードの機器へ保存 |
ファイアウォールに鍵ファイルをコピーする方法はSCPがご利用いただけます。
[root@vserver7 openvpn]# scp /etc/openvpn/server.key user-admin@10.0.0.80:/config/auth/
Welcome to Brocade vRouter
user-admin@10.0.0.80's password:
server.key 0% 0 0.0KB/s --:-- ETAserver.key 100% 1704 1.7KB/s 00:00
[root@vserver7 openvpn]#
CLIにて入力するコマンド
- OpenVPNサーバーモード 設定
set interfaces openvpn vtun0 mode 'server'
set interfaces openvpn vtun0 server push-route '192.168.60.0/24'
set interfaces openvpn vtun0 server subnet '192.168.110.0/24'
set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt'
set interfaces openvpn vtun0 tls cert-file '/config/auth/server.crt'
set interfaces openvpn vtun0 tls dh-file '/config/auth/dh.pem'
set interfaces openvpn vtun0 tls key-file '/config/auth/server.key'
- OpenVPNクライアントモード 設定
set interfaces openvpn vtun0 mode 'client'
set interfaces openvpn vtun0 remote-host '172.16.210.80'
set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt'
set interfaces openvpn vtun0 tls cert-file '/config/auth/client1.crt'
set interfaces openvpn vtun0 tls key-file '/config/auth/client1.key'
注釈
サーバー秘密鍵やクライアント秘密鍵を指定してコミットすると、Warningが表示されますが、接続や通信には問題ありません。 「Warning: Specified key-file /config/auth/server.key does not have expected header and may not be valid」
正しく設定が完了したときのコンフィグレーションは次のとおりです。
- OpenVPNサーバーモード 設定
interfaces {
dataplane dp0s4 {
address 192.168.60.80/24
}
dataplane dp0s5 {
address 172.16.210.80/24
}
dataplane dp0s6
dataplane dp0s7 {
address 10.0.0.80/24
}
loopback lo
openvpn vtun0 {
mode server
server {
push-route 192.168.60.0/24
subnet 192.168.110.0/24
}
tls {
ca-cert-file /config/auth/ca.crt
cert-file /config/auth/server.crt
dh-file /config/auth/dh.pem
key-file /config/auth/server.key
}
}
}
- OpenVPNクライアントモード 設定
interfaces {
dataplane dp0s4 {
address 192.168.50.70/24
}
dataplane dp0s5 {
address 172.16.110.70/24
}
dataplane dp0s6 {
}
dataplane dp0s7 {
address 10.0.0.70/24
}
loopback lo
openvpn vtun0 {
mode client
remote-host 172.16.210.80
tls {
ca-cert-file /config/auth/ca.crt
cert-file /config/auth/client1.crt
key-file /config/auth/client1.key
}
}
}
動作確認結果
2台のファイアウォールがそれぞれOpenVPNのサーバー・クライアントとして動作することを確認できました。
OpenVPNクライアントからサーバーへOpenVPNトンネルが接続されており、経路情報も表示されていることが確認できます。
通信確認結果も、サーバー・クライアント間でPING通信が可能であることが確認できました。
- OpenVPNの接続状態
#OpenVPNサーバー OpenVPN状態確認 → 接続OK
uesr-admin@FW80:~$ show openvpn server status
OpenVPN server status on vtun0
Client CN Remote IP Tunnel IP TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
client1 172.16.110.70 192.168.110.2 69.7K 94.1K Sat Mar 25 09:02:06 2017
user-admin@FW80:~$
user-admin@FW80:~$ show int
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
dp0s3 100.xx.xx.65/20 u/u
dp0s4 192.168.60.80/24 u/u
dp0s5 172.16.210.80/24 u/u
dp0s6 - A/D
dp0s7 10.0.0.80/24 u/u
vtun0 192.168.110.1/24 u/u
user-admin@FW80:~$
#OpenVPNクライアント OpenVPN状態確認 → 接続OK
user-admin@FW70:~$ show openvpn client status
OpenVPN client status on vtun0
Server CN Remote IP Tunnel IP TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
N/A 172.16.210.80 N/A 106.9K 99.9K N/A
user-admin@FW70:~$
user-admin@FW70:~$ show int
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
dp0s3 100.xx.xx.64/20 u/u
dp0s4 192.168.50.70/24 u/u
dp0s5 172.16.110.70/24 u/u
dp0s6 - A/D
dp0s7 10.0.0.70/24 u/u
vtun0 192.168.110.2/24 u/u
user-admin@FW70:~$
- OpenVPN接続時における経路状態(Server/Client)
#OpenVPNサーバー OpenVPN経路状態
user-admin@FW80:~$ sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
> - selected route, * - FIB route, p - stale info
IP Route Table for VRF "default"
C *> 10.0.0.0/24 is directly connected, dp0s7
S *> 100.xx.x.64/26 [210/0] via 100.xx.xx.1, dp0s3
S *> 100.xx.xx.64/26 [210/0] via 100.xx.xx.1, dp0s3
C *> 100.xx.xx.0/20 is directly connected, dp0s3
C *> 127.0.0.0/8 is directly connected, lo
O *> 172.16.110.0/24 [110/2] via 172.16.210.10, dp0s5, 04:12:10
C *> 172.16.210.0/24 is directly connected, dp0s5
C *> 192.168.60.0/24 is directly connected, dp0s4
C *> 192.168.110.0/24 is directly connected, vtun0
user-admin@FW80:~$
#OpenVPNクライアント OpenVPN経路状態
user-admin@FW70:~$ show ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
> - selected route, * - FIB route, p - stale info
IP Route Table for VRF "default"
C *> 10.0.0.0/24 is directly connected, dp0s7
S *> 100.xx.x.64/26 [210/0] via 100.xx.xx.1, dp0s3
S *> 100.xx.xx.64/26 [210/0] via 100.xx.xx.1, dp0s3
C *> 100.xx.xx.0/20 is directly connected, dp0s3
C *> 127.0.0.0/8 is directly connected, lo
C *> 172.16.110.0/24 is directly connected, dp0s5
O *> 172.16.210.0/24 [110/2] via 172.16.110.10, dp0s5, 03:52:34
C *> 192.168.50.0/24 is directly connected, dp0s4
K *> 192.168.60.0/24 via 192.168.110.1, vtun0
C *> 192.168.110.0/24 is directly connected, vtun0
user-admin@FW70:~$
- OpenVPN接続時における通信確認(Server/Client)
#OpenVPNサーバーからクライアントへの通信確認 → OK
user-admin@FW80:~$ ping 192.168.110.2 count 5
PING 192.168.110.2 (192.168.110.2) 56(84) bytes of data.
64 bytes from 192.168.110.2: icmp_seq=1 ttl=64 time=2.36 ms
64 bytes from 192.168.110.2: icmp_seq=2 ttl=64 time=2.57 ms
64 bytes from 192.168.110.2: icmp_seq=3 ttl=64 time=2.32 ms
64 bytes from 192.168.110.2: icmp_seq=4 ttl=64 time=7.79 ms
64 bytes from 192.168.110.2: icmp_seq=5 ttl=64 time=2.55 ms
--- 192.168.110.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 2.324/3.524/7.799/2.140 ms
user-admin@FW80:~$
#OpenVPNクライアントからOpenVPNサーバーへの通信確認 → OK
user-admin@FW70:~$ ping 192.168.110.1 count 5
PING 192.168.110.1 (192.168.110.1) 56(84) bytes of data.
64 bytes from 192.168.110.1: icmp_seq=1 ttl=64 time=2.17 ms
64 bytes from 192.168.110.1: icmp_seq=2 ttl=64 time=3.14 ms
64 bytes from 192.168.110.1: icmp_seq=3 ttl=64 time=2.61 ms
64 bytes from 192.168.110.1: icmp_seq=4 ttl=64 time=3.01 ms
64 bytes from 192.168.110.1: icmp_seq=5 ttl=64 time=2.62 ms
--- 192.168.110.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 2.179/2.712/3.140/0.345 ms
user-admin@FW70:~$
#OpenVPNクライアントから サーバー側ネットワークへの通信確認 → OK
user-admin@FW70:~$ ping 192.168.60.11 count 5
PING 192.168.60.11 (192.168.60.11) 56(84) bytes of data.
64 bytes from 192.168.60.11: icmp_seq=1 ttl=125 time=15.0 ms
64 bytes from 192.168.60.11: icmp_seq=2 ttl=126 time=3.98 ms
64 bytes from 192.168.60.11: icmp_seq=3 ttl=125 time=4.38 ms
64 bytes from 192.168.60.11: icmp_seq=4 ttl=126 time=7.77 ms
d64 bytes from 192.168.60.11: icmp_seq=5 ttl=126 time=4.27 ms
--- 192.168.60.11 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 3.989/7.102/15.094/4.229 ms
user-admin@FW70:~$