27 KiB
IPsec VPN サーバー自動セットアップスクリプト
数分で自分のIPsec VPNサーバーをセットアップし、IPsec/L2TP、Cisco IPsec、IKEv2をサポートします。
IPsec VPNはネットワークトラフィックを暗号化し、インターネット経由でデータが送信される際に、VPNサーバーとあなたの間の誰もがデータを盗聴できないようにします。これは、コーヒーショップ、空港、ホテルの部屋などの安全でないネットワークを使用する際に特に有用です。
IPsecサーバーとしてLibreswanを使用し、L2TPプロバイダーとしてxl2tpdを使用します。
» 📖 本: VPNサーバーの構築方法 [日本語 | English | 中文 | Español | Deutsch | Français | Italiano | NL | PT]
クイックスタート
まず、Ubuntu、Debian、またはCentOSをインストールしたLinuxサーバー*を準備します。
このワンライナーを使用してIPsec VPNサーバーをセットアップします:
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
VPNログイン情報はランダムに生成され、完了時に表示されます。
オプション: 同じサーバーにWireGuardおよび/またはOpenVPNをインストールします。
ダウンロードできない場合はこちらをクリックしてください。
curl
を使用してダウンロードすることもできます:
curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.sh
代替セットアップURL:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
ダウンロードできない場合は、vpnsetup.shを開き、右側のRaw
ボタンをクリックします。Ctrl/Cmd+A
を押してすべて選択し、Ctrl/Cmd+C
を押してコピーし、お気に入りのエディタに貼り付けます。
事前構築されたDockerイメージも利用可能です。他のオプションやクライアントのセットアップについては、以下のセクションを参照してください。
* クラウドサーバー、仮想プライベートサーバー(VPS)、または専用サーバー。
機能
- 完全自動化されたIPsec VPNサーバーのセットアップ、ユーザー入力不要
- 強力で高速な暗号(例:AES-GCM)をサポートするIKEv2をサポート
- iOS、macOS、Androidデバイスを自動設定するVPNプロファイルを生成
- Windows、macOS、iOS、Android、Chrome OS、LinuxをVPNクライアントとしてサポート
- VPNユーザーと証明書を管理するためのヘルパースクリプトを含む
要件
以下のいずれかのインストールを備えたクラウドサーバー、仮想プライベートサーバー(VPS)、または専用サーバー:
- Ubuntu 24.04、22.04、または20.04
- Debian 12または11
- CentOS Stream 9
- Rocky LinuxまたはAlmaLinux
- Oracle Linux
- Amazon Linux 2
他のサポートされているLinuxディストリビューション。
- Raspberry Pi OS(Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux(RHEL)
これは、DigitalOcean、Vultr、Linode、OVH、およびMicrosoft AzureなどのパブリッククラウドのLinux VMも含まれます。パブリッククラウドユーザーは、ユーザーデータを使用してデプロイすることもできます。
クイックデプロイ:
外部ファイアウォールを持つサーバー(例:EC2/GCE)の場合、VPNのUDPポート500および4500を開きます。
事前構築されたDockerイメージも利用可能です。上級ユーザーはRaspberry Piにインストールできます。[1] [2]
⚠️ これらのスクリプトをPCやMacで実行しないでください!これらはサーバーでのみ使用する必要があります!
インストール
まず、サーバーを更新します:sudo apt-get update && sudo apt-get dist-upgrade
(Ubuntu/Debian)またはsudo yum update
を実行し、再起動します。これはオプションですが、推奨されます。
VPNをインストールするには、次のオプションのいずれかを選択してください:
オプション1: スクリプトにランダムなVPN資格情報を生成させる(完了時に表示されます)。
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
オプション2: スクリプトを編集し、自分のVPN資格情報を提供する。
wget https://get.vpnsetup.net -O vpn.sh
nano -w vpn.sh
[自分の値に置き換える:YOUR_IPSEC_PSK、YOUR_USERNAME、およびYOUR_PASSWORD]
sudo sh vpn.sh
注: 安全なIPsec PSKは少なくとも20のランダムな文字で構成されるべきです。
オプション3: 環境変数として自分のVPN資格情報を定義する。
# すべての値は 'シングルクォート' で囲む必要があります
# これらの特殊文字を値に使用しないでください: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.sh
同じサーバーにWireGuardおよび/またはOpenVPNをインストールすることもできます。サーバーがCentOS Stream、Rocky Linux、またはAlmaLinuxを実行している場合、最初にOpenVPN/WireGuardをインストールし、その後IPsec VPNをインストールします。
ダウンロードできない場合はこちらをクリックしてください。
curl
を使用してダウンロードすることもできます。例えば:
curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.sh
代替セットアップURL:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.sh
ダウンロードできない場合は、vpnsetup.shを開き、右側のRaw
ボタンをクリックします。Ctrl/Cmd+A
を押してすべて選択し、Ctrl/Cmd+C
を押してコピーし、お気に入りのエディタに貼り付けます。
古いLibreswanバージョン4をインストールしたい。
一般的には、最新のLibreswanバージョン5を使用することをお勧めします。これはこのプロジェクトのデフォルトバージョンです。ただし、古いLibreswanバージョン4をインストールしたい場合:
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_SWAN_VER=4.15 sh vpn.sh
注: Libreswanバージョン5がすでにインストールされている場合、最初にVPNをアンインストールしてからLibreswanバージョン4をインストールする必要があるかもしれません。あるいは、アップデートスクリプトをダウンロードし、SWAN_VER=4.15
を指定して編集し、スクリプトを実行します。
VPNオプションのカスタマイズ
代替DNSサーバーの使用
デフォルトでは、VPNがアクティブなときにクライアントはGoogle Public DNSを使用するように設定されています。VPNをインストールする際に、すべてのVPNモードに対してカスタムDNSサーバーを指定することができます。例:
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
VPN_DNS_SRV1
を使用してプライマリDNSサーバーを指定し、VPN_DNS_SRV2
を使用してセカンダリDNSサーバーを指定します(オプション)。
以下は、参考のためのいくつかの人気のあるパブリックDNSプロバイダーのリストです。
プロバイダー | プライマリDNS | セカンダリDNS | 注記 |
---|---|---|---|
Google Public DNS | 8.8.8.8 | 8.8.4.4 | このプロジェクトのデフォルト |
Cloudflare | 1.1.1.1 | 1.0.0.1 | 参照:Cloudflare for families |
Quad9 | 9.9.9.9 | 149.112.112.112 | 悪意のあるドメインをブロック |
OpenDNS | 208.67.222.222 | 208.67.220.220 | フィッシングドメインをブロック、設定可能。 |
CleanBrowsing | 185.228.168.9 | 185.228.169.9 | ドメインフィルター利用可能 |
NextDNS | さまざま | さまざま | 広告ブロック、無料プラン利用可能。詳細はこちら。 |
Control D | さまざま | さまざま | 広告ブロック、設定可能。詳細はこちら。 |
VPNセットアップ後にDNSサーバーを変更する必要がある場合は、高度な使用法を参照してください。
注: サーバーにIKEv2がすでに設定されている場合、上記の変数はIKEv2モードには影響しません。その場合、DNSサーバーなどのIKEv2オプションをカスタマイズするには、まずIKEv2を削除し、sudo ikev2.sh
を使用して再設定します。
IKEv2オプションのカスタマイズ
VPNをインストールする際に、上級ユーザーはオプションでIKEv2オプションをカスタマイズできます。
オプション1: VPNセットアップ時にIKEv2をスキップし、カスタムオプションを使用してIKEv2を設定します。
VPNをインストールする際に、IKEv2をスキップし、IPsec/L2TPおよびIPsec/XAuth("Cisco IPsec")モードのみをインストールできます:
sudo VPN_SKIP_IKEV2=yes sh vpn.sh
(オプション)VPNクライアントにカスタムDNSサーバーを指定する場合は、VPN_DNS_SRV1
およびオプションでVPN_DNS_SRV2
を定義します。詳細については、代替DNSサーバーの使用を参照してください。
その後、IKEv2ヘルパースクリプトを実行して、カスタムオプションを使用して対話的にIKEv2を設定します:
sudo ikev2.sh
次のオプションをカスタマイズできます:VPNサーバーのDNS名、最初のクライアントの名前と有効期間、VPNクライアントのDNSサーバー、およびクライアント構成ファイルをパスワードで保護するかどうか。
注: サーバーにIKEv2がすでに設定されている場合、VPN_SKIP_IKEV2
変数は影響しません。その場合、IKEv2オプションをカスタマイズするには、まずIKEv2を削除し、sudo ikev2.sh
を使用して再設定します。
オプション2: 環境変数を使用してIKEv2オプションをカスタマイズします。
VPNをインストールする際に、オプションでIKEv2サーバーアドレスのDNS名を指定できます。DNS名は完全修飾ドメイン名(FQDN)である必要があります。例:
sudo VPN_DNS_NAME='vpn.example.com' sh vpn.sh
同様に、最初のIKEv2クライアントの名前を指定できます。指定しない場合、デフォルトはvpnclient
です。
sudo VPN_CLIENT_NAME='your_client_name' sh vpn.sh
デフォルトでは、VPNがアクティブなときにクライアントはGoogle Public DNSを使用するように設定されています。すべてのVPNモードに対してカスタムDNSサーバーを指定できます。例:
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.sh
デフォルトでは、IKEv2クライアント構成のインポート時にパスワードは必要ありません。ランダムなパスワードを使用してクライアント構成ファイルを保護することを選択できます。
sudo VPN_PROTECT_CONFIG=yes sh vpn.sh
参考のために:IKEv1およびIKEv2パラメータのリスト。
IKEv1パラメータ* | デフォルト値 | カスタマイズ(環境変数)** |
---|---|---|
サーバーアドレス(DNS名) | - | いいえ、ただしDNS名を使用して接続できます |
サーバーアドレス(パブリックIP) | 自動検出 | VPN_PUBLIC_IP |
IPsec事前共有キー | 自動生成 | VPN_IPSEC_PSK |
VPNユーザー名 | vpnuser | VPN_USER |
VPNパスワード | 自動生成 | VPN_PASSWORD |
クライアントのDNSサーバー | Google Public DNS | VPN_DNS_SRV1、VPN_DNS_SRV2 |
IKEv2セットアップをスキップ | いいえ | VPN_SKIP_IKEV2=yes |
* これらのIKEv1パラメータは、IPsec/L2TPおよびIPsec/XAuth("Cisco IPsec")モード用です。
** vpn(setup).shを実行する際に、これらを環境変数として定義します。
IKEv2パラメータ* | デフォルト値 | カスタマイズ(環境変数)** | カスタマイズ(対話型)*** |
---|---|---|---|
サーバーアドレス(DNS名) | - | VPN_DNS_NAME | ✅ |
サーバーアドレス(パブリックIP) | 自動検出 | VPN_PUBLIC_IP | ✅ |
最初のクライアントの名前 | vpnclient | VPN_CLIENT_NAME | ✅ |
クライアントのDNSサーバー | Google Public DNS | VPN_DNS_SRV1、VPN_DNS_SRV2 | ✅ |
クライアント構成ファイルを保護する | いいえ | VPN_PROTECT_CONFIG=yes | ✅ |
MOBIKEの有効/無効 | サポートされている場合は有効 | ❌ | ✅ |
クライアント証明書の有効期間 | 10年(120ヶ月) | VPN_CLIENT_VALIDITY**** | ✅ |
CAおよびサーバー証明書の有効期間 | 10年(120ヶ月) | ❌ | ❌ |
CA証明書名 | IKEv2 VPN CA | ❌ | ❌ |
証明書キーサイズ | 3072ビット | ❌ | ❌ |
* これらのIKEv2パラメータは、IKEv2モード用です。
** vpn(setup).shを実行する際、または自動モードでIKEv2を設定する際に、これらを環境変数として定義します(sudo ikev2.sh --auto
)。
*** 対話型IKEv2セットアップ中にカスタマイズできます(sudo ikev2.sh
)。上記のオプション1を参照してください。
**** VPN_CLIENT_VALIDITY
を使用して、クライアント証明書の有効期間を月単位で指定します。1から120の間の整数である必要があります。
これらのパラメータに加えて、上級ユーザーはVPNセットアップ中にVPNサブネットをカスタマイズすることもできます。
次のステップ
コンピュータやデバイスをVPNに接続します。以下を参照してください:
IPsec/XAuth("Cisco IPsec")VPNクライアントの設定
自分のVPNを楽しんでください! ✨🎉🚀✨
重要な注意事項
Windowsユーザー:IPsec/L2TPモードの場合、VPNサーバーまたはクライアントがNAT(例:家庭用ルーター)の背後にある場合、一度だけレジストリを変更する必要があります。
同じVPNアカウントを複数のデバイスで使用できます。ただし、IPsec/L2TPの制限により、同じNAT(例:家庭用ルーター)の背後から複数のデバイスを接続する場合は、IKEv2またはIPsec/XAuthモードを使用する必要があります。VPNユーザーアカウントを表示または更新するには、VPNユーザーの管理を参照してください。
外部ファイアウォールを持つサーバー(例:EC2/GCE)の場合、VPNのUDPポート500および4500を開きます。Aliyunユーザーは、#433を参照してください。
クライアントは、VPNがアクティブなときにGoogle Public DNSを使用するように設定されています。別のDNSプロバイダーを好む場合は、高度な使用法を参照してください。
カーネルサポートを使用すると、IPsec/L2TPのパフォーマンスが向上する可能性があります。これはすべてのサポートされているOSで利用可能です。Ubuntuユーザーはlinux-modules-extra-$(uname -r)
パッケージをインストールし、service xl2tpd restart
を実行する必要があります。
スクリプトは、変更を加える前に既存の構成ファイルをバックアップし、.old-date-time
サフィックスを付けます。
Libreswanのアップグレード
このワンライナーを使用して、VPNサーバー上のLibreswan(変更ログ | アナウンス)を更新します。
wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.sh
ダウンロードできない場合はこちらをクリックしてください。
curl
を使用してダウンロードすることもできます:
curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.sh
代替アップデートURL:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.sh
ダウンロードできない場合は、vpnupgrade.shを開き、右側のRaw
ボタンをクリックします。Ctrl/Cmd+A
を押してすべて選択し、Ctrl/Cmd+C
を押してコピーし、お気に入りのエディタに貼り付けます。
最新のサポートされているLibreswanバージョンは5.2
です。インストールされているバージョンを確認します:ipsec --version
。
注: xl2tpd
は、Ubuntu/Debianのapt-get
などのシステムのパッケージマネージャーを使用して更新できます。
VPNユーザーの管理
VPNユーザーの管理を参照してください。
高度な使用法
高度な使用法を参照してください。
- 代替DNSサーバーの使用
- DNS名とサーバーIPの変更
- IKEv2専用VPN
- 内部VPN IPとトラフィック
- VPNサーバーのパブリックIPを指定する
- VPNサブネットのカスタマイズ
- VPNクライアントへのポートフォワーディング
- スプリットトンネリング
- VPNサーバーのサブネットにアクセスする
- サーバーのサブネットからVPNクライアントにアクセスする
- IPTablesルールの変更
- Google BBR輻輳制御の展開
VPNのアンインストール
IPsec VPNをアンインストールするには、ヘルパースクリプトを実行します:
警告: このヘルパースクリプトは、サーバーからIPsec VPNを削除します。すべてのVPN構成は永久に削除され、Libreswanおよびxl2tpdは削除されます。これは元に戻すことはできません!
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.sh
ダウンロードできない場合はこちらをクリックしてください。
curl
を使用してダウンロードすることもできます:
curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.sh
代替スクリプトURL:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.sh
詳細については、VPNのアンインストールを参照してください。
フィードバックと質問
- このプロジェクトに提案がありますか?改善リクエストを開いてください。プルリクエストも歓迎します。
- 再現可能なバグを見つけた場合、IPsec VPNまたはVPNスクリプトのバグレポートを開いてください。
- 質問がありますか?まず、既存の問題と、このGistおよび私のブログのコメントを検索してください。
- VPNに関連する質問は、LibreswanまたはstrongSwanのメーリングリストで質問するか、次のウィキを参照してください:[1] [2] [3] [4] [5]。
ライセンス
著作権 (C) 2014-2025 Lin Song
Thomas Sarlandieの作品に基づく(著作権2012)
この作品はクリエイティブ・コモンズ表示-継承3.0非移植ライセンスの下でライセンスされています。
帰属が必要です:私の名前を派生物に含め、改善方法を教えてください!