WindowsパソコンをWireGuardのクライアントにする

WireGuardのWindows向けクライアントをセットアップしてみました。若干、Linuxとは設定方法が違いましたが、難しくはありませんでした。
やはり、クライアントの選択肢にWindowsがあるというのは安心感、利便性が上がります。

ちなみに、WireGuardサーバをWindowsで実装することもできるようですが、公式にはサポートされていないようです。

それでは、Windows10のクライアント端末で、WireGuadを設定していきます。

WireGuard をインストール

https://www.wireguard.com/install/#windows-7-8-81-10-2012-2016-2019

Wireguard(Win)をダウンロード
接続用コンフィグを指定して、設定を登録ツールするがある

● WireGuard Windowsクライアントの暗号鍵のキーペアの生成(VPNサーバ側で実施)

ubuntu@ip-10-21-11-79:~$ sudo -s
root@ip-10-21-11-79:/home/ubuntu# cd /etc/wireguard/
root@ip-10-21-11-79:/etc/wireguard# umask 077
root@ip-10-21-11-79:/etc/wireguard# wg genkey > priv_win1

root@ip-10-21-11-79:/etc/wireguard# ls

phone1.conf  priv_client1  priv_client2  priv_phone1  priv_win1  privatekey  pub_client1  pub_client2  pub_phone1  publickey  wg0.conf  wg0.conf_backup

root@ip-10-21-11-79:/etc/wireguard# wg pubkey < priv_win1 > pub_win1
root@ip-10-21-11-79:/etc/wireguard# ls

phone1.conf  priv_client1  priv_client2  priv_phone1  priv_win1  privatekey  pub_client1  pub_client2  pub_phone1  pub_win1  publickey  wg0.conf  wg0.conf_backup

●VPNサーバのwg0.conf へLinuxクライアント用の設定を追加

root@ip-10-21-11-79:/etc/wireguard# vi /etc/wireguard/wg0.conf

[Peer]
PublicKey = (pub_win1ファイルの内容)
AllowedIPs = 10.0.0.50/32      → /32 でなければエラーになる ( Warning: AllowedIP has nonzero host part: 10.0.0.50/24 )

root@ip-10-21-11-79:/etc/wireguard# wg-quick down wg0    → WireGuardサーバを起動

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 8921 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT;iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

● WireGuard クライアントの設定ファイル生成

[Interface]
Address = 10.0.0.50
PrivateKey = (priv_win1ファイルの内容)

[Peer]
PublicKey = WireGuardサーバの公開鍵の値を記載
AllowedIPs = 0.0.0.0/0
Endpoint = telew.miko.services:51820
PersistentKeepalive = 25

●[トンネルをファイルからインポート] をクリックして、作成した WireGuard 設定ファイルをインポート

速攻有効になった!!
接続状態が表示された!!

ステータスが、「有効」に変わった!!

※ この段階で、操作端末から、WireGuardのサーバに接続していたTeraTermが切断された。
  おそらく所属ネットワークセグメントが変わったからでしょう。
  WireGuard サーバのVPN上のIPアドレス「10.0.0.1」を指定して、
  TeraTermから接続したら入れた。

ubuntu@ip-10-21-11-79:~$ sudo -s
root@ip-10-21-11-79:/home/ubuntu# ip addr show dev wg0   ※ WireGuardサーバが利用する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

root@ip-10-21-11-79:/home/ubuntu# wg             ※ WireGuardの稼働状態

interface: wg0
  public key: FHFR3FIpUrh/+0fHNnhfBqiQOouKvmYs8V/MCuHhlHc=
  private key: (hidden)
  listening port: 51820

peer: ELpO+UulAP4olrosI3fSrffkb+iM5WXK5pdZB9/m6Qw=     ※ Win端末だけ接続している
  endpoint: 153.156.36.154:54928
  allowed ips: 10.0.0.50/32
  latest handshake: 1 minute, 17 seconds ago
  transfer: 997.99 KiB received, 18.38 KiB sent

peer: eRaxN7qZFEukAnZpU82xdN+vXTlqBo9eRHbm0UcKqAQ=
  allowed ips: 10.0.0.10/32

peer: qmcBH0wXxuwBfhRtJb3iXyZmFx2Q2Cwf64lKriq4lDI=
  allowed ips: 10.0.0.20/32

peer: IZq00ycLTlRPldWkXDVLHFRPcevQvpUqNH2xtKABL3k=
  allowed ips: 10.0.0.100/32
カメラモニタも動作できた!!

上記イメージのように、Windowsパソコンから、AWS上のWireGuardサーバに接続し、同じくクライアント接続しているラズパイ4のWebカメラ画面を表示できた。

WindowsパソコンをWireGuardクライアントとして設定する手間は、Linux、iPhone、Androidと比較しても特には難しくはありませんでした。

これで、AWS上のUbuntuサーバに対して、Win、Linux、iPhone、Androidをクライアントにして、マルっと通信できることが確認できました。
また、各システムでも設定、操作性ともにわりと簡単に実装することができました。

使用感もスムーズな感じを受けましたし、通信速度もライブ映像の画面表示の感じでは問題ない印象を受けました。

そして、SoftEtherVPNで作ったテレワークシステムをマルっと置き換えられるベースが確認できたので、これがLinuxの標準機能として利用できるのはポイントが高いと思いました。