VPN(Virtual Private Network:仮想プライベートネットワーク)とは、インターネット上に仮想的な専用回線を作る技術のことです
インターネット通信を暗号化し、第三者による盗聴やデータ改ざんを防ぎ、公共のWi-Fi(カフェ、ホテル、空港など)を安全に利用できるようになります
今回はWireGuardをConoHa VPSで構築する方法を説明します
WireGuardは高速かつシンプルなVPNプロトコルで、セットアップも比較的簡単です
Windows PCにWireGuardをインストールして、ConoHa VPSのWireGuardサーバーに接続する方法を説明します
1. WireGuardのインストール
① WireGuardの公式サイトからダウンロード
- WireGuard公式サイト にアクセス
- 「Windows」用のインストーラーをダウンロード
- ダウンロードした .exe ファイルを実行してインストール
② WireGuardを起動
インストール後、WireGuardアプリを開きます
2. クライアント(Windows)の鍵を作成
ローカルPCのWindowsで鍵を作成します
WindowsのWireGuardアプリで鍵を作成
- 「トンネルを追加」の横の矢印をクリック
- 「新しい空のトンネルを追加」を選択
- 自動生成された PrivateKey(秘密鍵)と PublicKey(公開鍵)をコピーしておく
- 秘密鍵はWindows側に保存、公開鍵はVPS側に登録します
3. WindowsのWireGuard設定ファイルを作成
WireGuardアプリで新しいトンネルを作成し、以下の内容を入力
[Interface]
PrivateKey = 先ほど生成した秘密鍵
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = これから生成するサーバー側の公開鍵
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
Endpoint = xxx.xxx.xxx.xxx:51820
PersistentKeepalive = 25
PrivateKey にはWindows側の秘密鍵を入力し、PublicKey にはVPSの公開鍵を入力する予定です
Endpoint にはVPSのグローバルIPアドレスを入力
4.VPSの設定(サーバー側)
Ubuntu 20.04 または 24.04 を想定しています
- WireGuard インストール(VPS側)
sudo apt update<br>sudo apt install wireguard
- キーペア作成(サーバー用)
sudo wg genkey | tee /etc/wireguard/server_privatekey | sudo wg pubkey > /etc/wireguard/serverpublickey
# 権限を設定
sudo chmod 600 /etc/wireguard/server_privatekey
sudo chmod 644 /etc/wireguard/server_publickey
privatekey と publickey が生成されます
鍵の内容を見るコマンドは以下の通りです
sudo cat /etc/wireguard/server_privatekey
sudo cat /etc/wireguard/server_publickey
ここで確認したserver_publickeyをWindows側で作成した設定ファイルに入力します
- wg0.conf を作成、編集
sudo nano /etc/wireguard/wg0.conf
以下のように入力
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = サーバーの秘密鍵
# IPマスカレードでインターネットアクセスを有効化
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT
# --- クライアント(Windows) ---
[Peer]
PublicKey = Windowsの公開鍵
AllowedIPs = 10.0.0.2/32
5.VPSでのWireGuard起動・転送設定
IP転送を有効にする
sudo nano /etc/sysctl.conf
以下の行のコメントを外す(# を削除)
net.ipv4.ip_forward=1
変更を適用
sudo sysctl -p
Firewall(UFWなど)設定(必要に応じて)
sudo ufw allow 51820/udp
NAT設定(IPマスカレード)
sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
ここのコード内の eth0 はインターフェース名です
違う方もいると思うので以下に確認方法を書きます
ip a
たとえばこう表示されます
2: eth0: …
→ eth0 がインターフェース名
NAT設定を「永続化」する
再起動すると iptables の設定はリセットされるため、「保存」しておく必要があります
- iptables-persistent をインストール
sudo apt install iptables-persistent
途中で「保存しますか?」と聞かれたら「Yes」を選んでください
- 設定を保存
sudo netfilter-persistent save
- 次回起動時にも有効化されることを確認
sudo netfilter-persistent reload
6. VPNの起動
以下のコマンドでVPNを起動します
# 起動
sudo systemctl start wg-quick@wg0
# 有効化
sudo systemctl enable wg-quick@wg0
ステータスを確認するコマンド
sudo systemctl status wg-quick@wg0
以下のようにアクティブになっていれば正常です
● [email protected] - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/usr/lib/systemd/system/[email protected]; enabled; preset: enabled)
Active: active (exited) since Thu 2025-04-24 05:23:03 JST; 22s ago
Docs: man:wg-quick(8)
WireGuardは「必要なときだけ自動で通信する」軽量VPNなので、待ち受け状態でもリソースをほとんど使いません
7. クライアントから接続、確認
Windows側のwireguardから 有効化 をクリック
サーバー側で以下のコマンドで接続状態を確認します
sudo wg show
正常に接続できていれば以下のような表示がされます
interface: wg0
public key: サーバーの公開鍵
private key: (hidden)
listening port: 51820
peer: Windowsの公開鍵
endpoint: xxx.xxx.xxx.xxx:ポート番号
allowed ips: 10.0.0.2/32
latest handshake: 1 minute, 17 seconds ago
transfer: 812.90 KiB received, 1.06 MiB sent
実際にインターネットサイトに接続してみて自分のIPアドレスを確認してみます
自分のIPアドレスがサーバーのIPアドレスになっていると思います
以上の内容で、自前のサーバーのでVPNを構築して安全に公衆のWi-Fiを使用することができます
コメント