42
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

CentOS7でVPNサーバを作ってみた(tun編)・・・サーバ起動まで

外出先から自宅のルータの設定を変更できると便利だなと思い、自宅のCentOS7.4OpenVPN+easy-rsaを使ったVPN環境を作ってみたので、再作成するときのために手順を残します。

準備作業

ルータの設定変更

ポートフォワードの設定

自宅ルータのポートフォワード設定で、ルータの1194ポートに来たパケットを、サーバ(CentOS)の1194ポートへフォワードするように設定変更しておきます。
※設定方法は、ルータによる

Firewallの設定変更

CentOSのfirewallの設定を変更します。
対象となるZone(僕の自宅の場合はZone=external)になっているので、そこに1194/udpの通信許可を追加します。

firewallへ1194/udpの通信許可を設定
# firewall-cmd --add-port=1194/udp --zone=external --permanent
# firewall-cmd --reload

導入作業

パッケージのインストール

epelリポジトリの追加

今回はepelリポジトリ経由でインストールするので、まずはyumにリポジトリの追加を行います。

epelリポジトリの追加
# yum install epel-release -y

パッケージのインストール

OpenVPNとeasy-rsaをepelリポジトリからインストールします。

パッケージのインストール
# yum --enablerepo=epel -y install openvpn easy-rsa

※2018/3/31:openvpn2.4.5とeasy-rsa3.0.3がインストールされました。

認証局の設置

認証局の設置

(1)ファイルのコピー
バージョンアップ等で書き換えられると困るので、/etc/openvpn/easy-rsa/にコピーしておきます。

設定ファイルのコピー
# mkdir /etc/openvpn/easy-rsa
# cp /usr/share/easy-rsa/3.0.3/* /etc/openvpn/easy-rsa/ -R

(2)作業ディレクトリの移動

/etc/openvpn/easy-rsa/へ移動
# cd /etc/openvpn/easy-rsa

(3)初期化

初期化
# ./easyrsa init-pki

※pkiディレクトリが作成されます

(4)認証局の作成

認証局の作成
# ./easyrsa build-ca
Generating a 2048 bit RSA private key
.......................................+++
.............................................................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key.UzE5bd0SCu'
Enter PEM pass phrase: <任意のパスフレーズを入力>
Verifying - Enter PEM pass phrase: <もう一度入力>
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: <任意の名前を入力>

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt

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

(5)DHパラメータの作成

DHパラメータの作成
# ./easyrsa gen-dh

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

(6)サーバ用の証明書と秘密鍵の作成
VPNサーバ「server_r」用の証明書と秘密鍵をパスフレーズ無しで作成します。

サーバ用の証明書と秘密鍵の作成
# ./easyrsa build-server-full server_r nopass
Generating a 2048 bit RSA private key
....+++
.......................................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/server_r.key.O3l2ARzsse'
-----
Using configuration from ./openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: <ca秘密鍵(ca.key)のパスフレーズを入力>
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server_r'
Certificate is to be certified until Mar 28 17:05:59 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

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

(7)クライアント用の証明書と秘密鍵の作成
クライアント「client1」用の証明書と秘密鍵をパスフレーズ無しで作成します。

クライアント用の証明書と秘密鍵の作成
# ./easyrsa build-client-full client1 nopass
Generating a 2048 bit RSA private key
................+++
..............................................................................................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client1.key.MY2YPyBgBr'
-----
Using configuration from ./openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:<ca秘密鍵(ca.key)のパスフレーズを入力>
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client1'
Certificate is to be certified until Mar 28 17:17:18 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

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

OpenVPNの設定

サーバ設定

(1)作業ディレクトリの変更

作業ディレクトリの変更
cd /etc/openvpn/

(2)サーバのコンフィグファイルのひな型をコピー

コンフィグファイルのコピー
# cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf server_r.conf

(3)コンフィグファイル(server_r.conf)の編集
確認および変更した部分は下記の通り

server_r.conf
[32行目:使用するポート番号]
 port 1194
[36行目:使用するプロトコル]
 proto udp
[53行目:TAP/TUNデバイス指定]
 dev tun
[78,79,80行目(変更):ca証明書、サーバ証明書、秘密鍵の指定]
 ca /etc/openvpn/easy-rsa/pki/ca.crt
 cert /etc/openvpn/easy-rsa/pki/issued/server_r.crt
 key /etc/openvpn/easy-rsa/pki/private/server_r.key  # This file should be kept secret
[85行目(変更):乱数(DH)パラメータの指定]
 dh /etc/openvpn/easy-rsa/pki/dh.pem
[101行目:仮想ネットワークの指定(TUNモードの時に指定)]
 server 10.8.0.0 255.255.255.0
[108行目:配布用IPアドレスのテーブル(固定IPを使用する場合、ipp.txtを編集)]
 ifconfig-pool-persist ipp.txt
[142行目(変更):サーバ側のLANセグメント(TUNモードの時に指定)]
 push "route 192.168.0.0 255.255.255.0"
[209行目(変更):クライアント間通信の許可]
 client-to-client
[231行目:キープアライブ設定(10秒ごとに生存確認、120秒無応答でダウン)]
 keepalive 10 120
[244行目:TLS認証キーの指定]
 tls-auth ta.key 0 # This file is secret
[263行目(変更):圧縮の有効可]
 comp-lzo
[274,275行目(変更):ユーザ権限の設定]
 user nobody
 group nobody
[281,282行目:役割不明だけど大事なものらしい]
 persist-key
 persist-tun
[287行目(変更):ステータスログ]
 status /var/log/openvpn-status.log
[296行目(変更):稼働ログ]
 log         /var/log/openvpn.log
[306行目:ログレベル]
 verb 3

(4)TLS認証キーの作成

TLS認証キーの作成
# openvpn --genkey --secret /etc/openvpn/ta.key

*※TLS認証キー(ta.key)が作成される

サーバの起動

テスト起動

テスト起動
# openvpn server_r.conf
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

(省略)

Sun Apr  1 03:28:46 2018 Initialization Sequence Completed

※こんな感じのログが出ればOK

サービスとして起動

サービスとして起動
# systemctl start openvpn@server_r
サービス状態確認
# systemctl status openvpn@server_r

自動起動にする場合は・・・

サービス自動起動
# systemctl enable openvpn@server_r

次は、構築したVPNサーバへ、WindowsとAndroidから接続しようと思います。
CentOS7でVPNサーバを作ってみた(tun編)・・・クライアントから接続へ続きます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
42
Help us understand the problem. What are the problem?