1. はじめに
OS を変えて OpenVPN サーバーを構築したので手順を残しておきます。
環境は
- AlmaLinux 9.5
- EasyRSA 3.2.1
- OpenVPN 2.5.11
- OpenSSL 3.2.2
で OpenVPN サーバーを構築しています。
2. インストールと初期設定
dnf install -y epel-release
dnf install -y openvpn easy-rsa
/usr/share/easy-rsa/3.2.1 を /etc/openvpn/easy-rsa にコピーします。
cp -r /usr/share/easy-rsa/3.2.1 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
PKI を初期化します。
./easyrsa init-pki
CA(認証局)を作成します。
./easyrsa build-ca
サーバー証明書を作成します。
# <server> はなんでもいいですがわかりやすくサーバー名を使うのをおすすめします
./easyrsa build-server-full <server> nopass
Diffie-Hellman パラメータを作成します。
./easyrsa gen-dh
TLS 認証キーを作成します。
openvpn --genkey --secret /etc/openvpn/server/ta.key
OpenVPN サーバーの設定ファイルをコピーします。
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/server.conf
3. 設定ファイルの編集
編集する設定ファイルはこちらです。
vi /etc/openvpn/server/server.conf
以下のように設定します。
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt # 作成した CA の証明書
cert /etc/openvpn/easy-rsa/pki/issued/<server>.crt # 作成したサーバー証明書
key /etc/openvpn/easy-rsa/pki/private/<server>.key # 作成したサーバー秘密鍵
dh /etc/openvpn/easy-rsa/pki/dh.pem # 作成した Diffie-Hellman パラメータ
server 192.168.yyy.yyy 255.255.255.0 # クライアントに割り当てる OpenVPN接続時に割り当てる IP アドレスの範囲
push "route 192.168.xxx.xxx 255.255.255.0" # クライアントにルーティング情報を教える
push "redirect-gateway def1 bypass-dhcp" # クライアントの全ての通信を VPN 経由にする
push dhcp-option DNS 192.168.xxx.xxx # クライアントに DNS サーバーの IP アドレスを教える
;client-to-client # クライアント間の通信を許可しないためコメント
tls-auth /etc/openvpn/server/ta.key 0 # 作成した TLS 認証キー
comp-lzo # 通信を圧縮する
use nobody
group nobody
status /var/log/openvpn-status.log
log /var/log/openvpn.log
;crl-verify /etc/openvpn/easy-rsa/pki/crl.pem # クライアント証明書の失効リスト。使う場合はコメントを外す
サーバーの起動と自動起動設定をします。
systemctl start openvpn-server@server
systemctl enable openvpn-server@server
4. IP フォワーディング と ファイアーウォールの設定
IP フォワーディングを有効にします。
echo -e "\n# Controls IP packet forwarding\nnet.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p # 設定を反映
ファイアーウォールの設定をします。
firewall-cmd --add-service=openvpn --permanent
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-port=1194/udp --zone=public --permanent
firewall-cmd --zone=trusted --add-service=openvpn --permanent
firewall-cmd --zone=trusted --add-interface=tun0 --permanent
# 192.168.yyy.xxx は OpenVPN サーバーの IP アドレスに置き換えてください
# <LAN> は LAN のインターフェース名に置き換えてください
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.yyy.xxx/24 -o <LAN> -j MASQUERADE
firewall-cmd --reload
5. クライアント証明書の作成
クライアント証明書を作成します。
cd /etc/openvpn/easy-rsa
# <client> にクライアント名を入れてください
./easyrsa build-client-full <client> nopass
以下にクライアント証明書が作成されます。
/etc/openvpn/easy-rsa/pki/issued/<client>.crt # クライアント証明書
/etc/openvpn/easy-rsa/pki/private/<client>.key # クライアント秘密鍵
あとは、クライアント証明書をクライアントに配布して、OpenVPN クライアントを設定すれば接続できます。
6. まとめ
昔、CentOS 7 で構築したときと変わらず。
iptables から firewalld に変えたところくらいで特に問題なく構築できました。
今回の記事も、Github Copilot が7割くらい書いてくれました。
A. 参考サイト
AlmaLinux9でのOpenVPNサーバーの設定
自宅にVPNサーバーを構築して、クライアント端末から接続確認する方法
OpenVPNのアカウント管理
コメント