WireGuardクライントをUbuntu Server 20.04 へインストール方法の紹介。
サーバー側の設定手順は
-
WireGuard サーバー Ubuntu Server 20.04 LTS へのインストールおよび設定方法
インストール環境
- Ubuntu Server 20.04.2 LTS 最小構成インスト-ル状態
インストール構成
WireGuardはUDPを利用します。ポート番号は今回 51820を利用します。今回インストールした環境は直接インターネットに接続されている構成のため設定不要ですが、FWなどが設置されている環境にserverを設置する際はサーバーへ51820/UDPがポートフォワーディングする設定が必要になります。
今回は上記構成を作成する。client側wg0のアドレスをserver側でNAT(192.168.0.0/24)することでLAN接続する。LAN側でstatic route(172.16.0.0/24 gw 192.168.11.6)を設定すればNATは不要
WireGuardのインストール
1 |
sudo apt install wireguard-tools |
WireGuardの設定
秘密鍵、公開鍵の作成
秘密鍵、公開鍵の作成はサーバー側、クライアント側(WireGuardにはサーバーやクライアントの概念はなくどちらも同列の扱い)どちらで作成しても問題ないです。今回はサーバー側の手順で作成したクライアントの秘密鍵を持ってきて設定を実施します。
設定ファイル wg0.confの設定
wireguardの設定ファイルは /etc/wireguard/wg0.conf に設定します。今回の構成では下記ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Interface] # クライアント用の秘密鍵を設定 PrivateKey = EGlKwcEygoKCJLwK6i+Npz/q7VPCzYZ3r1WWubOLf2M= # VPN インターフェースに割り当てる IP アドレス Address = 172.16.0.20 # MTU MTU = 1374 [Peer] # サーバー用公開鍵を設定 PublicKey = 4LlvdanqC1qgy5/QCNAAl0aQKRU06KiIjdHggQaq9AQ= # クライアント VPN インターフェイスに割り当てるIPアドレス AllowedIPs = 172.16.0.1,192.168.11.0/24 # サーバーのグローバルIP EndPoint = 211.XX.YY.206:51820 # KeepAlive ( sec ) PersistentKeepalive = 30 |
- [Interface] 自身のインターフェイスの設定項目を記述
- MTU デフォルトではEthernet 1500 byteを元に計算さ1420byteとなります。環境によってはPPPoEを利用したインターネットなどはMTUが小さくなます。MTUが1500より小さい環境にかからず、そのままUDPパケットを送信すると、ルータでフラグメンテーションが発生してスループットが低下します。MTUを手動で設定することができます。
- [Peer] 接続先の設定項目を記述
- AllowedIPs 接続先のアドレスを記述します。ネットワークアドレスを記述すれば設定した経路がvpn側に設定されます。今回はServer側のLAN(192.168.11.0/24)
- EndPoint サーバーのグローバルIP
- PersistentKeepalive 設定した時間(sec) KeepAlive を送信してセッションを維持させます
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-client:/etc$ sudo wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 172.16.0.20 dev wg0 [#] ip link set mtu 1374 up dev wg0 [#] ip -4 route add 172.16.0.1/32 dev wg0 [#] ip -4 route add 192.168.11.0/24 dev wg0 test@ubuntu-wireguard-client:/etc$ |
WireGuardの停止
1 2 3 |
test@ubuntu-wireguard-client:/etc$ sudo wg-quick down wg0 [#] ip link delete dev wg0 test@ubuntu-wireguard-client:/etc$ |
WireGuard 状況確認コマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 |
test@ubuntu-wireguard-client:/etc$ sudo wg show interface: wg0 public key: ZgkQRfVdFNM3pLaY6g3CK1hZiVr6JMS0mKXXrv3uiCQ= private key: (hidden) listening port: 35135 peer: 4LlvdanqC1qgy5/QCNAAl0aQKRU06KiIjdHggQaq9AQ= endpoint: 211.XX.YY.206:51820 allowed ips: 172.16.0.1/32, 192.168.11.0/24 latest handshake: 5 seconds ago transfer: 92 B received, 180 B sent persistent keepalive: every 30 seconds test@ubuntu-wireguard-client:/etc$ |
(参考)構成された環境でのping結果
検証した環境でのping 結果です。正常にpingが通っています。
ちなみにLAN機器からクライアントから送信されたパケットはNATされるためアドレスは192.168.11.6となり、LAN機器に送信されます。(サーバ側でも記載しましたが、LAN側の機器にstatic route 172.16.0.0/24 gw 192.168.11.6 を設定すればNATなしで通ります。設定がなければクライントからパケットは到達しますが帰り172.16.0.20 の経路がないため疎通できません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# サーバー側 wg0 172.16.0.1 test@ubuntu-wireguard-client:~$ ping 172.16.0.1 PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data. 64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=10.3 ms 64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=10.6 ms 64 bytes from 172.16.0.1: icmp_seq=3 ttl=64 time=10.5 ms ^C --- 172.16.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 10.279/10.449/10.583/0.126 ms # サーバー側(LAN) ens192 192.168.116 test@ubuntu-wireguard-client:~$ ping 192.168.11.6 PING 192.168.11.6 (192.168.11.6) 56(84) bytes of data. 64 bytes from 192.168.11.6: icmp_seq=1 ttl=64 time=12.7 ms 64 bytes from 192.168.11.6: icmp_seq=2 ttl=64 time=22.3 ms 64 bytes from 192.168.11.6: icmp_seq=3 ttl=64 time=10.3 ms ^C --- 192.168.11.6 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 10.309/15.115/22.299/5.175 ms # サーバー側LAN 機器(192.168.11.1) test@ubuntu-wireguard-client:~$ ping 192.168.11.1 PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data. 64 bytes from 192.168.11.1: icmp_seq=1 ttl=63 time=11.5 ms 64 bytes from 192.168.11.1: icmp_seq=2 ttl=63 time=12.6 ms 64 bytes from 192.168.11.1: icmp_seq=3 ttl=63 time=11.7 ms ^C --- 192.168.11.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 11.489/11.921/12.612/0.493 ms test@ubuntu-wireguard-client:~$ |
参考サイト
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 の設定方法