OpenVPNサーバ(SSL-VPN)作成方法

以下、OpenVPNサーバのCentOS7での作成方法を示す。

・OpenVPNインストール
sudo su –
[root]
yum -y install openvpn-2.4.7-1.el7 easy-rsa-3.0.6-1.el7 –enablerepo=epel
※ openvpnなど、パッケージのバージョンが上記より新しくなり、上記が取得できる可能性がある。その場合は最新バージョンをインストールすること。
※ 例: yum -y install openvpn-2.4.8-1.el7 など (2019年12月時点)
cd /usr/share/easy-rsa/3.0.6/
./easyrsa init-pki
./easyrsa build-ca
※ PEMパスワード: <任意のパスワードを設定>
※ Common Name (eg: your user, host, or server name) [Easy-RSA CA]: <空白でEnter>
./easyrsa build-server-full server nopass
※PEMパスワードを入力
./easyrsa gen-dh
作成したCA証明書、サーバ用証明書、サーバ用秘密鍵、DHパラメータを/etc/openvpn以下にコピー
cp -p pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/openvpn/
cp pki/dh.pem /etc/openvpn/dh2048.pem
vim /etc/openvpn/service.conf
※ 環境に合わせて設定
・ OpenVPN起動
systemctl start openvpn@service
インスタンス再起動後もOpenVPN起動するよう設定
systemctl enable openvpn@service.service
・パケット転送を有効化
vim /etc/sysctl.conf
下記を入力
net.ipv4.ip_forward = 1
設定反映
sysctl -p
FW設定(※permanentオプションでインスタンス再起動後も有効になるよう設定)
firewall-cmd –permanent –direct –add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
設定反映
firewall-cmd –reload
ルールを表示・確認
firewall-cmd –direct –get-all-rules
・ユーザ登録
[root]
cd /usr/share/easy-rsa/3.0.6
./easyrsa build-client-full <name> nopass
※ PEMパスワードを入力
ファイル持ち出し用のホームディレクトリを作成(※ OpenVPNサーバ構築時の初回のみ)
mkdir /home/ssh-user
chmod 777 /home/ssh-user
上記ホームに必要なファイルをコピー
ユーザ追加時は、 <name> のディレクトリを作成
mkdir /home/ssh-user/<name>
cp /usr/share/easy-rsa/3.0.6/pki/ca.crt /home/ssh-user/<name>/
cp /usr/share/easy-rsa/3.0.6/pki/issued/<name>.crt /home/ssh-user/<name>/
cp /usr/share/easy-rsa/3.0.6/pki/private/<name>.key /home/ssh-user/<name>/
chmod -R 777 /home/ssh-user/<name>
コピーした上記3つのファイル( ca.crt , <name>.crt , <name>.key )を使用してOpenVPNクライアントでOpenVPNに接続する。
以上
・Tips
1. ルート広報の追加・修正などを実施したい場合
設定ファイルにルートを追加
[root]
vim /etc/openvpn/service.conf
— 以下、例
push “route 10.0.0.0 255.255.255.0”
OpenVPNサービスを再起動
※ OpenVPN経由でサーバにSSHしている場合は、OpenVPNのセッションが一時的に切断されるが、自動復旧する
systemctl restart openvpn@service.service