VPN設定 · 3 min read · Oct 05, 2025

Debian 11にWireguard VPNをインストールする方法

Wireguardは、IPSec、IKEv2、OpenVPNの代替となる無料でオープンソースのVPNプロトコルです。WireguardはLinuxおよびUnixオペレーティングシステム向けに設計されています。Linuxカーネル空間で動作するため、Wireguardはより高速で信頼性があります。Wireguardは、2台以上のコンピュータ間で安全なトンネル接続を作成するために使用されます。

Wireguardは、IPSec、IKEv2、OpenVPNなどのVPNプロトコルを置き換えることを目指しています。Wireguardは軽量で、高速で、設定が簡単で、より効率的です。同時に、WireguardはVPNプロトコルのセキュリティ面を犠牲にしていません。Wireguardは、Noiseプロトコルフレームワーク、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDFなどの最新の最先端の暗号化をサポートしています。

OpenVPN、IPSec、IKEv2などの他のVPNプロトコルと比較して、Wireguardは新しいVPNプロトコルです。Wireguardは2015年にJason A. Donenfeldによって代替VPNプロトコルとしてリリースされ、2020年にLinus TorvaldsによってLinuxカーネルv5.6に統合され、同年にFreeBSD 13にも移植されました。

このチュートリアルでは、Debian 11サーバー上でWireguardを介してVPNサーバーをインストールおよび設定します。Debian 11サーバーでWireguard VPNサーバーを設定し、次にWireguard VPNサーバーに接続するクライアントマシンを設定します。

クライアントマシンについては、任意のLinuxディストリビューションを使用できますが、この例ではDebianマシンを使用します。

前提条件

このチュートリアルを始めるには、以下の要件が必要です:

  • Debian 11サーバー - この例では、ホスト名が’ wireguard-server ‘で、外部静的IPアドレスが’ SERVER-IP ‘のDebianサーバーを使用します。
  • クライアントとして使用されるLinuxマシン - 任意のLinuxディストリビューションを使用できますが、この例ではホスト名が‘client1’のDebianマシンを使用します。
  • sudo/root管理者権限を持つ非rootユーザー。

これらの要件がすべて整ったら、始めましょう。

Wireguardのインストール

Wireguardをインストールする前に、以下のaptコマンドを実行してDebianパッケージインデックスを更新およびリフレッシュします。

sudo apt update

Debianリポジトリが更新されたら、以下のaptコマンドを実行して、DebianサーバーにWireguardパッケージをインストールします。これにより、Wireguardサーバーのインストールを管理するために使用されるwireguard-toolsパッケージもインストールされます。

sudo apt install wireguard

確認を求められたら、yを入力してENTERを押して続行します。これでインストールが開始されるはずです。

install wireguard

サーバーにWireguardがインストールされたので、Wireguardサーバーとクライアント用の公開鍵と秘密鍵のペアを生成する準備が整いました。

公開/秘密鍵ペアの生成

このステップでは、Wireguardサーバーとクライアントマシン用の公開鍵と秘密鍵のペアを生成します。これは、wireguard-toolsパッケージによって提供される’wg’コマンドラインを介して行うことができます。

サーバー用の鍵ペアはWireguardサーバーによって使用され、クライアントマシンはクライアント用の鍵ペアを使用します。複数のクライアントマシンがある場合は、クライアント用に複数の鍵ペアを生成できます。

Wireguardサーバー用の鍵ペアの生成

以下の’ wg genkey ‘コマンドを実行して、Wireguardサーバー用の秘密鍵を生成します。次に、秘密鍵の権限を’ 0400 ‘に変更し、グループと他のユーザーの読み取りおよび書き込みアクセスを無効にします。

この例では、秘密鍵を‘/etc/wireguard/server.key’として生成します。

wg genkey | sudo tee /etc/wireguard/server.key  
sudo chmod 0400 /etc/wireguard/server.key

ターミナル画面にランダムなbase64キーの出力が表示されます。

次に、以下の’ wg pubkey ‘コマンドを実行して、新しいサーバー公開鍵を’ /etc/wireguard/server.pub ‘に生成します。サーバー公開鍵は、サーバー秘密鍵’ /etc/wireguard/server.key ‘から導出されます。

sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub

ターミナルにランダムなbase64公開鍵の出力が表示されます。

generate server key pair

Wireguardサーバー用の公開鍵と秘密鍵のペアが生成されました。秘密鍵は‘/etc/wireguard/server.key’にあり、公開鍵は‘/etc/wireguard/server.pub’にあります。

以下のcatコマンドを実行して、Wireguardサーバー用に生成された鍵ペアを表示および確認します。

cat /etc/wireguard/server.key  
cat /etc/wireguard/server.pub

クライアント用の鍵ペアの生成

クライアント鍵ペアは、wireguard-toolsがインストールされた任意のマシン(Wireguardサーバーまたはクライアント)で生成できます。このステップでは、Wireguardサーバーからクライアント鍵ペアを生成します。

サーバーとクライアントの鍵ペアを生成するプロセスは同じで、’ wg genkey ‘コマンドを使用して秘密鍵を生成し、’ wg pubkey ‘を使用して公開鍵を生成します。公開鍵は秘密鍵から導出されます。

次に、以下のコマンドを実行して新しいディレクトリ’ /etc/wireguard/clients ‘を作成します。このディレクトリはクライアント鍵ペアを保存するために使用されます。

mkdir -p /etc/wireguard/clients

以下の’wg genkey’コマンドを実行して、クライアント秘密鍵を’ /etc/wireguard/clients/client1.key ‘に生成します。次に、’ wg pubkey ‘コマンドを使用してクライアント公開鍵を‘/etc/wireguard/clients/client1.pub ‘に生成します。

wg genkey | tee /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub

generate client key pair

クライアント鍵ペアが生成されました。公開鍵は‘/etc/wireguard/clients/client1.pub’にあり、秘密鍵は’ /etc/wireguard/clients/client1.key ‘にあります。以下のコマンドを実行して、生成された鍵ペアを表示および確認します。

cat /etc/wireguard/clients/client1.key  
cat /etc/wireguard/clients/client1.pub

verify client key pair

Wireguardサーバーの設定

このステップでは、Wireguardサーバー用の新しい設定ファイルを作成します。しかし、その前に、Wireguard VPNサーバーで使用するサブネットを決定する必要があります。また、Wireguard VPNサーバーでIPv6を有効にするか無効にするかも決定できます。

この例では、Wireguard VPNサーバーはIPアドレス’ 10.8.0.2/24 ‘を持ち、Wireguard VPNのIPv6を無効にします。

以下のnanoエディタコマンドを使用して新しいWireguard設定ファイル‘/etc/wireguard/wg0.conf ‘を作成します。

sudo nano /etc/wireguard/wg0.conf

まず、以下の行をファイルに追加してWireguardサーバーの詳細を定義します。’ PrivateKey ‘をWireguardサーバーの秘密鍵’ server.key ‘に変更してください。これにより、WireguardサーバーインターフェースはIPアドレス’ 10.8.0.1 ‘で実行され、クライアントが接続できるUDPポート’ 51820 ‘が開かれ、SaveConfigパラメータにより、Wireguardインターフェースがオフのときでも変更が設定ファイルに保存されます。

[Interface]  
# Wireguardサーバー秘密鍵 - server.key  
PrivateKey = SIybp8GHtKIPtHPBOQFP1kbQg4UCLCMyNIfCLBQR2EA=  
  
# Wireguardインターフェースは10.8.0.1で実行されます  
Address = 10.8.0.1/24  
  
# クライアントはUDPポート51820に接続します  
ListenPort = 51820  
  
# 変更がWireguard設定ファイルに保存されることを確認します  
SaveConfig = true

次に、以下の行を追加してクライアントピア接続を定義します。’ PublicKey ‘パラメータをクライアント公開鍵’ client1.pub ‘に変更します。そして、’ AllowedIPs ‘パラメータは、このピアにアクセスを許可されるWireguardクライアントを指定します。この例では、IP’ 10.8.0.2 ‘を持つクライアントのみがこのピア接続にアクセスできます。ただし、’ 10.8.0.0/24 ‘のようにサブネットの範囲を許可することもできます。

[Peer]  
# Wireguardクライアント公開鍵 - client1.pub  
PublicKey = ENokvIsS2euXrmM4OVFHPmTdCZ4wfEIR/UHuGCW64lw=  
  
# 接続を許可するクライアントのVPN IPアドレス  
# サブネットを指定することも可能 ⇒ [10.8.0.0/24]  
AllowedIPs = 10.8.0.2/24

ファイルを保存して、編集が完了したらエディタを終了します。

Wireguardサーバーの設定ファイルが作成され、クライアントピア接続が追加されたので、次にWireguardサーバーでポートフォワーディングを設定し、トラフィックルーティングのためにファイアウォールを設定します。

/etc/sysctl.confを介してポートフォワーディングを有効にする

このステップでは、Wireguardサーバーでファイル/etc/sysctl.confを介してポートフォワーディングを有効にします。WireguardサーバーでIPv4とIPv6の両方のポートフォワーディングを有効にできます。

まず、以下のnanoエディタコマンドを使用して設定ファイル‘/etc/sysctl.conf ‘を開きます。

sudo nano /etc/sysctl.conf

以下の行をファイルに追加します。これにより、Wireguardサーバーでポートフォワーディングが有効になります。IPv4とIPv6の両方を使用することもできますし、WireguardサーバーでIPv6を無効にしている場合はIPv4を使用することもできます。

# IPv4のポートフォワーディング  
net.ipv4.ip_forward=1  
  
# IPv6のポートフォワーディング  
net.ipv6.conf.all.forwarding=1

ファイルを保存して、編集が完了したらエディタを終了します。

次に、以下のsysctlコマンドユーティリティを実行して変更を適用します。

sudo sysctl -p

以下のような出力が表示されます - ポートフォワーディングはすぐに有効になります。

enable port forwarding

Wireguardサーバーでポートフォワーディングが有効になったので、次にWireguardクライアントのトラフィックを特定のネットワークインターフェースにルーティングするためのファイアウォールを設定します。

Wireguardサーバーのファイアウォールの設定

このステップでは、Wireguardサーバーでクライアント接続をインターネットにアクセスするために使用される適切なネットワークインターフェースにルーティングするために使用されるファイアウォールを設定します。これにより、WireguardクライアントがWireguardサーバーの特定のインターフェースを介してインターネットにアクセスできるようになります。

まず、以下のaptコマンドを実行して、Debianサーバーにufwファイアウォールパッケージをインストールします。

sudo apt install ufw

プロンプトが表示されたらyを入力し、ENTERを押して続行します。

install ufw

ufwがインストールされたら、以下のコマンドを実行してSSHサービスを開き、ufwファイアウォールを有効にします。

sudo ufw allow OpenSSH  
sudo ufw enable

ufwファイアウォールを有効にするための確認を求められたら、yを入力してENTERを押します。ufwファイアウォールは現在、システムで実行されており、有効になっています。

start enable ufw

次に、以下のコマンドを実行してufwファイアウォールの状態を確認します。’ Status: active ‘のような出力が表示されるはずです。これは、ufwファイアウォールの状態が実行中であることを意味します。

sudo ufw status

ufwファイアウォールが実行中であるため、次にWireguardクライアント接続を特定のネットワークインターフェースにルーティングするように構成します。

次に、以下のコマンドを実行して、Wireguardサーバーのデフォルトルーティングテーブルインターフェースを確認します。通常、これはインターネットにアクセスするために使用されるインターフェース、またはその上に公開IPアドレスがあるインターフェースを検出します。

ip route list default

以下のような出力が表示されます - この例では、インターフェースeth0がWireguardサーバーのデフォルトルーティングテーブルです。これはインターネットにアクセスするために使用されるインターフェースです。異なるインターフェース名がある場合があります。

次に、Wireguardサーバー設定ファイル’ /etc/wireguard/wg0.conf ‘を以下のnanoエディタコマンドを使用して開きます。

sudo nano /etc/wireguard/wg0.conf

[Interface] ‘セクションに以下の行を追加します。

[Interface]  
...  
....  
PostUp = ufw route allow in on wg0 out on eth0  
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE  
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE  
PreDown = ufw route delete allow in on wg0 out on eth0  
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE  
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

ファイルを保存して、編集が完了したらエディタを終了します。

  • PostUp ‘パラメータは、WireguardサーバーがVPNトンネルを開始するたびに実行されます。
  • PreDown ‘パラメータは、WireguardサーバーがVPNトンネルを停止するたびに実行されます。
  • コマンド’ ufw route allow in on wg0 out on eth0 ‘は、wg0インターフェースに入ってくるトラフィックをインターネットインターフェースeth0に転送することを許可します。
  • コマンド‘iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE’は、マスカレードを有効にし、wg0インターフェースからのIPv4トラフィックを再書き込み、Wireguardサーバーからの直接接続のように見えるようにします。
  • コマンド’ ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE ‘は、マスカレードを有効にし、wg0インターフェースからのIPv6トラフィックを再書き込み、Wireguardサーバーからの直接接続のように見えるようにします。

次に、以下のufwコマンドを実行して、クライアントが接続するUDPポート51820を開きます。

sudo ufw allow 51820/udp

最後に、以下のコマンドを実行してufwファイアウォールを再読み込みし、変更を適用します。次に、以下のコマンドを実行してufwルールのリストを確認します。

sudo ufw reload  
sudo ufw status

以下のような出力が表示されます - Wireguardサーバーがクライアント接続に使用するUDPポート51820がufwファイアウォールに追加されます。

setup ufw firewall

これで、Wireguardサーバーでポートフォワーディングが有効になり、ファイアウォールが設定されました。Wireguardサーバーを起動する準備が整いました。

Wireguardサーバーの起動

このステップでは、Wireguardサーバーを起動し、有効にします。また、Wireguardサーバーを確認し、Wireguardサービスによって作成されるwg0インターフェースを確認します。

以下のsystemctlコマンドユーティリティを実行して、Wireguardサービスを起動し、有効にします。サービス’ [email protected] ‘は、WireguardサーバーでWireguardインターフェース’ wg0 ‘を作成し、有効にします。

sudo systemctl start [email protected]  
sudo systemctl enable [email protected]

次に、以下のコマンドを実行してWireguardサービスを確認します。

sudo systemctl status [email protected]

以下のスクリーンショットに似た出力が表示されます - Wireguardサービス’ [email protected] ‘が実行中であり、有効になっています。これは、’ wg0 ‘インターフェースが作成され、実行中であることも意味します。

start enable verify wireguard server

以下のコマンドを実行して、Wireguardサーバーの’wg0’インターフェースを確認します。

ip a show wg0

以下のような出力が表示されます - Wireguardインターフェースwg0は、Wireguard設定ファイル’ /etc/wireguard/wg0.conf ‘で説明されているIPアドレス’ 10.8.0.1 ‘を取得します。

verify wg0 interface

さらに、以下のように’ wg-quick ‘コマンドを使用してWireguardを起動および停止することもできます。’ wg-quick up ‘コマンドはWireguardサーバーを起動し、‘wg-quick down ‘はWireguardサーバーを停止します。

sudo wg-quick up /etc/wireguard/wg0.conf  
sudo wg-quick down /etc/wireguard/wg0.conf

Wireguardサーバーが実行中になったので、次にクライアントマシンを設定し、Wireguardサーバーに接続します。

クライアントマシンの設定とWireguardサーバーへの接続

このステップでは、クライアントマシンを設定し、wireguard-toolsをインストールし、クライアント用の新しいWireguard設定を作成し、Wireguard VPNサーバーに接続し、最後に接続を確認して、クライアントマシンがインターネットおよびローカルVPNネットワークに到達できることを確認します。

クライアントマシンに’ wireguard-tools ‘パッケージをインストールします。この例ではDebianをクライアントとして使用するため、APTコマンドが使用されます。

sudo apt install wireguard-tools

インストールが自動的に開始されるはずです。

install wireguard client

wireguard-toolsがインストールされたら、以下のnanoエディタコマンドを使用して新しい設定ファイル’ /etc/wireguard/wg-client1.conf ‘を作成します。

sudo nano /etc/wireguard/wg-client1.conf

以下の行をファイルに追加します。

[Interface]  
# クライアントのIPアドレスを定義します - Wireguardサーバーのwg0と一致する必要があります  
Address = 10.8.0.2/24  
  
# 特定のDNSサーバー  
DNS = 1.1.1.1  
  
# クライアントの秘密鍵 - client1.key  
PrivateKey = KPI59QH0jwc9wkUsW5Byci9ojXhz1322QXK52fQCE3E=  
  
[Peer]  
# Wireguardサーバーの公開鍵 - server.pub  
PublicKey = Qt6oRLtlfAR490lTNb2K8TlbpwADV1j8NX7D5HY38EM=  
  
# Wireguard VPN経由でルーティングされるすべてのトラフィックを許可します  
AllowedIPs = 0.0.0.0/0  
  
# Wireguardサーバーの公開IPアドレス  
Endpoint = SERVER-IP:51820  
  
# 25秒ごとにKeepaliveを送信  
PersistentKeepalive = 25

ファイルを保存して閉じます。

[Interface] ‘セクションでは、以下を定義する必要があります:

  • クライアントのIPアドレスはWireguardサーバーのサブネットと一致する必要があります。この例では、WireguardクライアントはIPアドレス’10.8.0.2’を取得します。
  • クライアントのDNSサーバーを指定します。
  • PrivateKey ‘パラメータを生成したクライアント秘密鍵’ client1.key ‘に変更します。

[Peer] ‘セクションでは、以下を追加する必要があります:

  • Wireguardサーバーの公開鍵’ server.pub ‘をPublicKeyパラメータに追加します。
  • VPNピアでのアクセスを制限するために’ AllowedIPs ‘を指定します。ネットワークのサブネットを指定するか、すべてのトラフィックをVPN経由でトンネルするために0.0.0.0/0を指定します。
  • Wireguardサーバーの公開IPアドレスまたはドメイン名をEndpointパラメータに指定します。

クライアント設定が作成されたら、以下のコマンドを実行してクライアントマシンでWireguardを起動します。

wg-quick up wg-client1

以下のスクリーンショットに似た出力が表示されるはずです - 新しいWireguardインターフェース’ wg-client1 ‘が作成され、クライアントマシンは’ SERVER-IP:51820 ‘で実行されているWireguardサーバーに接続されるはずです。

configure wireguard client

以下のコマンドを実行してWireguardインターフェース’ wg-client1 ‘を確認します。

ip a show wg-client1

以下のような出力が表示されるはずです - wg-client1インターフェースは、Wireguardサーバーのサブネット’ 10.8.0.0/24 ‘の一部としてIPアドレス’ 10.8.0.2 ‘を持っています。

check wireguar clcinet interface

wg show ‘コマンドを使用してWireguard接続を確認することもできます。

クライアントマシンで以下の’ wg show ‘コマンドを実行すると、以下のような出力が表示されるはずです。

wg show

適切なWireguardサーバーに接続されている場合は、’ endpoint ‘セクションにWireguardサーバーのIPアドレスが表示され、Wireguardサーバーの公開鍵’ server.pub ‘が表示されます。

wg show client

次に、Wireguardサーバーに移動し、’ wg show ‘コマンドを実行します。

wg show

以下のような出力が表示されるはずです - endpointセクションにクライアントの公開IPアドレスが表示され、ピアセクションにクライアントの公開鍵‘client1.pub ‘が表示されます。

wg show wireguard server

最後に、以下のコマンドを実行して、クライアントマシンがインターネットまたはWireguard VPNの内部ネットワークサブネットにアクセスできることを確認します。

ping -c5 10.8.0.1  
ping -c5 1.1.1.1  
ping -c5 duckduckgo.com

以下の出力が表示されるはずです:

クライアントマシンは、IPアドレス‘10.8.0.1 ‘のWireguardサーバーに接続できます。

ping to wireguard server

クライアントマシンはインターネットにアクセスできます。すべてのトラフィックはWireguardサーバーの公開IPアドレスを介してルーティングされます。

ping to internet

クライアントマシンでWireguardを停止したい場合は、以下の’ wg-quick down ‘コマンドを実行できます。

wg-quick down wg-client1

以下のような出力が表示されます。また、インターフェースwg-client1はクライアントマシンから消えます。

ping with domain

これで、クライアントマシンにWireguard VPNが設定されました。クライアントマシンとWireguardサーバー間の接続も確認しました。

結論

このチュートリアルでは、Debian 11サーバーにWireguard VPNをインストールおよび設定しました。また、Debianマシンを設定し、Wireguard VPNサーバーに正常に接続しました。

詳細には、Wireguard VPNパッケージをインストールし、サーバーとクライアントの両方の公開鍵と秘密鍵のペアを生成し、特定のネットワークインターフェースにVPNトラフィックをルーティングするためにUFWファイアウォールを構成し、/etc/sysctl.confファイルを介してポートフォワーディングを有効にしました。

これを考慮に入れて、クライアント用に別の鍵ペアを生成し、Wireguardサーバーでピア接続を定義し、クライアントマシンが使用する新しいWireguard設定ファイルを作成することで、Wireguard VPNサーバーにさらにクライアントを追加できます。Wireguardの詳細については、公式のWireguardドキュメントを参照してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。