WireGuardを使ってサクッとVPNを構築する

WireGuardを使ってサクッとVPNを構築したくなったのでやってみます。

早速設定する

まずはHostAとHostBを用意します。そしてwgをinstallします。

sudo apt install wireguard-tools

そして以下のコマンドを各hostで実行するだけ! (最後のコマンドでは両Hostの情報が必要になるので両Hostでコマンドを実行し終わっている必要があります)

hostA(192.168.100.1)で実行するコマンド

sudo su # 最初から特権モードになると楽
wg genkey > private
cat private # あとで中の文字列が必要になります
ip link add wg0 type wireguard
ip addr add 10.0.0.1/24 dev wg0
wg set wg0 private-key ./private
sudo ip link set wg0 up

sudo wg
# interface: wg0
#   public key: <HostAの公開鍵>
#   private key: (hidden)
#   listening port: 38910

sudo wg set wg peer <HostBの公開鍵の文字列> allowed-ips 10.0.0.2/32 endpoint 192.168.100.2:<HostBのlistening port>

hostB(192.168.100.2)

sudo su # 最初から特権モードになると楽
wg genkey > private
cat private # あとで中の文字列が必要になります
ip link add wg0 type wireguard
ip addr add 10.0.0.2/24 dev wg0
wg set wg0 private-key ./private
sudo ip link set wg0 up

sudo wg
# interface: wg0
#   public key: <HostBの公開鍵>
#   private key: (hidden)
#   listening port: 38910

sudo wg set wg peer <HostBの公開鍵の文字列> allowed-ips 10.0.0.1/32 endpoint 192.168.100.1:<HostAのlistening port>

pingを叩いてみる

hostAからhostBにpingしてみます。

ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=1.74 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.878 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.754 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.822 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3076ms
rtt min/avg/max/mdev = 0.754/1.049/1.742/0.402 ms

OK。なんて簡単なんでしょうか