ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

01_linux:10_network:06_wireguard

06 WireGuard

環境

Ubuntu 22.04

1.インストール

# apt install wireguard

2.鍵作成

サーバ用

秘密鍵:privkey 公開鍵:pubkey

# mkdir -p ~/server && cd ~/server
# wg genkey > privkey
# cat private
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSUQ=

# cat privkey | wg pubkey > pubkey
# cat pubkey
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYSUQ=

クライアント用

秘密鍵:privkey 公開鍵:pubkey 事前共有キー:preshared

# mkdir -p ~/client01 && cd ~/client01
# wg genkey > privkey
# cat privkey | wg pubkey > pubkey
# wg genpsk > preshared
# cat preshared
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk=
# cat privkey
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
# cat pubkey
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBQ=

client02以降もあるなら、その分作成

# mkdir -p ~/client02 && cd ~/client02
# wg genkey > privkey
# cat privkey | wg pubkey > pubkey
# wg genpsk > preshared

3.設定ファイル作成

※このPeerで指定するAllowedIPs は、32bitで記述

# cat << __EOM__ > /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.1.1/24  #wg0に付けるIP
ListenPort = 51820
PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSUQ=   #~/server/privkey の値

[Peer]
# client01
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBQ=   #~/client01/pubkey の値
PresharedKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk=   #~/client01/preshared の値
AllowedIPs = 10.0.1.2/32   #client01に割り当てるIP

[Peer]
# client02
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBQ=   #~/client02/pubkey の値
PresharedKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk=   #~/client02/preshared の値
AllowedIPs = 10.0.1.3/32   #client02に割り当てるIP
__EOM__

4.起動

これでwg0が作成されます。

# wg-quick up /etc/wireguard/wg0.conf

# ip -4 a
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

停止の場合

# wg-quick down /etc/wireguard/wg0.conf

5.自動起動の設定

サーバ再起動しても起動するよう自動起動設定を入れておく

# systemctl enable wg-quick@wg0

6.クライアント設定ファイル作成

# cd ~/client01
# cat client01.conf 
[Interface]
# client01
PrivateKey = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=   #~/client01/privkey の値
Address = 10.0.1.2/24   #client01のIP
DNS = 8.8.8.8, 8.8.4.4   #参照させたいDNS

[Peer]
# server
PublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYSUQ=   #~/server/pubkey の値
PresharedKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk=   #~/client01/preshared の値
AllowedIPs = 222.222.0.0/24, 10.0.1.0/24, 10.0.0.0/24   #WireGuard経由で接続したいIPアドレスを指定
Endpoint = XXX.XXX.XXX.XXX:51820   #WireGuardサーバーのグローバルIPアドレス:ポート番号を指定
PersistentKeepAlive = 30

※PersistentKeepAlive NAT を保持するための KeepAlive 送信間隔 [秒]

7.Windowsクライアントからの接続

Windowsからは、6.クライアント設定ファイル作成 をファイルに書いて、WireGuardから読み込むだけです。

8.Linuxクライアントからの接続

クライアント設定ファイルを/etc/wireguard/wg0.confに記述して、起動でOK

atp install wireguard resolvconf
cat /etc/wireguard/wg0.conf
wg-quick up /etc/wireguard/wg0.conf

9.QRコード作成

iPhoneでは、wireguardのアプリからQRを読み込む

# apt install qrencode
# qrencode -o client01.png -d 350 -r ~/client01/client01.conf
# ll client01.png 
-rw-r--r-- 1 root root 1255 Feb 15 13:59 client01.png

10.状態確認

wireguardの接続状態を確認

# wg show
interface: wg0
  public key: cKhUToZ/a6duLNRkzKHyFgxAX0AkvNb5uIjxQezYK0A=
  private key: (hidden)
  listening port: 51820

peer: s1Xy37yPcQPYivn6DSBFTipRESMETHqcZsh4rGm2mno=
  preshared key: (hidden)
  endpoint: XXX.XXX.XXX.XXX:42173
  allowed ips: 10.0.1.4/32
  latest handshake: 20 seconds ago
  transfer: 8.00 KiB received, 1.80 KiB sent

peer: tv8jcswkM4Ku1urcmKqaeBG09TvMB1HhUEWrKzqhogI=
  preshared key: (hidden)
  endpoint: XXX.XXX.XXX.XXX:50493
  allowed ips: 10.0.1.3/32
  latest handshake: 3 minutes, 23 seconds ago
  transfer: 31.21 KiB received, 16.46 KiB sent

peer: kyxjavtAIH81YHs327/OJ9BYkryB6egGT3RIaWMorFc=
  preshared key: (hidden)
  allowed ips: 10.0.1.2/32
01_linux/10_network/06_wireguard.txt · 最終更新: 2024/02/21 20:27 by matsui