WireGuard は新しいVPN方式です。今後プロトコルの方式が変わる可能性があります。
Wireguard は最先端の暗号技術を使用する非常にシンプルで高速な VPN です。IPSec よりも高速・単純・軽量・有用であることを目指しており、面倒なことを避けています。OpenVPN と比べると高いパフォーマンスを発揮します。WireGuard は組み込みインターフェイスからスーパーコンピュータまで様々な環境に対応する汎用の VPN として設計されています。最初は Linux カーネル用にリリースされており、幅広いデプロイが可能なクロスプラットフォームになる予定です。
Ubuntu にWireGuardをインストール
Vultr で動作確認
Ubuntu 16.04 / 18.04
SSHでログイン
ネットワークインターフェースを調べる
$ ifconfig
eth0 , ens3などをチェック

WireGuard インストール
$ sudo add-apt-repository ppa:wireguard/wireguard
Enter押す
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools
それぞれ認証鍵を作成
- サーバー公開鍵 (server.pub)
- サーバー秘密鍵 (server.key)
- クライアント公開鍵 (sp.pub)
- クライアント秘密鍵 (sp.key)
$ cd /etc/wireguard
$ wg genkey | tee server.key | wg pubkey > server.pub
$ wg genkey | tee sp.key | wg pubkey > sp.pub
# サーバー秘密鍵を確認
$ cat server.key
MCFbEYi9GE7REmpWMuDssURIiITkb1fK6VsY/ZPMl0A=
# クライアント公開鍵を確認
$ cat sp.pub
7lcxJZUfdx0xTKr1Mnv5sBVoWlGl313Ob0MJWgju4lc=

サーバー設定ファイルを編集
ens3はifconifgで調べたネットワーク・インターフェースに合わせる
$ sudo nano /etc/wireguard/wg0.conf
<サーバー秘密鍵>と<クライアント公開鍵>はそれぞれ確認した文字列をコピペします。
Listenポートは任意のポートを設定してください。
[Interface]
PrivateKey = <サーバー秘密鍵>
ListenPort = 19999
SaveConfig = false
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
[Peer]
PublicKey = <クライアント公開鍵>
AllowedIPs = 10.0.0.2/32
# WireGuardを起動
$ sudo wg-quick up wg0
$ sudo wg
WireGuardのステータスが表示されます。

クライアント用設定ファイルの作成
# クライアント秘密鍵を確認
$ cat sp.key
9B4C0Ad5B/loI1eKrMJB1wdCdLL5MXP7H3Liw7nV1lZ=
# サーバー公開鍵を確認
$ cat server.pub
/oeZ7nkq6SA2yDrNENGRnJlg4nfE0FdNzCqqd1XN4EN=
$ sudo nano /etc/wireguard/sp.conf
同様に<クライアント秘密鍵>と<サーバー公開鍵>をコピペします。
[Interface]
PrivateKey = <クライアント秘密鍵>
Address = 10.0.0.2
DNS = 8.8.8.8
[Peer]
PublicKey = <サーバー側公開鍵>
AllowedIPs = 0.0.0.0/0
Endpoint = <サーバーIP>:19999
クライアントの設定
AndroidやiPhoneなどのクライアントアプリからQRコードを読み込んで設定できるようにします。
$ sudo apt install -y qrencode
$ cd /etc/wireguard
$ qrencode -t ansiutf8 < sp.conf
もしくは
$ qrencode -o qr.png -t ansiutf8 < sp.conf && cat qr.png

# WireGuard 再起動
$ sudo wg-quick down wg0
$ sudo wg-quick up wg0
# WireGuard自動起動
$ sudo systemctl enable wg-quick@wg0
# パケットフォワーディングを有効にする
$ sudo nano /etc/sysctl.conf
#アンコメント
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
# 再度読み込み
$ sudo sysctl -p
ファイアウォールの設定
$ sudo ufw allow 19999/udp
$ sudo ufw enable
ルーターのポート開放をお忘れなく! UDPなので注意。
WireGuard へクライアントから接続
iPhone、Android
アプリを開いて、「Create from QR code」からさきほどのQRコードをカメラで読み込みます。

Windows、MacOS
Windows WireGuard
今回設定した「sp.conf」の内容をそのままコピペします。

WireGuard、OpenVPN 、ShadowSocksR速度比較
日本国内でVultr 東京サーバーへ接続時
WireGuard

OpenVPN

ShadowSocksR
