有料の既製サービスに頼るのではなく、独自のVPNを運用する人が増えています。その方が安価で、プライバシー保護にも優れ、サーバーを完全に制御できるからです。ネットワーク遮断が厳しい地域で最も効果的な選択肢の一つが、WireGuardをベースにAmneziaプロジェクトが開発したプロトコルであるAmneziaWGです。
従来のWireGuardは高速で信頼性が高いものの、パケット構造が固定されており、ハンドシェイクも予測可能であるため、DPI(ディープパケットインスペクション)システムによって確実に識別され、ブロックされる可能性があります。AmneziaWGはこの問題を解決します。通常のWireGuard接続に不要なパケットを追加し、ヘッダーをランダム化し、ハンドシェイクフィールドのサイズを変更することで、WireGuard特有のシグネチャを消失させ、トラフィックが通常のUDPトラフィックと区別されなくなるようにします。
既に従来のトンネルを運用していて、切り替える価値があるかどうか迷っていますか?Linux での VPN サーバー設定: PPTP か OpenVPN か?で、これを通常の OpenVPN/PPTP 設定と比較するか、サーバーで WireGuard VPN を設定する方法で、プレーンな WireGuard (難読化なし) と比較してください。
このガイドでは、DockerやWebパネルを使用せず、コマンドラインからのみ設定することで、VPS上でのフットプリントを最小限に抑えたAmneziaWGサーバーを手動でセットアップする方法を説明します。GUI、データベース、リバースプロキシが不要なため、最も軽量なオプションであり、低価格のVPSでも問題なく動作します。以下のサンプルサーバーではプレースホルダーIPアドレスを使用しています。表示されている箇所はすべて、ご自身のVPSのアドレスに置き換えてください。
必要なもの:Ubuntu 22.04/24.04またはDebian 11/12が動作するVPS、root権限、およびVPSのIPアドレス。ドメイン名は不要です。AmneziaWGは証明書を使用しないため、更新するものはなく、DPIがTLSハンドシェイクとしてフラグを立てるものもありません。
まだサーバーをお持ちでない場合は、「サーバーの注文方法」をご覧ください。
サーバーに接続中
Windows (PuTTY)
PuTTYを開き、ホスト名欄にVPSのIPアドレスを入力し、ポート番号を22に設定して、VPSプロバイダからメールで送られてきたパスワードを使ってrootユーザーとしてログインしてください。
サーバーIPアドレス:あなたのIPアドレス
rootユーザーとしてログイン
パスワード: あなたのパスワード
1. PuTTYを開き、ホスト名フィールドにVPSのIPアドレスを入力します。
2. ポートを22に設定します。
3. rootユーザーとしてログインしてください。
4. VPSプロバイダーからメールで送られてきたパスワードを使用する。
結果は次のようになります。
PuTTY/SSH を介した接続の詳細な手順については、「SSH を介して Linux サーバーに接続する方法」を参照してください。
Linux / macOS (ターミナル)
ssh root@YOUR_SERVER_IP
以下のコマンドはすべて、同じ SSH セッション内でサーバー上で実行されます。これには、セクション 2 から 5 までと、セクション 9 のサーバー側チェックが含まれます。セクション 6 から 8 (VPN クライアントのインストールと設定) は、VPN を実行する必要があるデバイスである、ユーザー自身の Windows/macOS/Linux デバイス上で実行されます。これらの各セクションでは、サーバーにアクセスする行があれば、その行を明示的に示しています。
サーバーの準備
システムを更新する
何かをインストールする前に、パッケージリストを更新し、インストール済みのパッケージをアップグレードしてください。
apt update -y && apt upgrade -y
カーネルがアップグレードされる場合は、セクション 3 の AmneziaWG カーネルモジュールをビルドする前に再起動してください。そうしないと、DKMS が誤ったカーネルヘッダーに対してビルドを行い、モジュールのロードに失敗する可能性があります。(apt と Linux パッケージマネージャの仕組みについては、「Linux パッケージマネージャ」を参照してください。)以下を確認してください。
cat /var/run/reboot-required
IPフォワーディングを有効にする
この設定により、サーバーはクライアントのパケットをインターネットに転送できるようになります。この設定がない場合、トンネルは確立されますが、トラフィックは通過しません。
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
最初のコマンドは専用の設定ファイルを作成し、2番目のコマンドはサーバーを再起動せずにその設定ファイルを適用します。
ファイアウォール(UFW)を設定する
UFWルールの詳細については、「Linuxでのファイアウォールの設定」を参照してください。
必要な 2 つのポートを開放してください。SSH 用の 22/tcp (このルールをスキップすると、サーバーへのアクセスを失うリスクがあります) と、AmneziaWG がリッスンするポートである 42666/udp です。
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
両方のルールとも、ufwのステータス出力で「ALLOW」と表示されるはずです。
AmneziaWGのインストール
DebianはUbuntuスタイルのPPAを直接サポートしていないため、リポジトリはadd-apt-repositoryではなく手動で追加する必要があります。これはUbuntuでも同様です。
リポジトリを手動で追加する
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
GPG署名キーを追加する
非推奨のapt-keyコマンドではなく、非武装のキーリングファイルを使用し、PPAの実際の署名キー(フィンガープリント75C9DD72C799870E310542E24166F2C257290828)を取得します。
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
アップデートとインストール
apt update
apt install -y amneziawg
モジュールがロードされていることを確認します。
modprobe amneziawg
lsmod | grep amnezia
サーバーとクライアントの構成を生成する
ヘルパーユーティリティをインストールする
qrcodeの依存関係をインストールし、専用の作業ディレクトリを作成して、コミュニティ設定生成スクリプトをそのディレクトリにダウンロードしてください。
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
お使いのディストリビューションのリポジトリに python3-qrcode がない場合は、pip3 install qrcode --break-system-packages を実行してください(このフラグは、デフォルトで管理されていない pip インストールをブロックする Debian 12 以降/Ubuntu 24.04 で必要です)。両方のインストールを実行しないでください。どちらか一方を選択してください。
サーバー構成を生成する
/etc/amnezia/amneziawg/awg0.conf を作成します。トンネルの内部サブネットと UDP ポートはデフォルト値のままにしておくことも、独自の値を設定することもできます。
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
-i フラグはトンネルの内部ネットワーク アドレスとマスクを設定します。-p はサーバーの UDP ポートを設定します (ステップ 2.3 で開いたものと同じ)。
クライアント設定テンプレートを作成する
python3 awgcfg.py --create
これにより、個々のクライアント設定が作成されるのと同じフォルダにテンプレートが保存されます。このテンプレートには、サーバーの公開鍵、IPアドレス、およびAmneziaWGを通常のWireGuardと区別する難読化パラメータ(Jc、Jmin、Jmax、S1、S2、H1~H4)が既に含まれています。
クライアントを追加する
デバイスごとに1つのエントリを作成します。名前は任意のもので構いません。例えば、デバイス名などです。
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
クライアントファイルとQRコードを生成する
python3 awgcfg.py -c -q
~/awgフォルダには、laptop.confやphone.confといったファイルに加え、モバイルアプリに直接スキャンできる対応するPNG形式のQRコードが格納されるようになります。
~/awgフォルダには、laptop.confやphone.confといったファイルに加え、モバイルアプリに直接スキャンできる対応するPNG形式のQRコードが格納されるようになります。
サービスの開始と自動起動の有効化
awg0インターフェースを起動し、再起動時に自動的に起動するように設定します。
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
起動時にユニットが有効になり、ステータスがアクティブ(終了)と表示されるはずです。コンソールにログが表示されたまま「ハングアップ」状態になった場合は、Qキーを押して終了してください。
アクティブなピアのリストとピアごとのトラフィックを確認するには、以下を使用します。
awg show
Windowsから接続しています
このセクションの手順はすべてWindows PC上で行われ、SSHは使用しません。VPNクライアントは、実際にトンネルを使用するデバイスにインストールする必要があります。サーバーにアクセスする唯一の手順は、6.2のscpダウンロードですが、このコマンドもPC上で入力し、セクション4でサーバーが既に生成したファイルを取得します。
クライアントをインストールする
AmneziaWGには専用のWindowsアプリがあります。インターフェースは標準のWireGuardクライアントを模倣していますが、難読化パラメータを理解します。プロジェクトの公式リポジトリからインストーラをダウンロードしてください。
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
上記のリンクは、メンテナンスされているWindowsクライアントのリリースページです。そこから最新の.msi/.exeファイルをダウンロードしてください。これはブラウザで開くページであり、ターミナルに貼り付けるコマンドではありません。
インストーラーを実行し、セットアップウィザードの手順に従ってください。デフォルト設定を変更する必要はありません。
設定をインポートする
クライアント設定ファイルをサーバーから自分のコンピューターにコピーします。最も簡単な方法はscpコマンドを使用することです。サーバーではなく、自分のコンピューターのPowerShellでscpを実行してください。
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
AmneziaWGアプリで、「ファイルからトンネルをインポート」をクリックし、laptop.confを選択して、新しいトンネルの横にあるトグルをオンにします。
macOSから接続しています
サポートされているオプションは2つあります。
- AmneziaWG(Mac App Store):軽量クライアントで、macOS 12以降に対応しています。App Storeで「AmneziaWG」を検索してインストールし、「ファイルからトンネルをインポート」を選択して.confファイルを選択してください。Windowsクライアントと同じワークフローです。
- AmneziaVPN(フルアプリ、macOS 14以降):軽量版のAmneziaWG専用クライアントではなく、フル機能版のAmneziaアプリを使用したい場合は、github.com/amnezia-vpn/amnezia-client/releases/latestから.pkgをダウンロードしてください。
必要であれば、まずクライアント設定をコピーしてください。手順6.2と同じです。
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Linuxから接続しています
Linuxのデスクトップまたはノートパソコンでは、次の2つの選択肢があります。
- GUIの場合:github.com/amnezia-vpn/amnezia-client/releasesからAmneziaVPNデスクトップクライアントのフルバージョンをインストールし、Windows/macOSの場合と同様に.confファイルをインポートしてください。
- CLI(サーバーで使用されているものと同じamneziawg-tools(awg / awg-quick)を使用):
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
接続を切断するには、このコードを実行してください。
awg-quick down awg0
ログイン時にトンネルを自動的に起動するには、サービスとして有効にします。
systemctl enable --now awg-quick@awg0
接続の確認
セクション6、7、または8でトンネルがアクティブになっている状態で、SSHセッションではなく自分のデバイスに戻り、ブラウザで「自分のIPアドレスは?」チェッカーを開きます。表示されるアドレスは、VPSのIPアドレスと一致するはずです。SSHセッション内で確認する場合は、サーバー上でawing showコマンドを実行し、クライアントのピアが最近ハンドシェイクを行い、トラフィックがゼロでないことを確認してください。
参考文献・引用元
|
フィールド |
値 |
|
住所 |
YOUR_TUNNEL_IP(トンネル内のクライアントのアドレス。例:10.10.8.2/32。ステップ4.4でクライアントを追加した際に自動的に割り当てられます。) |
|
エンドポイント |
YOUR_SERVER_IP:42666(サーバーの外部IPアドレスと、クライアントが接続するUDPポート番号。) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
ハンドシェイク前に送信される「ジャンク」パケットの数とサイズは、サーバーとクライアント間で異なる場合があるが、接続は切断されない。 |
|
S1 / S2 |
ハンドシェイクのパディングフィールドのサイズ — サーバーとすべてのクライアント間でバイト単位で一致する必要があります |
|
H1~H4 |
プロトコルを通常のトラフィックとして偽装するパケットタイプのヘッダーも完全に一致し、かつ互いに一意でなければならない。 |
トンネルの両端で同一である必要があるのは、S1/S2とH1~H4のみです。Jc、Jmin、Jmaxは、各側が送信する不要なトラフィックをどのようにパディングするかに関するものであり、上記の例のように、クライアントとサーバーの値が異なっていても問題ありません。
結論
このガイドに従うと、VPS上で独自のAmneziaWGサーバーが稼働します。AmneziaWGはWireGuard互換プロトコルで、トラフィック難読化機能を備えているため、通常のWireGuardよりもDPIシステムでUDPトラフィックを区別するのがはるかに困難です。このサービスはsystemdユニットawg-quick@awg0として実行され、サーバー再起動後もユーザーによる操作なしで稼働し続けます。
生成された ~/awg 内の .conf ファイルと QR コードは、Windows クライアントだけでなく、Android、iOS、macOS、Linux 用の AmneziaWG または Amnezia アプリ、および Keenetic ルーターや OpenWrt ルーターにもインポートできます。
手順 4.4~4.5 (python3 awgcfg.py -a "name"、次に awgcfg.py -c -q) を繰り返し、systemctl restart [email protected]でインターフェースを再起動することで、いつでも新しいクライアントを追加できます。
サーバーが稼働し始めたら、継続しておくと良い習慣をいくつかご紹介します。
- システムを常に最新の状態に保ってください。定期的に apt update -y && apt upgrade -y を実行し、カーネルのアップグレード後には再起動して、DKMS が新しいカーネルに合わせて amneziawg モジュールを再構築するようにしてください。
- ~/awg ディレクトリをバックアップしてください。awg0.conf ファイルには、各クライアントの秘密鍵とサーバー自身の鍵ペアが格納されています。このディレクトリを紛失すると、すべてのデバイスの設定を再生成する必要が生じます。
- 紛失したデバイスを速やかに無効化してください。/etc/amnezia/amneziawg/awg0.conf から該当する [Peer] ブロックを削除し、systemctl restart を実行してください。 [メール保護].
接続が確立しない場合は、以下の順序で確認してください。
- サービスの状態 (systemctl status) [メール保護])
- ファイアウォールルール(ufwステータス - ポート42666/udpは開放されている必要があります)
- インターフェースが起動しない場合は、DKMS/モジュールの状態を確認してください(dkms status、lsmod | grep amnezia)。
- サーバー上のアクティブなピアのリスト(aWG show)
- クライアント設定が正しい外部サーバーのIPアドレスを指していること
AmneziaWG を他のオプションと比較検討してから導入を検討されていますか?Linux での VPN サーバー設定: PPTP または OpenVPN?およびWireguard VPN をサーバーに設定する方法をご覧ください。完全な VPN トンネルではなく、シンプルなプロキシのみが必要な場合は、CentOS/ArchLinux での 3proxy 設定がより軽量な代替手段となります。VPN が稼働した後の一般的なサーバー強化については、 Linux ユーザー: 管理と権限をご覧ください。