Fedora 44 に upgrade したら、openvpn が動かなくなった
AWS Lightsail の AL2023 と、自宅の Fedora マシンの間を、openvpn を利用したP2P VPN接続して使っていました。
所が今まで使っていた Fedora 43 の openvpn 2.6 用の .conf は、Fedora 44 の openvpn 2.7 では使えなくなったようです。今まで手抜きをして、secret の静的共有鍵を使って接続していました。が、2.7ではそれが許されなくなって、 PKI証明書を使うことが必須となったようです。
.conf を更新して、繋がるように直した
エラー・メッセージと、Google 検索のAI出力、公式サイトのこの辺を斜めに眺めて、後は /usr/share/doc/openvpn/samples/ もチラと見て、次のように書いて解決しました。
/etc/openvpn/server/P2P-server.conf
dev tun
port 1194
mode p2p
#
# Certificates
ca /etc/pki/tls/certs/P2P-CA.crt
cert /etc/pki/tls/certs/P2P-Server.crt
key /etc/pki/tls/private/P2P-Server.pem
dh /etc/ssl/dhparam.pem
#
#
tls-server
# IPv4
proto udp
# Network: server is .1, client is .2
ifconfig 192.168.200.1 192.168.200.2
# Routing (Assuming client LAN is 192.168.200.0/24)
route 192.168.200.0 255.255.255.0
#
# IPv6
proto udp6
ifconfig-ipv6 <prefix>::1 <prefix>::2
#
#
# Security
cipher AES-256-GCM
auth SHA256
auth-nocache
keepalive 10 60
ping-timer-rem
#persist-key
persist-tun
user nobody
group nobody
daemon
#
#
# Logging
verb 3
/etc/openvpn/client/P2P-client.conf
dev tun
port 1194
remote <remote-server IP or FQDN>
mode p2p
#client
#
#
# Certificates
ca /etc/pki/tls/certs/P2P-CA.crt
cert /etc/pki/tls/certs/P2P-Client.crt
key /etc/pki/tls/private/P2P-Client.pem
#
remote-cert-tls server
#
#
tls-client
# IPv4
proto udp
# Network: matching the server's ifconfig
ifconfig 192.168.200.2 192.168.200.1
# Routing (Assuming server LAN is 192.168.1.0/24)
route 192.168.200.0 255.255.255.0
#
# IPv6
proto udp6
ifconfig-ipv6 <prefix>::2 <prefix>::1
#
#
# Security
cipher AES-256-GCM
auth SHA256
auth-nocache
keepalive 10 60
ping-timer-rem
persist-tun
user nobody
group nobody
daemon
#
#
# Logging
verb 3
解説
上記の .conf ファイルを修正し、配置する
必要箇所を自分の環境に合わせて修正して下さい。
- IPv4 の ifconfig / route 部分のアドレス
- IPv6 の ifconfig-ipv6 部分のアドレス
IPv6 を使ってないなら、proto udp6 と ifconfig-ipv6 双方コメントにして下さい。
それ以外は、必要ならお好みで色々手を加えて下さい。
出来上がったら、指定の場所に配置して下さい。
PKIのCA, server, client のそれぞれの秘密鍵/公開鍵の証明書ファイルを配置する
作り方は、別途調べて下さい。私は xca コマンドを利用して作っています。
作ったファイルは、.conf ファイルの示す場所に配置します。
サーバー側
-rw-r--r--. 1 root root 956 May 2 03:45 /etc/pki/tls/certs/P2P-CA.crt
-rw-r--r--. 1 root root 1038 May 2 03:52 /etc/pki/tls/certs/P2P-Server.crt
-rw-------. 1 root root 119 May 2 03:58 /etc/pki/tls/private/P2P-Server.pem
クライアント側
-rw-r--r--. 1 root root 956 May 2 03:45 /etc/pki/tls/certs/P2P-CA.crt
-rw-r--r--. 1 root root 1038 May 2 03:52 /etc/pki/tls/certs/P2P-Client.crt
-rw-------. 1 root root 119 May 2 03:58 /etc/pki/tls/private/P2P-Client.pem
openvpn 起動方法
既にやってた人は分かると思いますが、.conf をサーバー/クライアント共適切に配置して、
サーバー側
systemctl enable openvpn-server@P2P-server
systemctl start openvpn-server@P2P-server
クライアント側
systemctl enable openvpn-client@P2P-client
systemctl start openvpn-client@P2P-client
で実行できます。
確認
サーバーで、下記を実行すること位でしょうか?
# systemctl status openvpn-server@P2P-server
# ip link
# ip addr
# ping 192.168.200.2
# journalctl -u openvpn-server@P2P-server
- tun0 に、192.168.200.1 及び 付加した IPv6 アドレスがあること
- ping 応答があること
クライアントもほぼ同じですね
# systemctl status openvpn-client@P2P-client
# ip link
# ip addr
# ping 192.168.200.1
# journalctl -u openvpn-client@P2P-client
大体こんな感じで動くようになりました。
Download
End