WireGuard VPN構成
1. WireGuardインターフェース一覧
IF用途アドレスポート状態自動起動
wg0顧客・管理用(本番)10.200.0.1/1654024/UDP稼働中enabled
wg1旧管理用(廃止済み)10.251.0.1/2461001/UDP廃止disabled
wg2VPS↔R640バックホール10.250.0.2/3260050/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)。