Junkie Work

access: 265943

FreeBSDにてVPNサーバ(WireGuard)


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

インストール

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

 # pkg install wireguard

設定

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

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

# cd /usr/local/etc/wireguard/
# (umask 077; wg genkey | tee wg0.pri | wg pubkey > wg0.pub)

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

# cd /usr/local/etc/wireguard/
# (umask 077; 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.0/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 アプリにインポートします。

インポートする際に、QRコードを利用すると便利です。パッケージから qrencode をインストールして、以下のコマンドでQRコードを表示します。

# pkg install libqrencode
# qrencode -t ansiutf8 < /usr/local/etc/wireguard/android.conf

AndroidのWireGuardアプリで、「+」をタップして「QRコードをスキャン」を選択し、QRコードを読み取ります。

起動

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

# sysrc wireguard_enable="YES"
# sysrc wireguard_interfaces="wg0"

起動します。

# service wireguard start