参照サイト
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0614
https://mirahouse.jp/n10/blog/2020/vpn-wireguard/
WireGuardをインストールする
sudo apt install wireguard
サーバー用秘密鍵・公開鍵を生成する
wg genkey | sudo tee /etc/wireguard/server.key
sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
クライアント用秘密鍵・公開鍵を生成する
今回はPC用とスマホ用に2つ作る
01と02フォルダにそれぞれ秘密鍵・公開鍵が生成される
mkdir ~/wireguard/01
cd ~/wireguard/01
wg genkey | sudo tee client.key
sudo cat client.key | wg pubkey | sudo tee client.pub
mkdir ~/wireguard/02
cd ~/wireguard/02
wg genkey | sudo tee client.key
sudo cat client.key | wg pubkey | sudo tee client.pub
サーバー設定をする
クライアントに割り当てたVPN用IPアドレスをAllowedIPsに設定する
サブネットマスクは/32でないとエラーになるという情報があったので
その通りにした。
PostUp/PostDownはWireGuardの起動/終了時に実行するコマンド
iptablesのフォワーディングの設定を追加しているので
スマホ > WireGuardサーバー > インターネット
という経路が利用できるようになる。
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = (serverPrivateKey)
Address = 10.0.0.1
ListenPort = 51820
SaveConfig = true
PostUp = iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -o %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -o %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = (clientPublicKey1)
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = (clientPublicKey2)
AllowedIPs = 10.0.0.3/32
クライアント設定をする
[Interface]
DNSはサーバーがアクセス可能なDNSを指定する
(指定しないとインターネットにアクセスできなかった)
[Peer]
AllowedIPs = 0.0.0.0/0を指定することで
クライアントのすべての通信をWireGuard経由にする
EndpointにはサーバーのIPアドレスとListenPortを指定する
client1
[Interface]
PrivateKey = (clientPrivateKey1)
Address = 10.0.0.2/32
DNS = 8.8.4.4
[Peer]
PublicKey = (serverPublicKey)
AllowedIPs = 0.0.0.0/0
Endpoint = x.x.x.x:51820
client2
[Interface]
PrivateKey = (clientPrivateKey2)
Address = 10.0.0.3/32
DNS = 8.8.4.4
[Peer]
PublicKey = (serverPublicKey)
AllowedIPs = 0.0.0.0/0
Endpoint = x.x.x.x:51820
サーバーでWireGuardを起動する
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
クライアントでVPN接続し、サーバーで接続状態を確認する
sudo wg