かつお Back Up Guard (わんわんバックアップ) — 試験運用記録

// WANWAN BACKUP / 試験 2026-04-29〜30 / 最終更新: 2026-05-14 (インフラ反映)

実証済 商用化準備 遠隔地の Windows PC を暗号化トンネル経由で自社ストレージにバックアップする商用サービス。 katuocloud 既存インフラに相乗りする形で実証試験完了。 商業展開準備中。

概要

katuocloud 既存インフラに相乗りする形で、 遠隔地の Windows PC を暗号化トンネル経由で自社ストレージにバックアップするサービスの実証試験を実施。 マンション共有 Wi-Fi / iPhone テザリング環境下で、 SSH 接続およびファイル取得まで通しで成功。 事業のコア機能の動作証明を完了。

試験結果サマリー (2026-04-29〜30 Day1+Day2):
  • ✓ wg-backup インターフェース構築完了 (現在は maguro 上に集約予定)
  • ✓ RTX1300 NAT/フィルタ設定永続化
  • ✓ Cloudflare DNS (backup.k2-o.net) 稼働
  • ✓ WireGuard ハンドシェイク成功 (マンション Wi-Fi / iPhone テザリング両対応)
  • ✓ ICMP / TCP 双方向疎通
  • ✓ SSH 鍵認証ログイン成功 (ed25519)
  • ✓ scp によるディレクトリ全体取得 1.2秒
  • ✓ バックアップスクリプト (backup-client.sh) 動作確認 / 7世代管理
  • ✓ Veeam Agent for Windows Free 月次フルイメージ取得 (20GB)
  • ✓ rsync Pull 型日次差分 (39GB / 213,848ファイル / 41分)
  • ✓ DarkHero⇔maguro 10GbE 直結 (173.0.0.16/30) で業者作業 450 MB/s
最終アーキテクチャ (2026-05-14 想定移植後)
[ クライアントPC: Win10/11 ] ├ user: wan6 (administrators) ├ Wi-Fi接続: マンションWi-Fi / iPhoneテザリング ├ WGトンネル: 10.220.0.x/32 │ ├ Endpoint: backup.k2-o.net:62001 │ ├ AllowedIPs: 10.220.0.0/24 │ └ MTU: 1100 (CGNAT対応) └ OpenSSH Server: 0.0.0.0:22 LISTEN ↑↓ WG暗号化トンネル ↑↓ MAP-E / IPoE 経由 [ RTX1300 (YAMAHA WANルーター) ] ├ tunnel select 1 配下フィルタに 400063 追加 ├ NAT: udp 62001 → 192.168.70.30 (maguro) └ tunnel フィルタ: pass udp 62001 ↓ [ maguro (Supermicro) — WG終端 (※WG剥がしで R640 → maguro 移植) ] ├ wg-backup (10.220.0.1/24) │ ├ ListenPort: 62001 │ ├ MTU: 1100 │ └ peers: 顧客PC を登録 ├ iptables (INPUT 1: ESTABLISHED,RELATED → ICMP → TCP/22 → DROP) ├ FORWARD: 本番セグメント (10.200/16, 192.168.20/24等) DROP ├ rp_filter: wg-backup=0, all=0 ├ SSH鍵: /root/.ssh/backup-keys/wanwan-backup └ 受信先: /srv/storage/nextcloud/backup/wanwan-veeam/{client}/ [ DarkHero (Win11 業者作業端末) ] └ 10GbE 直結 (173.0.0.17/30 maguro ↔ 173.0.0.18/30 DarkHero) └ SMB 経由 450 MB/s で業者作業
2026-05-14 インフラ反映: 試験時は R640 上に wg-backup を構築したが、 2026-05-14 の WG剥がしで R640 から WG はすべて退避済 (/etc/wireguard-r640-snapshot/)。 商用展開時は maguro 上に wg-backup を新規構築する設計とする。 wg-clients/customers/storage と同じく VLAN70 (192.168.70.30) で終端。
2026-05-14 時点 RTX1300 NAT (現役)
IDプロトコル/ポート宛先用途
20000/10UDP 54024192.168.70.30 (maguro)wg-clients (顧客VPN)
20000/11TCP 443192.168.20.21 (R640)nginx SNI router
20000/12TCP 80192.168.20.21 (R640)nginx (ACME challenge)
20000/13UDP 61001192.168.70.30 (maguro)wg-customers (業務)
20000/14UDP 62001192.168.30.30 (maguro storage)wg-storage (現状)
※wanwan-backup 商用化時はこの 62001 を専用に再割当検討
ホスト一覧と認証情報 (Day2 試験時 / 2026-05-14反映)
ホストIP (現状)用途
R640 (katuo)192.168.20.21 / 173.0.0.2 / 173.0.0.9DMZ — nginx SNI + katuocloud.com WP のみ
maguro (Supermicro)192.168.10.31 / 192.168.20.20 / 192.168.30.30 / 192.168.50.30 / 192.168.70.30 / 173.0.0.1 / 173.0.0.5 / 173.0.0.17WG終端 (wg-clients/customers/storage) / NFS / Samba (業者向け) / 64TB ストレージ
hirame192.168.10.40 / 192.168.20.40 / 173.0.0.6 / 173.0.0.10Collabora Online (fabric直結 173.0.0.6)
DarkHero192.168.10.10 / 173.0.0.18業者作業端末 (Win11)
試験PC (DESKTOP-3SL4PU6)10.220.0.2 (WG経由)顧客PC試験機 (Win10 Pro)
構築コマンド (R640 → maguro 移植時に再利用)
// 1. maguro wg-backup インターフェース作成
cd /etc/wireguard
umask 077

