【Raspberry Pi】PiVPN(WireGuard)をインストール

過去にPiVPNでOpenVPNをインストールしましたが、何やら最近のPiVPNでは「WireGuard」が利用できるようなので、そちらでインストールしてみました。

■参考サイト
Setting up a WireGuard VPN on the Raspberry Pi - Pi My Life Up
pivpnでRaspberry PiにWireGuardをインストールしてVPNサーバーを構築 - Qiita
https://www.wundertech.net/setup-wireguard-on-a-raspberry-pi-vpn-setup-tutorial/

1.PiVPNのインストール

いきなりですが、前回記載と同様の部分は端折ります。
engetu21.hatenablog.com

この画面でWireGuardを選択
f:id:engetu21:20200824213556j:plain

勝手にコマンドが実行されます。
f:id:engetu21:20200824213807j:plain

ポート設定する。特に気にならなければデフォルトの「51820」で設定。
f:id:engetu21:20200824213900j:plain

2.インストール完了後のユーザ作成

ここは前回と変わらず「pivpn add」で作成。
f:id:engetu21:20200824215109j:plain


「pivpn -qr ユーザ名」でAndroidなどのクライアントアプリから読み込めるQRコードを生成できます。
f:id:engetu21:20200824220311j:plain
QRコードを読み込まない場合は、生成される[ユーザ名.conf]ファイルをコピーして、アプリでインポートする必要があります。

3.内部LANにアクセスするための設定

$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
コメントアウトされていたら取り外す。

$ sudo vi /etc/wireguard/wg0.conf
※[Interface]の項目は以下を追加する。
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

wg0 はWireGuardがインストールされた時点で仮想インタフェースとして追加される模様。ifconfigで確認可能。

4.ルータでポートフォワード設定

ラズパイ4のIPアドレスに対してUDP:51820ポートの転送設定を行います。
f:id:engetu21:20200824221742j:plain

5.VPN接続タイプ

Setup WireGuard on a Raspberry Pi! VPN Setup Tutorial! - WunderTech
の2項にてVPN接続タイプについて説明があります。デフォルトはFull-Tunnel VPNのようですがFree-WiFiなどを利用した際に、自宅のネットワークから接続している形となるため、接続元の隠蔽と接続内容の暗号化によってセキュアな通信になると思われるため(自信はない)、個人的にはデフォルトのままでいいんじゃないかなと思います。

6.感想

OpenVPNより手早く繋がります。それこそボタン押した直後から1秒未満でスッと繋がります。
ただ問題点というか、OpenVPN違い、繋がっているクライアントはVPNサーバ(今回はラズパイ4)のサブネットワークに属している形になるため、内部LANのマシンからは見えない存在になります。
なので、内部LANからVPNクライアントのマシンにアクセスしたいといった用途がある場合は、もう一工夫必要になりそうです。
ヒントは以下参考ページの7項に書いてありますが、ルータの機能にも依存すると思われるため、対応したい人は頑張りましょう。
https://www.wundertech.net/setup-wireguard-on-a-raspberry-pi-vpn-setup-tutorial/