Junkie Work

access: 200890

FreeBSD 14.3-RELEASEにてVPNサーバ(WireGuard)


外出時に外から自宅LANに乗り込むためにVPNサーバーを構築します。

インストール

インストールはパッケージを利用します。

 # pkg install wireguard

設定

設定は、 /usr/local/etc/wireguard/で行います。

まず、サーバ側の秘密鍵と公開鍵を生成します。

# cd /usr/local/etc/wireguard/
# wg genkey | tee wg0.pri | wg pubkey > wg0.pub

同様にクライアント側の秘密鍵と公開鍵を生成します。

# cd /usr/local/etc/wireguard/
# wg genkey | tee android.pri | wg pubkey > android.pub

/usr/local/etc/wireguard/wg0.conf という名前の設定ファイルを作成します。

[Interface]
Address = 10.0.1.1/24
SaveConfig = false
ListenPort = 51820
PrivateKey = (wg0.pri の内容)

[Peer]
PublicKey = (android.pub の内容)
AllowedIPs = 10.0.1.5/24

クライアント側の設定ファイルは、 /usr/local/etc/wireguard/android.conf とします。

[Interface]
PrivateKey = (android.pri の内容)
Address = 10.0.1.5/24

[Peer]
PublicKey = (wg0.pub の内容)
AllowedIPs = 10.0.0.0/16
Endpoint = home.junkie.work:51820

このandroid.conf を Android の WireGuard アプリにインポートします。

wg0.conf以外のファイルはもう使わないので削除します。
(ファイルを無くしてしまった場合などは再生成するのが安全です)

wg0.conf をroot以外から読めなくしておきます。

# rm /usr/local/etc/wireguard/*.pri
# rm /usr/local/etc/wireguard/*.pub
# rm /usr/local/etc/wireguard/android.conf
# chmod 600 /usr/local/etc/wireguard/wg0.conf

起動

/etc/rc.conf に起動の設定を記載します。

service wireguard enable
sysrc wireguard_interfaces="wg0"

起動します。

# service wireguard start