Linuxカーネルにマージされた次世代VPN WireGuad を動かしてみましたが(断念!!)

WireGuardは、設定が簡単にできるに関わらず、実装が軽量で、高速で、最新の暗号化をサポートした次世代のVPNと言われています。
開発中のLinuxカーネル「Linux 5.6」のソースにがマージされたようで、ただし、正式リリースに至っておらず、潜在的なバグもあるらしく、自己責任で扱うようにアナウンスされています。


とはいえ、近いうちにお世話になるのは目に見えているので、AmazonWebServicesのUbuntuサーバ上に導入してみました。

AWS上でUbuntuは動かしたことがなかったので、まず「ec2-user」でなく、「ubuntu」であることにびっくり!

クライアント側は、ラズパイ3B上で、UbuntuServer20.04とUbuntuMate(メイトと呼ぶのではなく、マテらしい)を動かしてWireGuardクライアントを動かしてみた。以下は初めてしったこと。

  • 初めにラズパイ3Aを使ったが、WireGuardはラズパイ3A上にインストールNG
    ラズパイZEROはハード的には、ラズパイZEROに近いみたい
  • UbuntuServrer20.04ではWireGuardを、PPAを当てないでインストールできた
  • UbuntuMateではWireGuardを、PPAを当てないとインストールできない
  • UbuntuMateは、raspi-config 使ってRasbianみたいに調整ができる。MicroSD拡張も可。
  • UbuntuMateは、SSHが初期導入されていない。さらに認証手順も必要。
  • UbuntuMateは、xrdp&Remminaが動かなかった。(前はできたのに!!!)
  • UbuntuMate日本語環境は、ibus-mozcを入れないとこのVerではダメみたい
     (ubuntu-mate-18.04.2-beta1-desktop-armhf+raspi-ext4.img)

とかなり、苦戦したんですが、(サーバ設定ですけど)

(サーバ側結果)

WireGuardの起動や終了に、wg-quickというラッパースクリプトを使用します。
systemdのユニット名は、「⁠wg-quick@使用するインターフェイス名」です。sytemctlコマンドで有効化します。

root@ip-10-0-88-188:/home/ubuntu# sudo systemctl enable wg-quick@wg0
Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick@.service.
root@ip-10-0-88-188:/home/ubuntu# sudo systemctl start wg-quick@wg0

root@ip-10-0-88-188:/home/ubuntu# ip addr show dev wg0

4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8921 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever

(クライアント側結果)

WireGuard クライアントを起動

root@rpi-ubtmate:/home/miko# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.10 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

root@rpi-ubtmate:/home/miko# ip addr show dev wg0

4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.10/32 scope global wg0
valid_lft forever preferred_lft forever

root@rpi-ubtmate:/home/miko# wg

interface: wg0
public key: 4NpuJPQUqIyMVeCc66oDzHuzSsXF1rUG7oWL2AZGLQk=
private key: (hidden)
listening port: 58248
fwmark: 0xca6c

peer: wjG6JvEHJpa5fuReimIZXhuZarPuTg0oINarHodo/ig=
endpoint: 18.180.10.13:51820
allowed ips: 0.0.0.0/0
transfer: 0 B received, 23.99 KiB sent
persistent keepalive: every 25 seconds

と起動したんですが、

メッセージ的にはうまくいったぽいんだけど、

ping がなぜか通らずにここで断念!!!

サーバを仮想環境に置いたせいかな???AmazonWebServices などは仮想環境で通信がどうなっているのかがブラックボックスなので、確証がない!

2021.05.25 1年ぶりにWireGuardの通信に挑戦し、今度は無事に、AWSクラウド上のWireGuardサーバと、ラズパイ、スマホ、WinPCのクライアント間で通信が成功した!!