LinuxサーバーにWireGuard VPNを設定する完全ガイド

LinuxサーバーでWireGuard VPNを設定する手順を解説。インストール、鍵生成、設定ファイル作成、起動・自動起動設定まで、セキュリティを考慮した実践的な方法。

VPNWireGuard設定Linuxサーバーセキュリティ2026/5/25

はじめに

WireGuardは、シンプルで高速、かつセキュアなVPNプロトコルです。Linuxカーネルに標準搭載されており、従来のIPsecやOpenVPNよりも設定が容易で、パフォーマンスに優れています。本記事では、Linuxサーバー(Ubuntu 22.04 LTSを例に)でWireGuard VPNサーバーを構築する手順を解説します。

前提条件

  • Linuxサーバー(Ubuntu 22.04 LTS)がインターネットに公開されていること
  • サーバーにSSHでアクセスできること
  • ファイアウォール(ufwなど)の基本的な設定ができること
  • クライアント(スマートフォンやPC)のWireGuardアプリをインストールしておくこと
  • 手順

    1. WireGuardのインストール

    Ubuntu 22.04では、WireGuardはデフォルトのリポジトリからインストールできます。

    sudo apt update
    sudo apt install wireguard
    

    インストール後、以下のコマンドでモジュールが読み込まれているか確認します。

    sudo modprobe wireguard
    lsmod | grep wireguard
    

    出力にwireguardが表示されればOKです。

    2. 鍵ペアの生成

    WireGuardでは、サーバーと各クライアントが公開鍵と秘密鍵を持ちます。まず、サーバーの鍵を生成します。

    cd /etc/wireguard
    umask 077
    sudo wg genkey | sudo tee server_private.key | sudo wg pubkey | sudo tee server_public.key
    

    これで、server_private.keyserver_public.keyが作成されます。秘密鍵は厳重に管理してください。

    同様に、クライアントの鍵も生成します。クライアントごとに異なる鍵ペアが必要です。ここではclient1として生成します。

    sudo wg genkey | sudo tee client1_private.key | sudo wg pubkey | sudo tee client1_public.key
    

    3. サーバー設定ファイルの作成

    /etc/wireguard/wg0.confを作成します。

    sudo nano /etc/wireguard/wg0.conf
    

    以下の内容を記述します。server_private.keyの内容に置き換えてください。

    [Interface]
    Address = 10.0.0.1/24
    PrivateKey = <ServerPrivateKey>
    ListenPort = 51820
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    

    [Peer] <h1>client1</h1> PublicKey = <Client1PublicKey> AllowedIPs = 10.0.0.2/32

  • Address: VPN内のサーバーのIPアドレス。サブネットは/24にします。
  • ListenPort: WireGuardが待受するポート。デフォルトは51820。
  • PostUp/PostDown: パケット転送とNATのルール。eth0はサーバーの外部ネットワークインターフェース名に置き換えてください。
  • [Peer]: クライアントの設定。PublicKeyにはclient1_public.keyの内容を、AllowedIPsにはクライアントに割り当てるIPアドレスを指定します。
  • 複数のクライアントを追加する場合は、[Peer]セクションを増やします。

    4. クライアント設定ファイルの作成

    クライアント側の設定ファイルを作成します。例えば、client1.confとしてサーバー上で作成し、クライアントに転送します。

    sudo nano /etc/wireguard/client1.conf
    

    内容:

    [Interface]
    PrivateKey = <Client1PrivateKey>
    Address = 10.0.0.2/24
    DNS = 1.1.1.1
    

    [Peer] PublicKey = <ServerPublicKey> Endpoint = <サーバーのパブリックIP>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25

  • PrivateKey: client1_private.keyの内容。
  • Address: クライアントに割り当てるIP。サーバー側のAllowedIPsと一致させる。
  • DNS: 必要に応じてDNSサーバーを指定。
  • PublicKey: サーバーの公開鍵。
  • Endpoint: サーバーのパブリックIPアドレスとポート。
  • AllowedIPs: 0.0.0.0/0にするとすべてのトラフィックがVPN経由になります。特定のネットワークだけをVPN経由にしたい場合は、そのサブネットを指定します。
  • PersistentKeepalive: NAT越えのためにキープアライブを送信する間隔(秒)。
  • 5. サーバーのファイアウォール設定

    WireGuardのポート(51820/UDP)を開放します。また、IPフォワーディングを有効にします。

    sudo ufw allow 51820/udp
    sudo ufw reload
    

    IPフォワーディングを永続的に有効にするには、/etc/sysctl.confを編集します。

    sudo nano /etc/sysctl.conf
    

    以下の行のコメントを外すか、追加します。

    net.ipv4.ip_forward=1
    

    変更を適用します。

    sudo sysctl -p
    

    6. WireGuardの起動と自動起動設定

    サーバーでWireGuardインターフェースを起動します。

    sudo wg-quick up wg0
    

    エラーがなければ、以下のコマンドで状態を確認できます。

    sudo wg show
    

    自動起動を有効にするには、systemdサービスを有効にします。

    sudo systemctl enable wg-quick@wg0
    

    7. クライアントの接続

    作成したclient1.confをクライアントデバイスに転送します。WireGuardアプリを開き、設定をインポートして接続します。

    接続が成功すると、クライアントからサーバーのVPN内IP(10.0.0.1)にpingが通るはずです。

    ping 10.0.0.1
    

    また、インターネットアクセスがVPN経由になっているか確認するには、ipconfigifconfigでVPNインターフェースのIPが表示されていることを確認します。

    セキュリティのポイント

  • 秘密鍵はサーバー上で安全に管理し、第三者に漏らさない。
  • ファイアウォールで不要なポートは閉じておく。
  • 定期的にWireGuardやOSのアップデートを行う。
  • クライアントのAllowedIPsを必要最小限に制限する(デフォルトゲートウェイをVPNにしないなど)。
  • トラブルシューティング

  • 接続できない場合: サーバーのログを確認。sudo journalctl -u wg-quick@wg0
  • ポートが開いていない: sudo netstat -tulpn | grep 51820でListen状態か確認。
  • NATが機能しない: PostUpのiptablesルールのインターフェース名が正しいか確認。

  • *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    まとめ

    WireGuardは設定が簡単で、高いパフォーマンスを発揮します。このガイドに従えば、LinuxサーバーにWireGuard VPNを構築し、安全にリモートアクセスやプライバシー保護を実現できます。ぜひ試してみてください。