コピペですぐ使える OpenVPNでプライベートネットワークの構築

other

こんにちは、nikomです。今回は自宅のPCとVPSをVPNを利用してプライベートな直つなぎ環境設定したよっていう内容です。そんなことしてなにするのって聞かれそうですが、用途としては自宅で稼働させているサーバーに外出先からVPS経由でアクセスできるようになります。
イメージとしては上の図の黄色領域を構築します。コピペで使える最速接続をめざしていきます。

OpenVPNをインストール

クライアントはWindowsPCです。公式サイトよりOpneVPNインストーラをダウンロードし、インストール。サーバーはCentOSでインストールはコマンドで行います。
プログラム自体にサーバー側とクライアント側の指定ができるのでインストールするプログラムは立場が入れ替わっても同一です。

CentOS側には暗号化通信の証明書・鍵生成のために必要なeasy-rsa(ver 3.0.8)もインストールしておきます。

yum install openvpn
yum install easy-rsa

# openvpnで使用するポートを開放しておきます
firewall-cmd --zone=public --add-port=1194/udp --permanent
firewall-cmd --reload

証明書と鍵の生成

サーバーとクライアント間で通信するために証明書と鍵を生成します。
インストール後に/usr/share/easy-rsaフォルダを確認してください。easy-rsaの本体があるはずです。今回インストールしたeasy-rsaのバージョンは3.0.8でしたので/usr/share/easy-rsa/3.0.8/easyrsaに本体がありました。

# easyrsaフォルダに移動 ↓ バージョンによってフォルダーの名前が変わります
cd /usr/share/easy-rsa/3.0.8

# PKI(Public Key Infrastructure)の初期化
./easyrsa init-pki

# CA(Certificate Authority)の生成
./easyrsa build-ca nopass

# サーバー証明書と鍵の生成
./easyrsa build-server-full server nopass

# クライアント証明書と鍵の生成
./easyrsa build-client-full client1 nopass

# Diffie-Hellmanパラメータの生成
./easyrsa gen-dh



# 証明書・鍵を保存するフォルダを作成
mkdir /etc/openvpn/server

# サーバー用の証明書・鍵をコピー
cp pki/ca.crt /etc/openvpn/server/ca.crt
cp pki/issued/server.crt /etc/openvpn/server/server.crt
cp pki/private/server.key /etc/openvpn/server/server.key
cp pki/dh.pem /etc/openvpn/server/dh.pem

以上のコマンドによって以下のようなファイルが生成されるはずです。

  1. ca.crt:./pki/ca.crt
  2. サーバー証明書:./pki/issued/server.crt
  3. サーバー鍵:./pki/private/server.key
  4. クライアント証明書:./pki/issued/client1.crt
  5. クライアント鍵:./pki/private/client1.key
  6. Diffie-Hellmanパラメータ:./pki/dh.pem

サーバー側とクライアント側で分けてこれらの証明書と鍵をわけて使用します。
ca.crt 、 client1.crt 、 client1.keyの3つのファイルをクライアントのWindowsPCに安全に移動させます。

サーバー側(CentOS)のOpenVPN設定ファイルの作成と起動

サーバー側で使用するOpenVPN設定です。/etc/openvpn/server/server.confに以下の内容を記述し保存します。

port   1194
proto  udp
dev    tun
auth SHA512

ca "/etc/openvpn/server/ca.crt"
cert "/etc/openvpn/server/server.crt"
key "/etc/openvpn/server/server.key"
dh "/etc/openvpn/server/dh.pem"

server 10.8.0.0 255.255.255.0
push "route 10.8.0.0 255.255.255.0"

client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3  

設定ファイルが作成できたらサーバーを起動します。

openvpn /etc/openvpn/server/server.conf

クライアント側(Windows)のOpenVPN設定ファイルの作成と起動

クライアント側で使用するOpenVPN設定です。C:\Program Files\OpenVPN\client\client.ovpnに以下の内容を記述し保存します。

client
dev tun 
proto udp
auth SHA512
remote 	[ OpenVPNサーバーのアドレス ] 1194
route 10.8.0.0 255.255.255.0
resolv-retry infinite
nobind 
user nobody
group nobody
comp-lzo
verb 3
ca "C:\\Program Files\\OpenVPN\\client\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\client\\client1.crt"
key "C:\\Program Files\\OpenVPN\\client\\client1.key"

赤文字の部分は適宜変更してください。
管理者権限を用いてクライアント側のOpenVPNを起動し接続トライします。

::管理者権限必須
"C:\Program Files\OpenVPN\bin\openvpn.exe" "C:\Program Files\OpenVPN\client\client.ovpn"

結果の確認

クライアント側にこのような画面が表示されたら接続完了です。pingの応答もしますが初期設定ではファイアウォールでブロックされている可能性がありますのでそちらの設定を先に確認して下さい。

サーバー側:10.8.0.1
クライアント側:10.8.0.6

コメント

タイトルとURLをコピーしました