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