かつお Back Up Guard (わんわんバックアップ) — 試験運用記録
実証済 商用化準備 遠隔地の Windows PC を暗号化トンネル経由で自社ストレージにバックアップする商用サービス。 katuocloud 既存インフラに相乗りする形で実証試験完了。 商業展開準備中。
katuocloud 既存インフラに相乗りする形で、 遠隔地の Windows PC を暗号化トンネル経由で自社ストレージにバックアップするサービスの実証試験を実施。 マンション共有 Wi-Fi / iPhone テザリング環境下で、 SSH 接続およびファイル取得まで通しで成功。 事業のコア機能の動作証明を完了。
- ✓ 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
/etc/wireguard-r640-snapshot/)。 商用展開時は maguro 上に wg-backup を新規構築する設計とする。 wg-clients/customers/storage と同じく VLAN70 (192.168.70.30) で終端。
| ID | プロトコル/ポート | 宛先 | 用途 |
|---|---|---|---|
| 20000/10 | UDP 54024 | 192.168.70.30 (maguro) | wg-clients (顧客VPN) |
| 20000/11 | TCP 443 | 192.168.20.21 (R640) | nginx SNI router |
| 20000/12 | TCP 80 | 192.168.20.21 (R640) | nginx (ACME challenge) |
| 20000/13 | UDP 61001 | 192.168.70.30 (maguro) | wg-customers (業務) |
| 20000/14 | UDP 62001 | 192.168.30.30 (maguro storage) | wg-storage (現状) ※wanwan-backup 商用化時はこの 62001 を専用に再割当検討 |
| ホスト | IP (現状) | 用途 |
|---|---|---|
| R640 (katuo) | 192.168.20.21 / 173.0.0.2 / 173.0.0.9 | DMZ — 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.17 | WG終端 (wg-clients/customers/storage) / NFS / Samba (業者向け) / 64TB ストレージ |
| hirame | 192.168.10.40 / 192.168.20.40 / 173.0.0.6 / 173.0.0.10 | Collabora Online (fabric直結 173.0.0.6) |
| DarkHero | 192.168.10.10 / 173.0.0.18 | 業者作業端末 (Win11) |
| 試験PC (DESKTOP-3SL4PU6) | 10.220.0.2 (WG経由) | 顧客PC試験機 (Win10 Pro) |
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
# 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
# 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
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
# 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
原因: RTX1300 のフィルタ 400063 を ip filter で定義しただけでは効かず、 tunnel select 1 経由で tunnel インターフェースに適用する必要があった。
解決: tunnel select 1 → ip tunnel secure filter in ... 400063 ... → save で恒久対処完了。
原因: サーバー側 iptables INPUT に -m state --state RELATED,ESTABLISHED -j ACCEPT ルールがなく、 SYN-ACK 応答パケットが INPUT 末尾の DROP に弾かれていた。
解決: ESTABLISHED ルールを INPUT 1 (最優先) に挿入。 これでサーバーから開始した TCP セッションの戻りパケットが正しく許可される。
-m state --state RELATED,ESTABLISHED -j ACCEPT を最優先で配置すること。 これがないとサーバー自身がクライアントとして接続を開始した際の戻りパケットが破棄される。 本番 wg-clients/customers/storage にはこのルールが入っているが、 wg-backup 構築時に失念して詰まった。
原因: WG MTU デフォルト 1420 がモバイル網 CGNAT で断片化を起こす。
解決: MTU = 1100 を両端で設定。 TCPMSS clamp も併用。
原因: OpenSSH は「最初にマッチした Host 定義を採用」する仕様。 Include 行を末尾に置くと既存の Host 定義に上書きされる。
解決: Include 行を config ファイル先頭に挿入。
原因: Windows OpenSSH Server は administrators グループに属するユーザーの場合、 ~/.ssh/authorized_keys ではなく C:\ProgramData\ssh\administrators_authorized_keys を参照する仕様 (sshd_config の Match Group ブロック)。
解決: 管理者用の専用パスに登録、 icacls で権限を SYSTEM:F + Administrators:F + inheritance:r に設定。
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.2 | 24ms 平均 | iPhone テザリング経由 |
| ping 1000byte (-s 1000) | 50ms 平均、 損失0 | MTU 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 ファイルで実測 |
/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 → ローカル XFS | 91 Mbps (11.4 MB/s) |
| サーバー側 (rsync Pull) | WG → SSH+rsync → maguro → ローカル XFS | 200-400 Mbps (25-50 MB/s) |
| 業者 (DarkHero) | 10GbE 直結 → maguro SMB | 3.6 Gbps (450 MB/s) |
- BIOS の「高速スタートアップ」無効化
- Windows 電源プラン: スリープ解除タイマー有効、 休止状態を有効化
- タスクスケジューラ: 毎日 02:00、 「タスクの実行時にスリープを解除する」有効
- WireGuard を Windows サービスとして起動 (起動時自動接続)
- 保険タスク: PC 起動から3時間後に
shutdown /h
- cron 02:05 で
backup-client.sh実行 - 顧客リスト管理 (DB or YAML)
- 顧客ごとに並列実行 / シリアル実行を選択
- 完了後
ssh shutdown /hで休止状態へ
- cwRsync 6.4.7 (Windows用 rsync 3.4.1) を
rsync.exe+ 必要DLL のみ抽出して配布 - サーバー → ノートPC へ
rsync -av --link-dest=..で7世代ハードリンク世代管理 - 初回フル + 以降差分で帯域大幅節約
- 既存の maguro Telegram 監視システムに統合 (cert-watch / supermicro-watch と同じ仕組み)
- 毎日のバックアップ完了/失敗を通知
- 1週間バックアップ無しの顧客をエスカレーション
- 顧客ごとに別の SSH 鍵ペアを発行 (鍵分離)
- 鍵の保管場所を専用ディレクトリに集約 + パーミッション 600
- 定期的な鍵ローテーション運用 (3〜6ヶ月)
- 鍵ファイルのバックアップ (LUKS 暗号化領域内に保管)
- maguro OS 自体のセキュリティ更新 / fail2ban / 不正ログイン検知
営業上、 顧客から「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 |
| 横展開メリット | 営業負荷ゼロ、 解約率低下、 純増収益 |
- 顧客から復元依頼受領 → 対象顧客 ID 確認
- DarkHero (Win11) のエクスプローラーで
\\173.0.0.17\wanwan-adminをマップ済 Z: ドライブから開く - 顧客の
daily/<timestamp>/c/から目的ファイルを目視で特定 (Veeam GUI不要) - コピー → 顧客へ送付 (Nextcloud 経由 or 持参)
- 速度実測値: 167MB ファイル取り出し 450 MB/s (3.6 Gbps)
バックアップを業者に任せるとき、 最大の懸念は「業者が悪意を持ったら全PCを乗っ取れるのでは?」という点。 この懸念を真正面から取り上げ、 実際にどれだけ簡単に乗っ取れるかを実演し、 「だからこそ信頼できる業者選びが重要」という結論で わんわんバックアップ に誘導する動画コンセプト。
- YouTube 向けに 10〜15分の解説動画
- X (Twitter) でハイライト30秒切り抜き
- かつおくん / わんくん のゆっくり解説スタイル援用
- 動画内で maguro 側鍵管理の厳格性をアピール
| サービス | 現状 |
|---|---|
| katuocloud 本体 WordPress | R640 inner — katuocloud.com (LE cert) / nginx SNI router |
| katuocloud Nextcloud | maguro — 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 ListenPort | 62001 (UDP) |
| WG MTU | 1100 (CGNAT対応) |
| WG サーバー側 IP | 10.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回) する設計に変更すること。