
Debian、Ubuntu、Fedora、CentOS、Arch Linuxなどで独自のOpenVPNサーバーをセットアップ
Debian、Ubuntu、Fedora、openSUSE、CentOS、Amazon Linux、Arch Linux、Oracle Linux、Rocky Linux、AlmaLinux 向けの OpenVPN インストーラーです。
このスクリプトを使えば、数秒で独自の安全な VPN サーバーをセットアップして管理できます。
このスクリプトは、VPS や専用サーバー、あるいは自宅のコンピューターなど、自分のサーバー上で実行することを想定しています。
セットアップが完了すると、接続したいすべてのデバイス用のクライアント設定ファイルを生成できるようになります。
各クライアントは、サーバーを経由してインターネットトラフィックを完全に暗号化してルーティングできるようになります。```mermaid graph LR A[Phone] -->|Encrypted| VPN B[Laptop] -->|Encrypted| VPN C[Computer] -->|Encrypted| VPN
VPN[OpenVPN Server]
VPN --> I[Internet]
## Why OpenVPN?
このスクリプトが作成された当時、OpenVPNはオープンソースVPNの事実上の標準でした。WireGuardはその後登場し、ほとんどのユースケースでよりシンプルで高速です。[wireguard-install](https://github.com/angristan/wireguard-install) を参照してください。
とはいえ、以下のニーズがある場合にはOpenVPNが依然として有用です:
- **TCPサポート**: UDPがブロックされている制限的な環境でも動作します(企業ネットワーク、空港、ホテルなど)
- **パスワードで保護された秘密鍵**: WireGuardの設定は秘密鍵を平文で保存します
- **レガシー互換性**: 古いシステムを含むほぼすべてのプラットフォーム向けのクライアントが存在します
## Features
- すぐに使えるOpenVPNサーバーをインストール・設定します
- 自動化とスクリプトのためのCLIインターフェース(JSON出力付きの非対話モード)
- クライアント証明書とサーバー証明書の両方の更新
- 接続中のクライアントの一覧表示と監視
- 証明書失効時の即時クライアント切断(管理インターフェース経由)
- 可能な限り[公式OpenVPNリポジトリ](https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos)を使用して最新の安定版を取得します
- ファイアウォールルールとフォワーディングをシームレスに管理(firewalldおよびnftablesをネイティブサポート、iptablesにフォールバック)
- VPNサブネットの設定が可能(IPv4: デフォルト `10.8.0.0/24`、IPv6: デフォルト `fd42:42:42:42::/112`)
- トンネルMTUの設定が可能(デフォルト: `1500`)
- 必要に応じて、設定とファイアウォールルールを含め、OpenVPNをクリーンに削除できます
- 暗号化設定のカスタマイズが可能、デフォルト設定を強化(下記の[セキュリティと暗号化](#security-and-encryption)を参照)
- 利用可能な場合は最新のOpenVPN機能を使用(下記の[セキュリティと暗号化](#security-and-encryption)を参照)
- クライアントにプッシュするさまざまなDNSリゾルバー
- Unboundによるセルフホスト型リゾルバーの利用を選択可能(既存のUnboundインストールに対応)
- TCPとUDPの選択が可能
- 柔軟なIPv4/IPv6サポート:
- IPv4またはIPv6のサーバーエンドポイント(クライアントの接続方法)
- IPv4専用、IPv6専用、またはデュアルスタックのクライアント(VPNアドレス指定とインターネットアクセス)
- すべての組み合わせをサポート: 4→4, 4→4/6, 4→6, 6→4, 6→6, 6→4/6
- 自動リーク防止: シングルスタックモードで不要なプロトコルをブロック
- 非特権モード: `nobody`/`nogroup` として実行
- Windows 10でのDNSリークをブロック
- サーバー証明書名のランダム化
- パスワードでクライアントを保護する選択肢(秘密鍵の暗号化)
- 複数のデバイスが同じクライアントプロファイルを同時に使用できるオプション(固定IPアドレスを無効化)
- **ピアフィンガープリント認証** (OpenVPN 2.6+): CAなしの簡素化されたWireGuard風認証
- その他にも多数の小さな機能があります!
## Compatibility
このスクリプトは以下のLinuxディストリビューションをサポートしています:
| | サポート |
| ------------------- | ------- |
| AlmaLinux >= 8 | ✅ 🤖 |
| Amazon Linux 2023 | ✅ 🤖 |
| Arch Linux | ✅ 🤖 |
| CentOS Stream >= 8 | ✅ 🤖 |
| Debian >= 11 | ✅ 🤖 |
| Fedora >= 40 | ✅ 🤖 |
| openSUSE Leap >= 16 | ✅ 🤖 |
| openSUSE Tumbleweed | ✅ 🤖 |
| Oracle Linux >= 8 | ✅ 🤖 |
| Rocky Linux >= 8 | ✅ 🤖 |
| Ubuntu >= 18.04 | ✅ 🤖 |
注意事項:
- このスクリプトは、🤖 が付いたディストリビューションに対してのみ定期的にテストされています。
- `amd64` アーキテクチャでのみテストされています。
- このスクリプトには `systemd` が必要です。
### 推奨プロバイダー
- [Vultr](https://umami.stanislas.cloud/q/1HH9Thp8i): 世界各地に拠点、IPv6サポート、月額\$2.5から
- [Hetzner](https://umami.stanislas.cloud/q/HdzaOJWq7): 世界各地に拠点、IPv6、20 TBのトラフィック、月額€3.59から
- [Digital Ocean](https://umami.stanislas.cloud/q/sEVh1l79B): 世界各地に拠点、IPv6サポート、月額\$4から
## 使い方
まず、サーバー上でスクリプトをダウンロードして実行可能にします:```bash
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
スクリプトをrootとして実行し、TUNモジュールを有効化する必要があります。
始めるのに最も簡単な方法は、インタラクティブメニューです:```bash ./openvpn-install.sh interactive
これでインストールとクライアント管理の手順を説明します。
ホームディレクトリには `.ovpn` ファイルがあります。これらはクライアント設定ファイルです。サーバーから(例えば `scp` を使って)ダウンロードし、お好みの OpenVPN クライアントで接続してください。
質問がある場合は、まず [FAQ](#faq) を参照してください。さらに支援が必要な場合は、[discussion](https://github.com/angristan/openvpn-install/discussions) を開くことができます。既存の issue と discussion を検索してください。
### CLIモード
> [!WARNING]
> API互換性は保証されません。バージョン間で破壊的な変更が発生する可能性があります。このスクリプトをプログラム的に(例: 自動化やCI/CDで)使用する場合は、masterブランチではなく、特定のコミットに固定してください。
自動化やスクリプト処理には、CLIインターフェイスを使用してください:```bash
# Install with defaults
./openvpn-install.sh install
# Add a client
./openvpn-install.sh client add alice
# List clients
./openvpn-install.sh client list
# Revoke a client (immediately disconnects if connected)
./openvpn-install.sh client revoke alice
openvpn-install [options]
Commands: install Install and configure OpenVPN server uninstall Remove OpenVPN server client Manage client certificates server Server management interactive Launch interactive menu
Global Options: --verbose Show detailed output --log Log file path (default: openvpn-install.log) --no-log Disable file logging --no-color Disable colored output -h, --help Show help
コマンド固有のオプションについては、`./openvpn-install.sh <command> --help` を実行してください。
#### クライアント管理```bash
# Add a new client
./openvpn-install.sh client add alice
# Add a password-protected client
./openvpn-install.sh client add bob --password
# Revoke a client
./openvpn-install.sh client revoke alice
# Renew a client certificate
./openvpn-install.sh client renew bob --cert-days 365
すべてのクライアントを一覧表示:```text $ ./openvpn-install.sh client list ══ Client Certificates ══ [INFO] Found 3 client certificate(s)
Name Status Expiry Remaining
alice Valid 2035-01-15 3650 days bob Valid 2035-01-15 3650 days charlie Revoked 2035-01-15 unknown
スクリプト用のJSON出力:```text
$ ./openvpn-install.sh client list --format json | jq
{
"clients": [
{
"name": "alice",
"status": "valid",
"expiry": "2035-01-15",
"days_remaining": 3650
},
{
"name": "bob",
"status": "valid",
"expiry": "2035-01-15",
"days_remaining": 3650
},
{
"name": "charlie",
"status": "revoked",
"expiry": "2035-01-15",
"days_remaining": null
}
]
}
./openvpn-install.sh server renew
./openvpn-install.sh uninstall
接続中のクライアントを表示 (データは60秒ごとに更新されます):```text
$ ./openvpn-install.sh server status
══ Connected Clients ══
[INFO] Found 2 connected client(s)
Name Real Address VPN IP Connected Since Transfer
---- ------------ ------ --------------- --------
alice 203.0.113.45:52341 10.8.0.2 2025-01-15 14:32 ↓1.2M ↑500K
bob 198.51.100.22:41892 10.8.0.3 2025-01-15 09:15 ↓800K ↑200K
[INFO] Note: Data refreshes every 60 seconds.
install コマンドは、カスタマイズ用に多くのオプションをサポートしています:```bash
./openvpn-install.sh install --port 443 --protocol tcp
./openvpn-install.sh install --dns quad9
./openvpn-install.sh install --cipher AES-256-GCM --cert-type rsa --rsa-bits 4096
./openvpn-install.sh install --subnet-ipv4 10.9.0.0
./openvpn-install.sh install --client-ipv4 --client-ipv6
./openvpn-install.sh install --no-client-ipv4 --client-ipv6
./openvpn-install.sh install --endpoint-type 6 --endpoint 2001:db8::1
./openvpn-install.sh install --client-ipv6 --subnet-ipv6 fd00🔢5678::
./openvpn-install.sh install --no-client
./openvpn-install.sh install
--port 443
--protocol tcp
--dns cloudflare
--cipher AES-256-GCM
--client mydevice
--client-cert-days 365
**ネットワークオプション:**