WireGuardサーバーをUbuntu Server 20.04 へインストールする方法の紹介
クライアント側の設定手順は下記
-
WireGuard クライアント Ubuntu Server 20.04 LTS へのインストールおよび設定方法
インストール環境
- Ubuntu Server 20.04.2 LTS 最小構成インスト-ル状態
インストール構成
WireGuardはUDPを利用します。ポート番号は今回 51820を利用します。今回インストールした環境は直接インターネットに接続されている構成のため設定不要ですが、FWなどが設置されている環境にサーバーを設置する際はFWやルータなどでサーバー向けに51820/UDPのポートフォワーディングを設定する必要があります。
今回は上記構成を作成する。サーバー側ではクライントからのパケットをNAT(192.168.11.6)することでLANへ接続する構成となっています。LAN側でstatic route(172.16.0.0/24 gw 192.168.11.6)を設定すればNATは不要です。
WireGuardのインストール
1 |
sudo apt install wireguard-tools |
WireGuardの設定
秘密鍵、公開鍵の作成
サーバおよびクライアントそれぞれに秘密鍵、公開鍵を作成して、お互いの公開鍵を交換して接続する必要があります。下記は秘密鍵、公開鍵を作成します。
- wg genkey
- wg pubkey
これらのコマンドを組み合わせて秘密鍵、公開鍵を作成します。
1 2 3 |
test@ubuntu-wireguard-server:~$ wg genkey | sudo tee /etc/wireguard/server.key wAk85jWULZCP5TJuP+Eeku1Zam4aecq5eMpwk5FoCk8= test@ubuntu-wireguard-server:~$ |
1 2 3 |
test@ubuntu-wireguard-server:~$ sudo cat /etc/wireguard/server.key| wg pubkey | sudo tee /etc/wireguard/server.pub 4LlvdanqC1qgy5/QCNAAl0aQKRU06KiIjdHggQaq9AQ= test@ubuntu-wireguard-server:~$ |
上記コマンドでサーバ用の秘密鍵、公開鍵が下記に作成されます。
- 秘密鍵 /etc/wireguard/server.key
- 公開鍵 /etc/wireguard/server.pub
同じ手順でクライアント用の秘密鍵、公開鍵
1 2 3 4 5 |
test@ubuntu-wireguard-server:~$ wg genkey | sudo tee /etc/wireguard/client.key EGlKwcEygoKCJLwK6i+Npz/q7VPCzYZ3r1WWubOLf2M= test@ubuntu-wireguard-server:~$ sudo cat /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub ZgkQRfVdFNM3pLaY6g3CK1hZiVr6JMS0mKXXrv3uiCQ= test@ubuntu-wireguard-server:~$ |
作成した秘密鍵、公開鍵をrootのみ読み書きできる状態に変更します。
1 2 3 4 |
sudo chmod 600 /etc/wireguard/server.key sudo chmod 600 /etc/wireguard/server.pub sudo chmod 600 /etc/wireguard/client.key sudo chmod 600 /etc/wireguard/client.pub |
設定ファイル wg0.confの設定
wireguardの設定ファイルは /etc/wireguard/wg0.conf に設定します。今回の構成では下記ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[Interface] # サーバー用の秘密鍵を設定 PrivateKey = wAk85jWULZCP5TJuP+Eeku1Zam4aecq5eMpwk5FoCk8= # VPN インターフェースに割り当てる IP アドレス Address = 172.16.0.1 # サーバーでリスンする UDP ポート ListenPort = 51820 # WireGuard 起動後/終了後に任意のコマンドを実行可能 # wg0 <-> ens160 への nat を設定 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE [Peer] # クライアント用公開鍵を設定 PublicKey = ZgkQRfVdFNM3pLaY6g3CK1hZiVr6JMS0mKXXrv3uiCQ= # クライアント VPN インターフェイスに割り当てるIPアドレス AllowedIPs = 172.16.0.20 |
- [Interface] 自身インターフェイスの設定項目を記述
- [Peer] 接続先の設定項目を記述
- ListenPort 自身ののVPNを受け付けるUDPのポート番号を記載します。(今回は51820)
- PostUp/PostDown wireguardの起動および停止するときに実行するコマンドを記述します。(今回は vpnインターフェイス wg0 と lanインターフェイスとの nat 設定を実行します)
- AllowedIPs 接続先のアドレスを記述します。(ネットワークアドレスを記述すれば設定した経路がvpn側に設定されます)
サーバーのフォワーディング設定
Ubunuサーバーのデフォルト設定ではパケットのフォワーディングが無効となっています。
※サーバー、クライント間の通信だけではフォワーディング設定は不要です。だクライント側からLANに通信(フォワーディング)する際には設定が必要になります。
sudo vi /etc/sysctl.conf にて設定ファイルを編集します。
1 |
net.ipv4.ip_forward=1 |
28行目のコメントアウトします
sysctl -p を実行して設定を反映させます。
1 2 3 |
test@ubuntu-wireguard-server:~$ sudo sysctl -p net.ipv4.ip_forward = 1 test@ubuntu-wireguard-server:~$ |
WireGuard の起動および自動起動設定
WireGuardの起動および自動起動設定
1 |
sudo systemctl enable --now wg-quick@wg0 |
WireGuard 起動および停止
WireGuardの起動
WireGuardのインターフェイスを起動させるには wg-quick up インターフェイス名で起動します。
1 2 3 4 5 6 7 8 |
test@ubuntu-wireguard-server:~$ sudo wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 172.16.0.1 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] ip -4 route add 172.16.0.20/32 dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE test@ubuntu-wireguard-server:~$ |
WireGuardの停止
1 2 3 4 |
test@ubuntu-wireguard-server:~$ sudo wg-quick down wg0 [#] ip link delete dev wg0 [#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE test@ubuntu-wireguard-server:~$ |
WireGuard 状況確認コマンド
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu-wireguard-server:/etc$ sudo wg show interface: wg0 public key: 4LlvdanqC1qgy5/QCNAAl0aQKRU06KiIjdHggQaq9AQ= private key: (hidden) listening port: 51820 peer: ZgkQRfVdFNM3pLaY6g3CK1hZiVr6JMS0mKXXrv3uiCQ= endpoint: XXX.XXXX.XXX.XXX:30214 allowed ips: 172.16.0.20/32 latest handshake: 2 minutes, 18 seconds ago transfer: 956 B received, 532 B sent test@ubuntu-wireguard-server:/etc$ |
参考サイト
WireGuard 記事一覧
Ubuntu 20.04 LTS Server
- WireGuard サーバー Ubuntu Server 20.04 LTS へのインストールおよび設定方法
- WireGuard クライアント Ubuntu Server 20.04 LTS へのインストールおよび設定方法
VyOS 1.3
スポンサーリンク
Ubuntu 20.04 LTS Server 記事一覧
Ubuntu 20.04 LTS Server インストール
Ubuntu 20.04 LTS Server 設定記事一覧
- タイムゾーンを日本時間(JST)に変更
- ネットワークの設定 ( IPv4アドレス、DNS(resolve) 、デフォルトゲートウェイ、static route )
- シリアルからコンソールに接続する設定
- ファイアウォール ufw の設定方法