====== 06 WireGuard ======
=== 環境 ===
Ubuntu 22.04
===== 1.インストール =====
# apt install wireguard
===== 2.鍵作成 =====
==== サーバ用 ====
秘密鍵:privkey 公開鍵:pubkey
mkdir -p ~/WireGuard/server && cd ~/WireGuard/server
wg genkey > privkey
cat privkey | wg pubkey > pubkey
cat privkey
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSUQ=
cat pubkey
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYSUQ=
==== クライアント用 ====
秘密鍵:privkey 公開鍵:pubkey 事前共有キー:preshared
CL=client01
mkdir -p ~/WireGuard/${CL} && cd ~/WireGuard/${CL}
wg genkey > privkey
cat privkey | wg pubkey > pubkey
wg genpsk > preshared
cat preshared
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk=
cat privkey
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
cat pubkey
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBQ=
client02以降もあるなら、その分作成
CL=client02
mkdir -p ~/WireGuard/${CL} && cd ~/WireGuard/${CL}
wg genkey > privkey
cat privkey | wg pubkey > pubkey
wg genpsk > preshared
===== 3.設定ファイル作成 =====
※このPeerで指定するAllowedIPs は、32bitで記述
SERVER_privkey=`cat ~/WireGuard/server/privkey`
CLIENT01_pubkey=`cat ~/WireGuard/client01/pubkey`
CLIENT01_preshared=`cat ~/WireGuard/client01/preshared`
cat << __EOM__ > /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.1.1/24 #wg0に付けるIP
ListenPort = 51820
PrivateKey = ${SERVER_privkey} #~/WireGuard/server/privkey の値
[Peer]
# client01
PublicKey = ${CLIENT01_pubkey} #~/WireGuard/client01/pubkey の値
PresharedKey = ${CLIENT01_preshared} #~/WireGuard/client01/preshared の値
AllowedIPs = 10.0.1.2/32 #client01に割り当てるIP
[Peer]
# client02
PublicKey = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBQ= #~/WireGuard/client02/pubkey の値
PresharedKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZk= #~/WireGuard/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.クライアント設定ファイル作成 =====
CL=client01
cd ~/WireGuard/${CL}
SERVER_pubkey=`cat ~/WireGuard/server/pubkey`
CLIENT_privkey=`cat ~/WireGuard/${CL}/privkey`
CLIENT_preshared=`cat ~/WireGuard/${CL}/preshared`
cat << __EOM__ > ${CL}.conf
[Interface]
# ${CL}
PrivateKey = ${CLIENT_privkey} #~/WireGuard/${CL}/privkey の値
Address = 10.0.1.2/32 #${CL}のIP
DNS = 8.8.8.8, 8.8.4.4 #参照させたいDNS
[Peer]
# server
PublicKey = ${SERVER_pubkey} #~/WireGuard/server/pubkey の値
PresharedKey = ${CLIENT_preshared} #~/WireGuard/${CL}/preshared の値
AllowedIPs = 10.0.1.0/24, 10.0.0.0/24 #WireGuard経由で接続したいIPアドレスを指定
Endpoint = XXX.XXX.XXX.XXX:51820 #WireGuardサーバーのグローバルIPアドレス:ポート番号を指定
PersistentKeepAlive = 30
__EOM__
==== サーバ側wg0.confに追加する設定を表示 ====
CL=client02
CLIENT_pubkey=`cat ~/WireGuard/${CL}/pubkey`
CLIENT_preshared=`cat ~/WireGuard/${CL}/preshared`
IP=`cat ~/WireGuard/${CL}/${CL}.conf | awk '/Address/ {print $3}'`
cat << __EOM__
[Peer]
# ${CL}
PublicKey = ${CLIENT_pubkey} #~/WireGuard/${CL}/pubkey の値
PresharedKey = ${CLIENT_preshared} #~/WireGuard/${CL}/preshared の値
AllowedIPs = ${IP} #${CL}に割り当てるIP
__EOM__
※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 ~/WireGuard/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: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=
private key: (hidden)
listening port: 51820
peer: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb=
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: cccccccccccccccccccccccccccccccccccccccc=
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: ddddddddddddddddddddddddddddddddddddddddd=
preshared key: (hidden)
allowed ips: 10.0.1.2/32
{{tag>network vpn Wireguard}}