# 鍵生成
wg genkey | tee wg-backup_private.key | wg pubkey > wg-backup_public.key
wg genkey | tee testpc_private.key | wg pubkey > testpc_public.key
wg genpsk > testpc_psk.key

# 設定ファイル作成
cat > /etc/wireguard/wg-backup.conf << 'EOF'
[Interface]
Address = 10.220.0.1/24
ListenPort = 62001
MTU = 1100
PrivateKey = (server private key)
SaveConfig = false

[Peer]
# wanwan-test-001
PublicKey = (testpc public key)
PresharedKey = (testpc psk)
AllowedIPs = 10.220.0.2/32
EOF

chmod 600 /etc/wireguard/wg-backup.conf
chmod 600 /etc/wireguard/*.key
systemctl enable --now wg-quick@wg-backup
// 2. RTX1300 設定 (重要: tunnel select 必須)
# NAT追加 (62001 → 192.168.70.30 maguro)
nat descriptor masquerade static 20000 14 192.168.70.30 udp 62001

# フィルタ定義
ip filter 400063 pass * 192.168.70.30 udp * 62001

# tunnel インターフェースに適用 (← これが必要)
tunnel select 1
ip tunnel secure filter in 400060 400061 400062 400063 ...
tunnel select none
save
// 3. iptables 設計 (戻りパケット許可が肝)
# wg-backup INPUT (順序重要)
iptables -I INPUT 1 -i wg-backup -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT 2 -i wg-backup -p icmp -j ACCEPT
iptables -I INPUT 3 -i wg-backup -p tcp --dport 22 -j ACCEPT
iptables -I INPUT 4 -i wg-backup -j DROP

# wg-backup FORWARD (本番セグメント侵入防止)
iptables -I FORWARD 1 -i wg-backup -d 10.200.0.0/16 -j DROP
iptables -I FORWARD 2 -i wg-backup -d 192.168.20.0/24 -j DROP
iptables -I FORWARD 3 -i wg-backup -d 192.168.30.0/24 -j DROP
iptables -I FORWARD 4 -i wg-backup -d 192.168.70.0/24 -j DROP

# TCPMSS clamp (MTU調整、 TCPセッション破損防止)
iptables -I FORWARD -i wg-backup -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -I FORWARD -o wg-backup -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -I OUTPUT  -o wg-backup -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# 永続化
iptables-save > /etc/iptables/rules.v4
// 4. rp_filter 緩和 (戻りパケット検証無効化)
cat > /etc/sysctl.d/99-wg-backup.conf << 'EOF'
net.ipv4.conf.wg-backup.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
EOF
sysctl -p /etc/sysctl.d/99-wg-backup.conf
// 5. クライアント PC 側 (Win10/11) 設定
# OpenSSH Server インストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

# Firewall 22番開放
New-NetFirewallRule -Name "OpenSSH-Server-In-TCP" `
    -DisplayName "OpenSSH Server (sshd)" `
    -Enabled True -Direction Inbound `
    -Protocol TCP -Action Allow `
    -LocalPort 22 -Profile Any

# WGプロファイル Private
Set-NetConnectionProfile -InterfaceAlias "test-laptop-001" -NetworkCategory Private

# 管理者ユーザー用 authorized_keys (administratorsグループの場合の特殊パス)
$adminKeysFile = "C:\ProgramData\ssh\administrators_authorized_keys"
Add-Content -Path $adminKeysFile -Value $pubKey
icacls.exe $adminKeysFile /inheritance:r
icacls.exe $adminKeysFile /grant "Administrators:F"
icacls.exe $adminKeysFile /grant "SYSTEM:F"
Restart-Service sshd
技術的な発見と解決 (試験中の課題)
// 課題1: マンション Wi-Fi 経由で WG ハンドシェイクしない

原因: RTX1300 のフィルタ 400063 を ip filter で定義しただけでは効かず、 tunnel select 1 経由で tunnel インターフェースに適用する必要があった。

解決: tunnel select 1 → ip tunnel secure filter in ... 400063 ... → save で恒久対処完了。

// 課題2: ハンドシェイク成功後も TCP 接続だけタイムアウト

原因: サーバー側 iptables INPUT に -m state --state RELATED,ESTABLISHED -j ACCEPT ルールがなく、 SYN-ACK 応答パケットが INPUT 末尾の DROP に弾かれていた。

解決: ESTABLISHED ルールを INPUT 1 (最優先) に挿入。 これでサーバーから開始した TCP セッションの戻りパケットが正しく許可される。

iptables 設計の鉄則 (今回の試験で再認識): 新規インターフェースの INPUT/FORWARD には、 まず -m state --state RELATED,ESTABLISHED -j ACCEPT を最優先で配置すること。 これがないとサーバー自身がクライアントとして接続を開始した際の戻りパケットが破棄される。 本番 wg-clients/customers/storage にはこのルールが入っているが、 wg-backup 構築時に失念して詰まった。
// 課題3: ICMP は通るが TCP だけ RTT が不安定

原因: WG MTU デフォルト 1420 がモバイル網 CGNAT で断片化を起こす。
解決: MTU = 1100 を両端で設定。 TCPMSS clamp も併用。

// 課題4: SSH config ファイル内 Include 行の位置

原因: OpenSSH は「最初にマッチした Host 定義を採用」する仕様。 Include 行を末尾に置くと既存の Host 定義に上書きされる。
解決: Include 行を config ファイル先頭に挿入。

// 課題5: Windows の管理者ユーザーへの公開鍵登録

原因: Windows OpenSSH Server は administrators グループに属するユーザーの場合、 ~/.ssh/authorized_keys ではなく C:\ProgramData\ssh\administrators_authorized_keys を参照する仕様 (sshd_config の Match Group ブロック)。
解決: 管理者用の専用パスに登録、 icacls で権限を SYSTEM:F + Administrators:F + inheritance:r に設定。

// 課題6 (Day2): Ubuntu Samba 22.04/24.04 の罠
  • smbpasswd/testparm/pdbedit が samba-common-bin から消失 → apt install --reinstall samba samba-common-bin smbclient
  • /usr/share/samba/is-configured 不在で systemd ExecCondition 失敗 → /etc/systemd/system/{smbd,nmbd}.service.d/override.conf で ExecCondition= を空に
  • /run/samba 不在 → /etc/tmpfiles.d/samba.conf を作成
  • interfaces = lo wg-backup が効かず → IP 直書きで解決
動作実績
項目結果備考
WGハンドシェイク成功マンションWi-Fi / iPhone テザリング 両方で確認
ping 10.220.0.1 → 10.220.0.224ms 平均iPhone テザリング経由
ping 1000byte (-s 1000)50ms 平均、 損失0MTU 1100 での大型パケット試験
SSH 鍵認証ログイン成功パスワードレス、 ed25519
scp ディレクトリ取得3ファイル/24K/1.2秒サブフォルダ含む構造保持
backup-client.sh 連続実行7世代管理動作古い世代の自動削除
Veeam 月次フルイメージ20GB / SMB経由91 Mbps (11.4 MB/s) WG越し
rsync 日次差分 (Pull型)39GB / 213,848ファイル / 41分200-400 Mbps (25-50 MB/s)
業者作業 (DarkHero ↔ maguro 10GbE 直結)450 MB/s (3.6 Gbps)167MB ファイルで実測
ストレージ構造 (maguro 上)
/srv/storage/                                    [64TB空き、 LUKS raid1-4 + bcache + XFS]
├── nextcloud-data/                              [Nextcloud本体データ]
└── nextcloud/backup/
    ├── daily/, weekly/, monthly/                [既存システムBK]
    └── wanwan-veeam/                            ★ わんわんバックアップ
        └── <client_id>/
            ├── Wanwan-Backup-<ID>-MonthlyImage/  [Veeam .vbk]
            │   ├── Wanwan-Backup-...vbm
            │   └── Wanwan-Backup-...vbk
            └── daily/                            [rsync 30世代]
                ├── 20260430-110252/c/...        [タイムスタンプ別]
                └── latest -> 20260430-110252    [相対symlink]
アクセス経路と速度実測
アクセス元経路速度実測
顧客PC (Veeam SMB)WG → maguro SMB → ローカル XFS91 Mbps (11.4 MB/s)
サーバー側 (rsync Pull)WG → SSH+rsync → maguro → ローカル XFS200-400 Mbps (25-50 MB/s)
業者 (DarkHero)10GbE 直結 → maguro SMB3.6 Gbps (450 MB/s)
商業展開時に必要な追加実装
// A. クライアント自動起動・休止
  • BIOS の「高速スタートアップ」無効化
  • Windows 電源プラン: スリープ解除タイマー有効、 休止状態を有効化
  • タスクスケジューラ: 毎日 02:00、 「タスクの実行時にスリープを解除する」有効
  • WireGuard を Windows サービスとして起動 (起動時自動接続)
  • 保険タスク: PC 起動から3時間後に shutdown /h
// B. サーバー側 cron 自動実行
  • cron 02:05 で backup-client.sh 実行
  • 顧客リスト管理 (DB or YAML)
  • 顧客ごとに並列実行 / シリアル実行を選択
  • 完了後 ssh shutdown /h で休止状態へ
// C. rsync 化 (差分転送・帯域節約)
  • cwRsync 6.4.7 (Windows用 rsync 3.4.1) を rsync.exe + 必要DLL のみ抽出して配布
  • サーバー → ノートPC へ rsync -av --link-dest=.. で7世代ハードリンク世代管理
  • 初回フル + 以降差分で帯域大幅節約
// D. Telegram 監視通知
  • 既存の maguro Telegram 監視システムに統合 (cert-watch / supermicro-watch と同じ仕組み)
  • 毎日のバックアップ完了/失敗を通知
  • 1週間バックアップ無しの顧客をエスカレーション
// E. 鍵管理の厳格化 (重要)
  • 顧客ごとに別の SSH 鍵ペアを発行 (鍵分離)
  • 鍵の保管場所を専用ディレクトリに集約 + パーミッション 600
  • 定期的な鍵ローテーション運用 (3〜6ヶ月)
  • 鍵ファイルのバックアップ (LUKS 暗号化領域内に保管)
  • maguro OS 自体のセキュリティ更新 / fail2ban / 不正ログイン検知
// F. 顧客対応の柔軟性確保

営業上、 顧客から「Cドライブ全体をバックアップしてほしい」「障害対応で操作してほしい」という要望は当然発生する。 SSH 接続後の操作範囲を技術的に過度に制限すると、 顧客対応の柔軟性が失われる。 サーバー側の鍵管理を厳格化することで、 サーバー側のセキュリティを担保する方針とする。

商業展開ロードマップ
フェーズ内容状態
1. インフラ実証WG / SSH / scp / Veeam / rsync 動作確認完了 (2026-04-29〜30)
2. maguro 上に wg-backup 構築R640 試験版を maguro へ移植 (wg-clients 等と同居)未着手
3. 自動化実装cron / タスクスケジューラ / S4 休止未着手
4. rsync 化差分転送 / 7世代ハードリンク未着手
5. 1週間連続運用試験毎晩2時自動実行 / 障害対応訓練未着手
6. 鍵管理強化顧客別鍵分離 / 専用ディレクトリ未着手
7. HP 制作katuocloud.com サブセクション or 専用LP未着手
8. プロモ動画制作「乗っ取り再現」コンセプト動画未着手
9. 既存 katuocloud 顧客への展開+¥3,000/月オプション未着手
10. 一般販売初期¥35,000 + 月額¥6,000〜未着手
想定価格設計
わんわんバックアップ — 標準プラン
初期費用¥35,000〜¥45,000 (PC 4台分のセットアップ)
月額基本料¥6,000〜¥7,000 (WG接続 + 500GB保管 + 監視通知)
容量追加+¥2,000/月 (500GB 毎)
復旧支援¥10,000/回
イメージバックアップ+¥3,000/月 (週次フル)
katuocloud 既存顧客向けオプション
追加料金+¥3,000/月
合計katuocloud 基本 ¥3,000 + バックアップ ¥3,000 = 月¥6,000
横展開メリット営業負荷ゼロ、 解約率低下、 純増収益
業者作業フロー (DarkHero — ケースA: ファイル削除復元)
  1. 顧客から復元依頼受領 → 対象顧客 ID 確認
  2. DarkHero (Win11) のエクスプローラーで \\173.0.0.17\wanwan-admin をマップ済 Z: ドライブから開く
  3. 顧客の daily/<timestamp>/c/ から目的ファイルを目視で特定 (Veeam GUI不要)
  4. コピー → 顧客へ送付 (Nextcloud 経由 or 持参)
  5. 速度実測値: 167MB ファイル取り出し 450 MB/s (3.6 Gbps)
業者作業最適化の妙: Veeam GUI でブラウズすると遅く時間がかかる。 daily/ の rsync 差分は素の Windows ファイル構造として保存されるため、 エクスプローラーで目視で開ける。 業者作業の 時間が金 の特性に合致。
プロモーション戦略 (アイデア)
// 「乗っ取り再現」コンセプト動画

バックアップを業者に任せるとき、 最大の懸念は「業者が悪意を持ったら全PCを乗っ取れるのでは?」という点。 この懸念を真正面から取り上げ、 実際にどれだけ簡単に乗っ取れるかを実演し、 「だからこそ信頼できる業者選びが重要」という結論で わんわんバックアップ に誘導する動画コンセプト。

  • YouTube 向けに 10〜15分の解説動画
  • X (Twitter) でハイライト30秒切り抜き
  • かつおくん / わんくん のゆっくり解説スタイル援用
  • 動画内で maguro 側鍵管理の厳格性をアピール
参照すべき他システム
サービス現状
katuocloud 本体 WordPressR640 inner — katuocloud.com (LE cert) / nginx SNI router
katuocloud Nextcloudmaguro — cloud.k2-o.net (R640 SNI passthrough)
WireGuard 構成maguro: wg-clients (54024) / wg-customers (61001) / wg-storage (62001) ※wanwan-backup商用化時は port 衝突回避で再割当検討
ドメイン使い分けkatuocloud.com (販売LP) / k2-o.net (技術ドメイン、 契約者向け) / wan-secure.net (運営)
監視基盤Telegram 通知 (maguro: supermicro-watch / mdadm-watch / raid-watch / cert-watch)
ストレージmaguro /srv/storage/ 64TB 空き、 LUKS auto-unlock + bcache + XFS
設定値リファレンス
項目値
WG ListenPort62001 (UDP)
WG MTU1100 (CGNAT対応)
WG サーバー側 IP10.220.0.1/24
WG 顧客 IP 範囲10.220.0.2-254
SSH 鍵タイプed25519
backup 受信先maguro /srv/storage/nextcloud/backup/wanwan-veeam/<client>/
世代管理rsync 30世代 + Veeam 月次フル
SMB認証顧客向け: 個別ユーザー / 業者向け: wanwan-admin (32文字ランダム要)
セキュリティ注意: 商用展開時は wanwan-admin のパスワードをランダム 32文字に変更し、 定期ローテーション (月1回) する設計に変更すること。