126 lines
4.9 KiB
Markdown
126 lines
4.9 KiB
Markdown
# WireGuard VPN — Eagle ↔ Kraken
|
|
|
|
> Создано: 2026-05-14
|
|
> Статус: ✅ работает
|
|
|
|
## Топология
|
|
|
|
```
|
|
Eagle (10.99.0.2) ←→ wg0 VPS (10.99.0.1) ←→ wg1 VPS (10.99.1.1) ←→ Kraken (10.99.1.2)
|
|
:51820 :51821
|
|
```
|
|
|
|
Два интерфейса на VPS чтобы избежать hairpin forwarding. FORWARD идёт wg0→wg1, SNAT меняет src Eagle на `10.99.1.1`.
|
|
|
|
---
|
|
|
|
## Адреса
|
|
|
|
| Узел | VPN IP |
|
|
|------|--------|
|
|
| VPS | 10.99.0.1 (wg0) / 10.99.1.1 (wg1) |
|
|
| Eagle | 10.99.0.2 |
|
|
| Kraken | 10.99.1.2 |
|
|
|
|
`kraken` резолвится через dnsmasq на VPS (DNS = 10.99.0.1 в конфиге Eagle).
|
|
|
|
---
|
|
|
|
## Персистентность
|
|
|
|
| Компонент | Узел | Как выживает ребут |
|
|
|-----------|------|--------------------|
|
|
| wg-quick@wg0 + wg-quick@wg1 | VPS | systemd enabled |
|
|
| PostUp FORWARD + SNAT | VPS | в `/etc/wireguard/wg0.conf` |
|
|
| nftables (10.99.0.0/16 forward) | VPS | `/etc/nftables.conf`, systemd enabled |
|
|
| dnsmasq (`kraken` → 10.99.1.2) | VPS | `/etc/dnsmasq.d/vpn-hosts.conf`, systemd enabled |
|
|
| wg-quick@wg0 | Kraken | systemd enabled |
|
|
| wg-auto LaunchDaemon | Eagle | `/Library/LaunchDaemons/top.eagle.wg-auto.plist` |
|
|
|
|
---
|
|
|
|
## Auto-connect на Eagle
|
|
|
|
`/usr/local/bin/wg-auto.sh` — polling каждые 30 сек (launchd `StartInterval`, **НЕ** WatchPaths):
|
|
- Дома (роутер MAC `f0:79:59:77:9b:70`) → `wg-quick down`
|
|
- Вне дома → `wg-quick up`
|
|
|
|
WatchPaths вызывал race condition: `wg-quick down` менял DNS через networksetup → писал в `/Library/Preferences/SystemConfiguration/` → launchd тригерил скрипт снова → туннель рвался, IP слетал.
|
|
|
|
---
|
|
|
|
## Time Machine
|
|
|
|
Destination: `smb://timemachine@kraken/TimeMachine`
|
|
Бандл: `mbp-black.sparsebundle`
|
|
Контейнер: `mbentley/timemachine:smb` на Кракене, работает постоянно (`restart: unless-stopped`).
|
|
Пароль: `timemachine` (samba user в контейнере)
|
|
|
|
### Диагностика сбоя аутентификации
|
|
|
|
Симптом: Time Machine показывает «The network backup disk could not be accessed because there was a problem with the network username or password». Ping `kraken` работает, SMB-шар смонтировать через `mount_smbfs` — тоже.
|
|
|
|
Причины:
|
|
1. **Пароль samba-пользователя слетел** — контейнер timemachine жив, но `smbpasswd` не задан. Проверка: `ssh kraken 'docker exec timemachine pdbedit -L'` — если не показывает NT hash после password last set, пароль надо переустановить.
|
|
2. **Keychain на Eagle хранит устаревший пароль** — macOS кэширует старый пароль и не обновляет его автоматически.
|
|
|
|
Восстановление (2026-06-02):
|
|
1. Переустановить пароль samba-пользователя в контейнере:
|
|
```
|
|
ssh kraken 'docker exec -i timemachine sh -c "echo -e \"timemachine\\ntimemachine\" | smbpasswd -a -s timemachine"'
|
|
```
|
|
2. Удалить все старые записи `timemachine@kraken` из Keychain (login + system)
|
|
3. Cmd+K в Finder → `smb://kraken/TimeMachine` → Connect As → Registered User → `timemachine` / `timemachine`
|
|
4. Перевыбрать destination: `sudo tmutil setdestination -p smb://timemachine@kraken/TimeMachine`
|
|
|
|
Проверка доступа из консоли:
|
|
```bash
|
|
mkdir -p /tmp/tm-test
|
|
mount_smbfs //timemachine:'timemachine'@kraken/TimeMachine /tmp/tm-test
|
|
ls /tmp/tm-test # должен показать mbp-black.sparsebundle
|
|
umount /tmp/tm-test
|
|
```
|
|
|
|
---
|
|
|
|
## DNS
|
|
|
|
wg0.conf **без** `DNS =`. PostUp/PostDown управляют scoped resolver:
|
|
- `PostUp = mkdir -p /etc/resolver && echo "nameserver 10.99.0.1" > /etc/resolver/kraken && killall -HUP mDNSResponder`
|
|
- `PostDown = rm -f /etc/resolver/kraken && killall -HUP mDNSResponder`
|
|
|
|
Только домен `kraken` резолвится через VPS dnsmasq (10.99.0.1). Глобальный DNS не трогается — Wi-Fi IP не слетает.
|
|
|
|
## Ключи
|
|
|
|
| Узел | Публичный ключ |
|
|
|------|---------------|
|
|
| VPS wg0 | `6W6hSw0JFLm0BbyeNp1g7wF7dKKTZmGvPRdir68mz0w=` |
|
|
| VPS wg1 | `ssRV2497NQ3Lfzvx/FLO0jDlcCXdK/RReJQ36i0yuR8=` |
|
|
| Eagle | `dDgIjBUNguodOHWoz7iFsImvKhteodHcFWM8mMe4UiE=` |
|
|
| Kraken | `8kIdCKMIoMsW09/aQX6+pU0SS/rN4PysJL59w17eGRg=` |
|
|
|
|
---
|
|
|
|
## Диагностика
|
|
|
|
```bash
|
|
# Eagle
|
|
sudo wg show
|
|
ping kraken
|
|
|
|
# VPS
|
|
ssh root@91.207.28.205 "wg show all"
|
|
|
|
# Kraken
|
|
ssh kraken "sudo wg show"
|
|
|
|
# Логи auto-connect Eagle
|
|
cat /var/log/wg-auto.log
|
|
```
|
|
|
|
## Связанные заметки
|
|
|
|
- [[kraken-network]] — SSH к Кракену, пути медиаволюмов
|
|
- [[personal-os-architecture]] — Eagle hardware, домашняя инфра
|