CentOS 6 で OpenVPN サーバーを構築する時の基本を確認します。この記事は、現在の新規構築で CentOS 6 を使うためのものではなく、古い OpenVPN サーバー構成を読み解くための資料です。証明書、トンネル、ルーティング、iptables を分けて確認します。
OpenVPN サーバーで確認する範囲
- OpenVPN パッケージとサービス
- CA / サーバー証明書 / DH パラメータ
- server.conf のトンネル設定
- クライアントへ配布する経路
- iptables と IP forwarding
- ログと接続状態
OpenVPN は起動しただけでは十分ではありません。クライアントが接続できるか、VPN 内のアドレスが配布されるか、目的ネットワークへ経路が通るかを分けて確認します。
パッケージとサービス確認
yum install openvpn
chkconfig openvpn on
service openvpn start
service openvpn status
openvpn --versionCentOS 6 の OpenVPN は、EPEL など追加リポジトリから導入されていることがあります。パッケージの出どころも確認しておくと、移行時に再現しやすくなります。
証明書ファイルの配置
ls -l /etc/openvpn
ls -l /etc/openvpn/keys
openssl x509 -in /etc/openvpn/keys/server.crt -noout -subject -issuer -datesサーバー証明書、秘密鍵、CA 証明書、DH パラメータ、CRL の場所を確認します。秘密鍵と CA 秘密鍵の扱いは分けるべきです。
server.conf の基本例
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
crl-verify keys/crl.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
keepalive 10 120
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3push route はクライアントへ配布する経路です。VPN サーバー自身がその宛先へ到達できること、戻り経路があること、iptables で許可されていることを合わせて確認します。
ルーティングと転送設定
sysctl net.ipv4.ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
grep ip_forward /etc/sysctl.conf
iptables -L -n
iptables -t nat -L -nVPN でよくある問題は、接続はできるが内部ネットワークへ到達できない状態です。これは OpenVPN の認証問題ではなく、経路、転送、NAT、戻り経路の問題であることが多いです。
接続確認
tail -f /var/log/openvpn.log
cat /var/log/openvpn-status.log
ip addr show tun0
ip route show接続確認では、クライアント証明書の CN、割り当て IP、ルート、ログを合わせて見ます。
まとめ
CentOS 6 の OpenVPN サーバーは、証明書、トンネル、経路、iptables、ログを分けて確認する必要があります。古い環境の移行では、設定ファイルだけでなく、クライアント証明書、失効リスト、配布経路、戻り経路をまとめて棚卸しします。
関連する記事
- CentOS 6 サーバー管理ガイド
CentOS 6 系の記事を役割別に確認できるハブページです。 - CentOS 6 easy-rsa で自己署名証明書を作成する
OpenVPN 用証明書を作成する記事です。 - CentOS 6 OpenVPN クライアント設定
クライアント側の証明書配置と接続設定です。
参考書籍
CentOS 6 のような古い Linux サーバー記事を読み直す時にも、コマンドライン操作の考え方を確認しやすい参考書籍です。
Amazon で見る
