ソフトウェア/WireGuard の履歴(No.1)
更新- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ソフトウェア/WireGuard へ行く。
- 1
WireGuard で VPN 接続を行う†
WireGuard について調べよう。
https://deep.tacoskingdom.com/blog/142 ここで紹介されていた通りに作業する
WireGuard のインストール†
LANG: console $ lsb_release -a # 基本OS情報 No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm $ cat /etc/debian_version # Debianのマイナーバージョン 12.11 $ uname -srv # Linuxカーネルの情報 Linux 5.10.0-28-amd64 #1 SMP Debian 5.10.209-2 (2024-01-31) $ sudo apt install wireguard # インストール 以下の追加パッケージがインストールされます: wireguard-tools 提案パッケージ: openresolv | resolvconf 以下のパッケージが新たにインストールされます: wireguard wireguard-tools アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 95.8 kB のアーカイブを取得する必要があります。 この操作後に追加で 346 kB のディスク容量が消費されます。 $ wg --version wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
鍵の生成†
LANG: console $ sudo su # スーパーユーザーに切り替え # cd /etc/wireguard # ls -la # 設定が空なことと一般ユーザーが読めないことを確認 合計 28 drwx------ 2 root root 4096 6月 6 13:14 . drwxr-xr-x 121 root root 12288 6月 6 13:10 .. # wg genkey > wgserver.key # サーバー用秘密鍵 # wg pubkey < wgserver.key > wgserver.pub # サーバー用公開鍵 # wg genkey > wgclient.key # クライアント用秘密鍵 # wg pubkey < wgclient.key > wgclient.pub # クライアント用公開鍵 # chmod 600 *.key # ls -la 合計 32 drwx------ 2 root root 4096 6月 6 13:15 . drwxr-xr-x 121 root root 12288 6月 6 13:10 .. --w------- 1 root root 45 6月 6 13:14 wgclient.key -rw-r--r-- 1 root root 45 6月 6 13:15 wgclient.pub --w------- 1 root root 45 6月 6 13:13 wgserver.key -rw-r--r-- 1 root root 45 6月 6 13:14 wgserver.pub # exit $
サーバーの設定&起動テスト†
LANG:console $ sudo jed /etc/wireguard/wg0.conf [Interface] Address = 10.0.17.1/32 PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(※wgserver.keyの中身) MTU = 1420 ListenPort = 51820 [Peer] PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy(※wgclient.pubの中身) AllowedIPs = 10.0.17.2/32 $ sudo wg-quick up wg0 [#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.17.1/32 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] ip -4 route add 10.0.17.2/32 dev wg0 $ ip address ... 76311: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.17.1/32 scope global wg0 valid_lft forever preferred_lft forever ...
これで起動した。
以上はあくまでテストなので、一旦WireGuardサーバー落とす。
LANG:console $ sudo wg-quick down wg0 [#] ip link delete dev wg0
サービスとして常駐化させる†
LANG:console $ sudo systemctl enable wg-quick@wg0 Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick@.service. $ sudo systemctl start wg-quick@wg0 $ systemctl status wg-quick@wg0 ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; preset: enabled) Active: active (exited) since Fri 2025-06-06 13:28:44 JST; 47s ago Docs: man:wg-quick(8) man:wg(8) https://www.wireguard.com/ https://www.wireguard.com/quickstart/ https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8 https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8 Process: 1874337 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 1874337 (code=exited, status=0/SUCCESS) CPU: 26ms 6月 06 13:28:44 xxxxx systemd[1]: Starting wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0... 6月 06 13:28:44 xxxxx wg-quick[1874337]: [#] ip link add wg0 type wireguard 6月 06 13:28:44 xxxxx wg-quick[1874337]: [#] wg setconf wg0 /dev/fd/63 6月 06 13:28:44 xxxxx wg-quick[1874337]: [#] ip -4 address add 10.0.17.1/32 dev wg0 6月 06 13:28:44 xxxxx wg-quick[1874337]: [#] ip link set mtu 1420 up dev wg0 6月 06 13:28:44 xxxxx wg-quick[1874337]: [#] ip -4 route add 10.0.17.2/32 dev wg0 6月 06 13:28:44 xxxxx systemd[1]: Finished wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0. $ ip address ... 76312: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 10.0.17.1/32 scope global wg0 valid_lft forever preferred_lft forever ...
ポートフォワード(IPv4)を許可†
LANG: console $ grep ip_forward /etc/sysctl.conf # はじめ無効になっていた #net.ipv4.ip_forward=1 $ sudo jed /etc/sysctl.conf # 有効化する - #net.ipv4.ip_forward=1 + net.ipv4.ip_forward=1 $ sudo sysctl -p # 変更を反映 net.ipv4.ip_forward = 1 net.ipv4.tcp_keepalive_time = 300
IPマスカレードの設定 (wg0.conf)†
起動時と終了時に IP マスカレードについて iptables を書き換えるよう設定する。
LANG:console $ ip addr # インターフェース名を確認 ... 2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 6c:4b:90:f5:6e:dc brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 brd 192.168.0.255 scope global enp3s0f0 valid_lft forever preferred_lft forever ... $ sudo jed /etc/wireguard/wg0.conf [Interface] ... + PostUp = iptables -A FORWARD -i wg0 -j ACCEPT + PostUp = iptables -t nat -A POSTROUTING -o enp3s0f0 -j MASQUERADE + PostDown = iptables -D FORWARD -i wg0 -j ACCEPT + PostDown = iptables -t nat -D POSTROUTING -o enp3s0f0 -j MASQUERADE $ sudo systemctl restart wg-quick@wg0 # 設定を反映 $ sudo iptables -L -n -t nat ... Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE 0 -- 0.0.0.0/0 0.0.0.0/0 ...
ファイアウォールの設定†
ufw を使っているので、
$ ufw allow proto udp to 0.0.0.0/0 port 51820
ルータのポートマッピング†
ポートマッピングを設定して、外からの 58120 へのアクセスを WireGuard サーバーへ転送するようにしました。
- WAN 側ポート: 58120
- LAN 側ホスト: 192.168.0.5
- プロトコル: UDP
- ポート: 58120
クライアント†
[Interface] PrivateKey = (wgclient.key の内容) Address = 10.0.17.2/32 [Peer] PublicKey = (wgserver.pub の内容) AllowedIPs = 10.0.17.1/32,192.168.0.0/24 (通信したい宛先) Endpoint = (ルーターの外向きアドレス):51820 PersistentKeepalive = 25
クライアント側の WireShark のログで
Sending handshake initiation to peer 1 (xxx.xxx.xxx.xxx:51820) Receiving handshake response from peer 1 (xxx.xxx.xxx.xxx:51820) Keypair 1 created fo peer 1
と出れば接続はうまく行っている。
これが、
Handshake for peer 1 (xxx.xxx.xxx.xxx:51820) did not complete after 5 seconds, retrying (try ?)
などとなっているのはそもそもサーバーへの通信がうまく行っていないので、
- ルーターのポートマッピング設定
- ファイアウォール設定
- サーバーの起動状態
のチェックが必要。
VPN サーバーに接続できているのにその先に接続できない場合には、
- クライアント側の AllowedIPs の設定
- クライアントマシンのローカル IP アドレス範囲と VPN で繋いだ先の LAN のローカル IP アドレス範囲がかぶっていないことを確認する
- かぶっていた場合にはどちらかを変えないとダメな気がする?
- どうにかすれば変換が可能?
コメント&質問†
Counter: 142 (from 2010/06/03),
today: 2,
yesterday: 2