#author("2018-08-21T10:53:21+09:00","","")

#author("2018-08-21T10:57:13+09:00","","")

[[CentOS7]]

*OpenVPNインストール(tunモード) [#ve80b5aa]
''OpenVPN'' と ''easy-rsa'' を ''epel''リポジトリからインストールします。
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# yum --enablerepo=epel -y install openvpn easy-rsa|

*認証局の設置 [#j70832ca]
バージョンアップで設定ファイルや証明書が変更されるのを防ぐために新しいディレクトリを作り、そこに設定ファイルなどを保存する運用を行う。

**認証局の初期化 [#db103a75]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# mkdir /etc/openvpn|
|[root@localhost ~]# cp /usr/share/easy-rsa/3.0.3/* /etc/openvpn|
|[root@localhost ~]# cd /etc/openvpn &color(lime){←ディレクトリ移動};|
|[root@localhost openvpn]# ./easyrsa init-pki &color(lime){←初期化};|

**認証局の作成 [#z4d27d64]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# ./easyrsa build-ca|
|Generating a 2048 bit RSA private key &br; .......................................+++ &br; .............................................................................+++ &br; writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key.UzE5bd0SCu' &br; Enter PEM pass phrase: &color(lime){←任意のパスフレーズを入力}; &br; Verifying - Enter PEM pass phrase: &color(lime){←もう一度入力}; &br; ----- &br; You are about to be asked to enter information that will be incorporated &br; into your certificate request. &br; What you are about to enter is what is called a Distinguished Name or a DN. &br; There are quite a few fields but you can leave some blank &br; For some fields there will be a default value, &br; If you enter '.', the field will be left blank. &br; ----- &br; Common Name (eg: your user, host, or server name) [Easy-RSA CA]: &color(lime){←VPN接続時のホスト名(FQDN)を入力(例:hogehoge.com)};  &br;  &br; CA creation complete and you may now import and sign cert requests. &br; Your new CA certificate file for publishing is at: &br; /etc/openvpn/easy-rsa/pki/ca.crt|

-CA証明書(''ca.crt'')およびCA秘密鍵(''ca.key'')が作成されます。
-入力したパスフレーズは、CA秘密鍵(''ca.key'')のパスフレーズになります。

**DHパラメータ作成 [#pf8739d3]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# ./easyrsa gen-dh|
|&color(lightpink){時間が掛かる(2分~3分)ので、しばし待機};|
|DH parameters of size 2048 created at /etc/openvpn/pki/dh.pem|

''DH''パラメータ(''dh.pem'')が作成されます。

**ta.key作成 [#m4d82b5f]
''tls-auth''を設定しておくと、VPNセッション開始時のパケットを''HMAC''で認証し、認可されないパケットは破棄されるので、''DDoS''攻撃を防ぐことができる。オープンなVPNサーバーを建てる時には設定しておくことがオススメらしい。''ta.key'' は静的共有鍵なので、安全な方法で配送される必要がある。

|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# openvpn --genkey --secret ./ta.key|

**サーバー用の証明書と秘密鍵の作成 [#qab9f682]
VPNサーバー「hogehoge.com」用の証明書と秘密鍵をパスフレーズ無しで作成します。
|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# ./easyrsa build-server-full hogehoge.com nopass|
|Generating a 2048 bit RSA private key &br; ....+++ &br; .......................................................+++ &br; writing new private key to '/etc/openvpn/easy-rsa/pki/private/hogehoge.com.key.O3l2ARzsse' &br; ----- &br; Using configuration from ./openssl-1.0.cnf &br; Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: &color(lime){←CA秘密鍵(ca.key)のパスフレーズを入力};  &br; Check that the request matches the signature &br; Signature ok &br; The Subject's Distinguished Name is as follows &br; commonName            :ASN.1 12:'hogehoge.com' &br; Certificate is to be certified until Mar 28 17:05:59 2028 GMT (3650 days) &br;  &br; Write out database with 1 new entries &br; Data Base Updated|

サーバー用の証明書(hogehoge.com.crt)および秘密鍵(hogehoge.com.key)が作成されます

**クライアント用の証明書と秘密鍵の作成 [#xf02ccb1]
クライアント「client01」用の証明書と秘密鍵をパスフレーズ無しで作成します。

|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# ./easyrsa build-client-full client01 nopass &br; Generating a 2048 bit RSA private key &br; ................+++ &br; ..............................................................................................................+++ &br; writing new private key to '/etc/openvpn/easy-rsa/pki/private/client01.key.MY2YPyBgBr' &br; ----- &br; Using configuration from ./openssl-1.0.cnf &br; Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: &color(lime){←CA秘密鍵(ca.key)のパスフレーズを入力}; &br; Check that the request matches the signature &br; Signature ok &br; The Subject's Distinguished Name is as follows &br; commonName            :ASN.1 12:'client01' &br; Certificate is to be certified until Mar 28 17:17:18 2028 GMT (3650 days) &br; Write out database with 1 new entries &br; Data Base Updated|

クライアント用の証明書(client01.crt)および秘密鍵(client01.key)が作成されます

*OpenVPNの設定 [#ped09565]
**サーバー設定 [#z08362e9]
''証明書のコピー''
|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# cp /etc/openvpn/pki/ca.crt .|
|[root@localhost openvpn]# cp /etc/openvpn/pki/dh.pem .|
|[root@localhost openvpn]# cp /etc/openvpn/pki/issued/hogehoge.com.crt .|
|[root@localhost openvpn]# cp /etc/openvpn/pki/private/hogehoge.com.key .|

**サーバーのコンフィグファイルのひな型をコピー [#a61f4d66]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf server.conf|

**コンフィグファイル(server.conf)の編集 [#b284e7bc]
|BGCOLOR(black):COLOR(white):|c
|port 1194 &color(lime){←使用するポート番号}; &br; proto tcp &color(lime){←使用するプロトコル}; &br; dev tun &color(lime){←TAP/TUNデバイス指定 ([[VPNのtapとtunの違い]])}; &br; ca ca.crt &color(lime){←ca証明書}; &br; cert hogehoge.com.crt &color(lime){←サーバ証明書}; &br; key hogehoge.com.key  # This file should be kept secret &color(lime){←秘密鍵の指定}; &br; dh dh.pem &color(lime){←乱数(DH)パラメータの指定}; &br; server 10.8.0.0 255.255.255.0 &color(lime){←VPN用ネットワーク指定}; &br; ifconfig-pool-persist ipp.txt &color(lime){←配布用IPアドレスのテーブル(固定IPを使用する場合、ipp.txtを編集)}; &br; push "route 192.168.0.0 255.255.255.0" &color(lime){←LAN側アドレス指定}; &br; client-to-client &color(lime){←クライアント間通信の許可}; &br; keepalive 10 120 &color(lime){←キープアライブ設定(10秒ごとに生存確認、120秒無応答でダウン)}; &br; tls-auth ta.key 0 # This file is secret &color(lime){←TLS認証キーの指定}; &br; cipher AES-256-CBC &color(lime){←キーの強度を指定}; &br; comp-lzo &color(lime){←圧縮の有効可}; &br; user nobody &color(lime){←ユーザ権限の設定}; &br; group nobody &br; persist-key &br; persist-tun &br; status /var/log/openvpn-status.log &color(lime){←ステータスログ}; &br; log         /var/log/openvpn.log &color(lime){←稼働ログ}; &br; log-append  /var/log/openvpn.log &br; verb 3 &color(lime){←ログレベル}; &br; ;explicit-exit-notify 1 &color(lime){←tcpを使う場合はコメントアウトする};|

**ipp.txtの記述方法 [#n97f63bd]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# vi /etc/openvpn/ipp.txt|
|client01,10.8.0.201  &br; client02,10.8.0.202|
ここで固定指定されていないユーザーについては、サーバー設定ファイルに記載された範囲内で、使用されていないものが順番に使用される。

*起動テスト [#kd62729e]
**起動テストを実行 [#k5fd4268]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost openvpn]# openvpn server.conf|

**/var/log/openvpn.log にこんな感じのログが出ていればOK [#d64810fd]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# tail /var/log/openvpn.log|
|Sun Apr  1 03:28:46 2018 OpenVPN 2.4.5 x86_64-redhat-linux-gnu [Fedora EPEL patched] [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar  1 2018 &br;  &br; (省略) &br;  &br; &color(lightpink){Sun Apr  1 03:28:46 2018 Initialization Sequence Completed};|
|&color(lime){[''Ctrl'']キー + [''C'']キー で抜ける};|





*IPv4フォワーディングを有効にする [#obd124f8]
**フォワーディング有効化 [#h6f1dea7]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# vi /etc/sysctl.conf|
|net.ipv4.ip_forward=1 &color(lime){←最下行に追記};|
|[root@localhost ~]# sysctl -p &color(lime){←設定反映};|

*起動 [#h64f9b94]
**サービスとして起動 [#waeb4ba4]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# systemctl start openvpn@server|

※サービス起動コマンドの''@''以降の''「server」''の部分は''OpenVPN''のコンフィグファイル名を指定する。

※サービス起動コマンドの''@''以降の''「&color(red){server};」''の部分は''OpenVPN''のコンフィグファイル名を指定する。


例:''server.conf'' の場合は openvpn@''server'' となる。

例:''&color(red){server};.conf'' の場合は openvpn@''&color(red){server};'' となる。


**サービス状態確認 [#r19ccb9a]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# systemctl starus openvpn@server|

**サービス自動起動 [#r8fd1e9e]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# systemctl enable openvpn@server|

**サービス停止 [#ycc97625]
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# systemctl stop openvpn@server|

*LAN側デフォルトゲートウェイにスタティックルート追加 [#neea0ac5]
LAN側のデフォルトゲートウェイ(ルーター等)に、VPNクライアント向けのルーティング情報を追加する。

例)下記の構成で構築した場合
-VPNネットワーク:10.8.0.0/24
-LAN側ネットワーク:192.168.0.0/24
-VPNサーバーのLAN側IPアドレス:192.168.0.50

**LAN側デフォルトゲートウェイに下記のスタティックルートを追加する。 [#f581ec9e]
|''宛先ネットワーク''|10.8.0.0/24|
|''ゲートウェイ''|192.168.0.50|

*Firewallの設定変更 [#kd85b6b0]
''firewall''へ下記の通信許可を追加
-''TCP 1194''
-LAN側ネットワーク
-VPNネットワーク
|BGCOLOR(black):COLOR(white):|c
|[root@localhost ~]# firewall-cmd --add-port=1194/tcp --zone=public --permanent|
|[root@localhost ~]# firewall-cmd --permanent --zone=trusted --add-source=192.168.0.0/24|
|[root@localhost ~]# firewall-cmd --permanent --zone=trusted --add-source=10.8.0.0/24|
|[root@localhost ~]# firewall-cmd --reload|



|[root@localhost ~]# firewall-cmd --reload &color(lime){←設定再読み込み};|

|[root@localhost ~]# firewall-cmd --list-all &color(lime){←設定確認};|

|[root@localhost ~]# firewall-cmd --get-active-zones &color(lime){←設定確認};|


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS