WireGuardのインストールとクライアント接続設定方法
要約: LinuxサーバーにWireGuard VPNをインストールし、キー生成・ファイアウォール開放・サービス登録までを構成する方法を説明します。Macクライアントのconf設定とGUI接続確認手順を含め、安全なリモートアクセス環境を構築できます。

概要
WireGuardは、簡潔な設定と軽量なパフォーマンスでpeer-to-peer VPNを構成できるツールです。
この記事では、LinuxサーバーにWireGuardをインストールし、サーバーキー・ファイアウォール・サービスを整えたうえで、Macクライアントから接続するまでの一連の流れをまとめます。
サーバーキーの生成、wg0の設定、UDP 51820ポートの開放、クライアントPeerの登録、接続確認までを順番に扱うため、同じ手順で設定できます。
サーバーのインストール
システムサービスとして動作するため、rootで進めてください。
基本インストール
1apt install wireguard
インストール確認
1wg --version
サーバーキーの生成
1mkdir -p /etc/wireguard
2wg genkey | tee /etc/wireguard/server.key | wg pubkey | tee /etc/wireguard/server.pub
3
4# 権限設定
5chmod 600 /etc/wireguard/server.key
環境設定
設定ファイルをあらかじめ作成します。
1touch /etc/wireguard/wg0.conf
2chmod 600 /etc/wireguard/wg0.conf
設定ファイルにインターフェースを設定
- サーバーキーを登録
- SaveConfigが有効になっている場合、このファイルを編集した後にサーバーを停止すると、サーバーの状態で上書きされてしまいます
- SaveConfigモードで使用する場合は、
wg setなどで制御する必要があります
1# /etc/wireguard/wg0.conf
2[Interface]
3Address = 10.200.0.1/24
4ListenPort = 51820
5PrivateKey = {server key contents}
6SaveConfig = false
Inbound設定(ファイアウォール設定)
Peer to Peerではありますが、最初のハンドシェイクのためにUDPサーバーポートを開放しておく必要があります。
さらにiptablesを使用している場合は、ポートも開放する必要があります。
1iptables -I INPUT 1 -p udp --dport 51820 -j ACCEPT
2
3# ubuntu 24
4# netfilter-persistent save
5
6# Result
7# run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
8# run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
サーバーの実行
サービスの登録と起動
1systemctl enable wg-quick@wg0
2systemctl start wg-quick@wg0
wgの確認
1wg
2
3# Result
4# interface: wg0
5# public key: Y9oH7jnQVVILuRnhekWDRh9s7gCOyOf2HerAfS5Iymw=
6# private key: (hidden)
インターフェースの確認
1ip addr show wg0
2
3# Result
4# 3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8920 qdisc noqueue state UNKNOWN group default qlen 1000
5# link/none
6# inet 10.200.0.1/24 scope global wg0
7# valid_lft forever preferred_lft forever
クライアントのインストール
ユーザークライアントキーの生成(ローカルクライアント作業)
- ユーザーの秘密鍵はサーバー上で生成しても構いませんが、生成後にサーバーに残しておいてはいけません
- サーバーは公開鍵のテキストさえ分かれば十分です
- 生成した秘密鍵は、クライアントに移動した後に削除してください
ローカルのMacにインストールする場合、wgがなければインストールが必要です。
1brew install wireguard-tools
キーの生成
1# ディレクトリを作成して移動
2mkdir -p ~/.wireguard
3cd ~/.wireguard
4
5# キー生成: wg genkey | tee {KeyName}.key | wg pubkey > {KeyName}.pub
6wg genkey | tee user.key | wg pubkey > user.pub
重要!サーバーへのユーザーキー登録
wg0.confファイルにpeer情報を登録します。
- Peerは複数設定できます
- AllowedIPs宛てに送られたリクエストは、該当のPeerに転送されます
1# /etc/wireguard/wg0.conf append
2
3# plzhans
4[Peer]
5PublicKey = {public key contents}
6AllowedIPs = 10.200.0.2/32
サーバーの再起動
1systemctl restart wg-quick@wg0
クライアントからサーバーへの接続
peer to peer通信の特性だと理解し、サーバーの設定を逆にすればよいです。
WireGuardクライアントの設定
インストール確認
1wg --version
2wg-quick --version
ユーザークライアントの接続(ローカルクライアント作業)
- Endpoint : External public ip
- PersistentKeepalive : Keep alive time
1# ~/.wireguard/xx-server.conf
2
3[Interface]
4PrivateKey = {user private key contents}
5Address = 10.200.0.2/24
6
7[Peer]
8PublicKey = {server key contents}
9Endpoint = {server public IP}:51820
10AllowedIPs = 10.200.0.1/32
11PersistentKeepalive = 25
クライアントの実行
1sudo wg-quick up ~/.wireguard/xx-server.conf
2
3# stop
4sudo wg-quick down ~/.wireguard/xx-server.conf
クライアントの状態確認
- この部分が表示されれば最終的に接続完了です: latest handshake: 5 seconds ago
1wg
2
3# Result
4# interface: utun12
5# public key: b69QMnldUd60JLXEUc4j8QzKI/1su1h4e6scx/YgrHE=
6# private key: (hidden)
7# listening port: 64874
8
9# peer: Y9oH7jnQVVILuRnhekWDRh9s7gCOyOf2HerAfS5Iymw=
10# endpoint: 161.33.140.98:51820
11# allowed ips: 10.200.0.1/32
12# latest handshake: 5 seconds ago
13# transfer: 92 B received, 180 B sent
14# persistent keepalive: every 25 seconds
クライアントGUIツールを使用する場合
作成したクライアントconfファイルをimportします。
import

登録確認

接続確認

社内サーバーへの接続確認
VPN IPでのSSHアクセス確認
1nc -vz 10.200.0.1 22
2Connection to 10.200.0.1 port 22 [tcp/ssh] succeeded!
IPルーティング
次に、ローカルクライアントからVPNサーバーを経由して内部ネットワークにアクセスできるよう設定する必要があります(MASQUERADEを使用)。
以下の内容を前提とします。
- サーバーのプライベートネットワーク: 10.200.0.0/24
- サーバーのネットワークインターフェース: enp0s6
1# /etc/wireguard/wg0.conf append
2[Interface]
3...
4
5# IP FORWARD
6PostUp = sysctl -w net.ipv4.ip_forward=1
7PostUp = iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -o enp0s6 -j MASQUERADE
8PostUp = iptables -I FORWARD 1 -i %i -j ACCEPT
9PostUp = iptables -I FORWARD 1 -o %i -j ACCEPT
10
11PostDown = iptables -t nat -D POSTROUTING -s 10.200.0.0/24 -o enp0s6 -j MASQUERADE
12PostDown = iptables -D FORWARD -i %i -j ACCEPT
13PostDown = iptables -D FORWARD -o %i -j ACCEPT
まとめ
サーバーのインストールからクライアント接続確認までを終えたら、VPN IPを使ってSSHなどの内部サービスにアクセスできるようになります。
Peerを追加する際は、公開鍵とAllowedIPsだけをサーバーに登録し、秘密鍵はクライアントにのみ保管しておけば問題ありません。
GUIクライアントを使えば、作成したconfファイルをimportするだけで同じように接続できます。
SaveConfigオプションとファイアウォールのUDPポートは運用中によくミスが起きやすい部分なので、設定前にもう一度確認しておくことをおすすめします。