WireGuard VPN構成
1. WireGuardインターフェース一覧
| IF | 用途 | アドレス | ポート | 状態 | 自動起動 |
|---|---|---|---|---|---|
| wg0 | 顧客・管理用(本番) | 10.200.0.1/16 | 54024/UDP | 稼働中 | enabled |
| wg1 | 旧管理用(廃止済み) | 10.251.0.1/24 | 61001/UDP | 廃止 | disabled |
| wg2 | VPS↔R640バックホール | 10.250.0.2/32 | 60050/UDP | 稼働中 | enabled |
2. wg0設定(R640側・本番環境)
wg0 公開鍵(R640側): xiFFB/KANQY81ihp4/gnOj0IEBe5JTDoWdlKWsccrHc=
設定ファイル: /etc/wireguard/wg0.conf
[Interface] Address = 10.200.0.1/16 ListenPort = 54024 PrivateKey = (秘密鍵) PostUp = iptables -t nat -A POSTROUTING -s 10.200.0.0/16 -o bond0 -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -s 10.200.0.0/16 -o bond0 -j MASQUERADE [Peer] # iPhone / みーきゅん PublicKey = 5PkDz5OQZz3hzN7Etf1epA/VQ7NRuFjFasfqHLfVJFE= AllowedIPs = 10.200.0.2/32
3. クライアント(iPhone)WireGuardプロファイル
[Interface] PrivateKey = (クライアント秘密鍵) Address = 10.200.0.2/32 DNS = 10.200.0.1 [Peer] PublicKey = xiFFB/KANQY81ihp4/gnOj0IEBe5JTDoWdlKWsccrHc= Endpoint = vpn.k2-o.net:54024 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
設計ポイント:
AllowedIPs = 0.0.0.0/0 により全トラフィックがVPN経由となる。DNS設定(10.200.0.1)により内部DNSが使用され、cloud.k2-o.net が正しく解決される。4. 新規クライアント追加手順
# 1. 鍵ペア生成 wg genkey | tee /tmp/client.key | wg pubkey > /tmp/client.pub cat /tmp/client.key # PrivateKey(クライアント用) cat /tmp/client.pub # PublicKey(R640に登録) # 2. wg0に追加(次のIPを割り当て: 10.200.0.x/32) sudo wg set wg0 peer <PublicKey> allowed-ips 10.200.0.x/32 # 3. wg0.confにも追記 sudo tee -a /etc/wireguard/wg0.conf << EOF [Peer] # 端末名 PublicKey = <PublicKey> AllowedIPs = 10.200.0.x/32 EOF # 4. QRコード生成 qrencode -t ansiutf8 << EOF [Interface] PrivateKey = <PrivateKey> Address = 10.200.0.x/32 DNS = 10.200.0.1 [Peer] PublicKey = xiFFB/KANQY81ihp4/gnOj0IEBe5JTDoWdlKWsccrHc= Endpoint = vpn.k2-o.net:54024 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25 EOF
5. IP採番ルール(変更後・2026-03-22)
| 項目 | 内容 |
|---|---|
| 使用セグメント | 10.251.0.0/24(全契約共有)※旧wg1用 |
| 本番セグメント | 10.200.0.0/16(wg0・現在運用中) |
| 予約IP(wg0) | 10.200.0.1(R640/GW) |
| 割当範囲(wg0) | 10.200.0.2 〜 65534(最大65533台) |
| 採番方式 | customer_devices の使用中IPを全件取得し、空き最小番号を割り当て |
| 重複防止 | 空きスキャン+DBのwg_ip UNIQUE制約で二重防御 |
注意: 旧契約(A001・A002・M010)は旧セグメント(10.200.x.x)のまま残存。新規契約から10.251.0.xまたは10.200.0.xが割り当てられる。現在の本番環境はwg0(10.200.0.0/16)。
