Files
obsidian-vault/work/plans/time-machine-tunnel-backup.md
T

163 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan: Time Machine Backup via WireGuard VPN
**Date**: 2026-05-14
**Status**: Ready to implement
## Problem
Kraken (RPi5) в другой сети — доступен только через SSH-туннель на VPS (91.207.28.205:2223).
Time Machine настроен на `smb://timemachine@kraken._smb._tcp.local./TimeMachine` через mDNS — не работает.
Последний бэкап: 12 мая 2026. Квота: 3.98 TB.
---
## Топология
```
Eagle (10.99.0.2) ──→ VPS:51820 ←── Kraken (10.99.0.3)
10.99.0.1
```
**VPS — WireGuard сервер (хаб).** Eagle и Kraken — оба клиенты, оба инициируют исходящий UDP.
Kraken не может быть сервером: он за домашним NAT, входящий UDP снаружи недоступен без port forwarding на роутере.
Cloudflare туннель не нужен — WireGuard использует UDP, CF его не поддерживает. Идёт напрямую на VPS.
Kraken держит два исходящих туннеля на VPS:
- уже есть: autossh TCP:2223 (SSH доступ)
- новый: wg-quick UDP:51820 (VPN)
---
## Что уже есть
| Узел | Статус |
|------|--------|
| VPS (Debian 6.1) | ✅ kernel module wireguard есть, `wireguard-tools` не установлен |
| Kraken (RPi5 6.12) | ✅ `wireguard-tools` в apt, модуль встроен в ядро |
| Eagle (macOS) | Нужен WireGuard.app (App Store) или `brew install wireguard-tools` |
---
## Фаза 1 — VPS: сервер (~10 мин)
```bash
apt install -y wireguard-tools
# Ключи
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.99.0.1/24
ListenPort = 51820
PrivateKey = <server.key>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Eagle
PublicKey = <eagle.pub>
AllowedIPs = 10.99.0.2/32
[Peer]
# Kraken
PublicKey = <kraken.pub>
AllowedIPs = 10.99.0.3/32
# IP forwarding
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
systemctl enable --now wg-quick@wg0
```
---
## Фаза 2 — Kraken: клиент (~5 мин)
```bash
sudo apt install -y wireguard-tools
# Ключи
wg genkey | sudo tee /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub
# /etc/wireguard/wg0.conf
[Interface]
Address = 10.99.0.3/24
PrivateKey = <client.key>
[Peer]
PublicKey = <server.pub>
Endpoint = 91.207.28.205:51820
AllowedIPs = 10.99.0.0/24
PersistentKeepalive = 25
sudo systemctl enable --now wg-quick@wg0
```
---
## Фаза 3 — Eagle: клиент (~5 мин)
```bash
# Генерация ключей
wg genkey | tee ~/eagle.key | wg pubkey > ~/eagle.pub
# tunnel.conf (импортировать в WireGuard.app)
[Interface]
Address = 10.99.0.2/24
PrivateKey = <eagle.key>
[Peer]
PublicKey = <server.pub>
Endpoint = 91.207.28.205:51820
AllowedIPs = 10.99.0.0/24
PersistentKeepalive = 25
```
---
## Фаза 4 — Тест (~5 мин)
```bash
ping 10.99.0.1 # Eagle → VPS
ping 10.99.0.3 # Eagle → Kraken
smbclient -L //10.99.0.3 -U timemachine
```
---
## Фаза 5 — Time Machine
```bash
sudo tmutil removedestination <old-id>
sudo tmutil setdestination smb://timemachine@10.99.0.3/TimeMachine
```
Или через GUI: System Settings → General → Time Machine → Add Backup Disk → `smb://timemachine@10.99.0.3/TimeMachine`
---
## Фаза 6 — Cloudflare туннель: отключить (не удалять)
После того как WireGuard заработает, CF туннель для SSH/SMB больше не нужен — но удалять не стоит, пусть лежит как fallback. Уточнить в CF Zero Trust какие hostname-ы реально активны перед остановкой.
```bash
# На Кракене — остановить cloudflared (если хотим освободить ресурсы)
sudo docker stop cloudflared
# Или оставить работающим — он не мешает, потребляет ~20MB RAM
# В CF Zero Trust: просто не добавлять новых hostname-ов под него
```
**Не удалять** туннель в CF Zero Trust dashboard — оставить в состоянии Inactive как fallback.
---
## Заметки
- `AllowedIPs = 10.99.0.0/24` — только VPN-трафик через туннель, интернет напрямую
- SMB через WireGuard достаточно быстр для TM
- VPS = single point of failure для TM, это приемлемо
- Time Machine login/pass: timemachine/timemachine