====== 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}}