villiogears
LinuxでのOpenVPNのセットアップ方法
Ubuntu 22.04でのOpenVPNサーバーセットアップ
Ubuntu 22.04でOpenVPNサーバーを構築する手順を詳しく説明します。
1. システムの更新とOpenVPNのインストール
# システムのパッケージを最新に更新
sudo apt update && sudo apt upgrade -y
# OpenVPNとEasy-RSAをインストール
sudo apt install openvpn easy-rsa -y
2. 証明書認証局(CA)の設定
# Easy-RSAディレクトリを作成
mkdir ~/openvpn-ca
cd ~/openvpn-ca
# Easy-RSAファイルをコピー
cp -r /usr/share/easy-rsa/* ~/openvpn-ca/
# vars ファイルを編集
nano vars
varsファイルに以下の内容を追加:
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Tokyo"
export KEY_ORG="YourOrganization"
export KEY_EMAIL="your-email@example.com"
export KEY_OU="IT Department"
export KEY_NAME="server"
3. 証明書の生成
# 環境変数を読み込み
source vars
# キーとパラメータをクリーンアップ
./clean-all
# CAキーペアを構築
./build-ca
# サーバー証明書とキーを生成
./build-key-server server
# Diffie-Hellmanパラメータを生成
./build-dh
# HMAC署名を生成(セキュリティ強化)
openvpn --genkey --secret keys/ta.key
4. OpenVPNサーバー設定
# 生成したキーファイルをOpenVPNディレクトリにコピー
sudo cp ~/openvpn-ca/keys/{server.crt,server.key,ca.crt,dh2048.pem,ta.key} /etc/openvpn/
# サーバー設定ファイルを作成
sudo nano /etc/openvpn/server.conf
/etc/openvpn/server.confの設定内容:
# ポート設定
port 1194
proto udp
dev tun
# 証明書とキーファイル
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
# ネットワーク設定
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# クライアントのインターネットアクセスを許可
push "redirect-gateway def1 bypass-dhcp"
# DNSサーバーを指定
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# セキュリティ設定
tls-auth ta.key 0
key-direction 0
cipher AES-256-CBC
auth SHA256
# その他の設定
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
# ログ設定
status openvpn-status.log
log openvpn.log
verb 3
5. ネットワーク設定(IP転送とiptables)
# IP転送を有効化
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
# 設定を即座に適用
sudo sysctl -p
# iptablesルールを設定(NATを有効化)
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# iptablesルールを永続化
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
6. OpenVPNサービスの開始
# OpenVPNサーバーを開始
sudo systemctl start openvpn@server
# 自動起動を有効化
sudo systemctl enable openvpn@server
# サービス状態を確認
sudo systemctl status openvpn@server
7. クライアント証明書の生成
# クライアント用のディレクトリに戻る
cd ~/openvpn-ca
# クライアント証明書を生成(例:client1)
./build-key client1
# クライアント設定ファイル用のディレクトリを作成
mkdir ~/client-configs
mkdir ~/client-configs/files
8. クライアント設定ファイルの作成
クライアント設定テンプレートを作成:
# ベース設定ファイルを作成
nano ~/client-configs/base.conf
base.confの内容:
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
key-direction 1
cipher AES-256-CBC
auth SHA256
comp-lzo
verb 3
9. クライアント設定生成スクリプト
# 設定生成スクリプトを作成
nano ~/client-configs/make_config.sh
スクリプトの内容:
#!/bin/bash
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/$1.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/$1.key \
<(echo -e '</key>\n<tls-auth>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-auth>') \
> ${OUTPUT_DIR}/$1.ovpn
# スクリプトを実行可能にする
chmod 700 ~/client-configs/make_config.sh
# クライアント設定ファイルを生成
cd ~/client-configs
./make_config.sh client1
10. ファイアウォール設定
# UFWを使用する場合
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw enable
# ファイアウォールルールを確認
sudo ufw status
トラブルシューティング
ログの確認
# OpenVPNログを確認
sudo tail -f /var/log/openvpn.log
# システムログを確認
sudo journalctl -u openvpn@server -f
接続テスト
# サーバーでの接続状態確認
sudo cat /etc/openvpn/openvpn-status.log
# ネットワークインターフェース確認
ip addr show tun0
よくある問題と解決方法
-
クライアントが接続できない
- ファイアウォール設定を確認
- ポート1194/UDPが開いているか確認
-
インターネットアクセスができない
- IP転送が有効になっているか確認
- iptablesのNATルールが正しく設定されているか確認
-
DNS解決ができない
- クライアント設定のDNSサーバー設定を確認
これでUbuntu 22.04でのOpenVPNサーバーセットアップが完了です。生成されたクライアント設定ファイル(.ovpn)をクライアントに配布して接続を行ってください。