地方在住IT系ニート

bkds

WireGuardのインストールと設定のメモ

はじめに

Raspberry Pi 4とスマートフォンのP2P接続ができるように設定していきます。
WireGuardはP2P方式のVPNですが、今回はクライアント・サーバ方式のような使い方をしています。

インストール

Raspberry Piについては公式のQuick Startにインストール方法と設定方法が書かれていますが、今回はこちらの方法ではなくPiVPNを利用してインストールしています。

curl -L https://install.pivpn.io | bash

キーファイルの作成

VPN接続に利用するキーを作成します。

sudo umask 077

sudo wg genkey > /etc/wireguard/keys/server_priv
sudo wg pubkey < /etc/wireguard/keys/server_priv  > /etc/wireguard/keys/server_pub

sudo wg genkey > /etc/wireguard/keys/client_priv
sudo wg pubkey < /etc/wireguard/keys/client_priv  > /etc/wireguard/keys/client_pub
sudo wg genpsk > /etc/wireguard/keys/client_psk

設定ファイル作成

VPN接続に利用する設定ファイルを作成します。

sudo vim /etc/wireguard/wg0.conf
sudo vim /etc/wireguard/configs/client.conf
[Interface]
PrivateKey = {/etc/wireguard/keys/server_privの値}
Address = 10.0.0.1/32
MTU = 1420
ListenPort = 51820

### begin client ###
[Peer]
PublicKey = {/etc/wireguard/keys/client_pubの値}
PresharedKey = {/etc/wireguard/keys/client_pskの値}
AllowedIPs = 10.0.0.2/32
### end client ###
[Interface]
PrivateKey = {/etc/wireguard/keys/client_privの値}
Address = 10.0.0.2/32
DNS = 8.8.8.8, 8.8.4.4

[Peer]
PublicKey = {/etc/wireguard/keys/server_pubの値}
PresharedKey = {/etc/wireguard/keys/client_pskの値}
Endpoint = example.com:51820
AllowedIPs = 0.0.0.0/0, ::0/0

WireGuardのコマンド

# 自動起動設定
sudo systemctl enable --now wg-quick@wg0

# 起動インタフェースを指定
sudo wg-quick up wg0

# 停止
sudo wg-quick down wg0

# 状況確認
sudo wg show

サーバ側でフォワーディング設定

sudo vi /etc/sysctl.conf

net.ipv4.ip_forward=1

sudo sysctl -p

スマートフォンの設定

下記コマンドで設定をQRコード化することができます。
このQRコードをWireGuardアプリで読み込むことで設定が完了します。

sudo qrencode -t ansiutf8 < /etc/wireguard/configs/client.conf

VPNクライアントのルーティングが上手くいかない問題

PostUpとPostDownはWireGuardの起動・終了時に実行するコマンドを設定できます。

下記の設定を/etc/wireguard/wg0.confのInterfaceに追加

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
にほんブログ村 IT技術ブログ IT技術メモへPVアクセスランキング にほんブログ村