====== 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: 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から読み込むだけです。
{{:01_linux:10_network:pasted:20240215-032251.png}}
{{:01_linux:10_network:pasted:20240215-032627.png}}
===== 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
{{tag>日記 network vpn Wireguard}}