Files
obsidian-vault/family/how-to/kraken-network.md
T

156 lines
13 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.
---
title: Kraken Network & Infra
created: '2026-05-23'
updated: '2026-09-04'
type: tech
namespace: personal
tags:
- infra
- kraken
- ssh
- wireguard
- network
related:
- '[[tech/arr-stack-kraken]]'
---
# Kraken Network & Infra
## SSH Access
```
ssh kraken
```
SSH alias `kraken` resolves via `~/.ssh/config`.
## Актуальная сеть (проверено 2026-09-22)
> ⚠️ **Кра́кен теперь достаётся по двум адресам на ОДНОМ MAC.** ARP на роутере: и `192.168.1.14`, и `192.168.1.15` → `lladdr 2c:cf:67:64:03:f3` (один и тот же eth0 MAC). То есть `.15` числится за eth0, отдельного WiFi-MAC в ARP нет. Два default route (eth0 metric 100, wlan0 metric 600) **сосуществуют** — часть трафика может утечь в Wi-Fi. `ping` с самого Кра́кена уходил через **wlan0**, не через кабель.
| Интерфейс | IP | MAC | Uplink role |
|---|---|---|---|
| **eth0** (Ethernet, Gigabit RPi5 rp1-gem/macb) | `192.168.1.14/24` (DHCP) | `2c:cf:67:64:03:f3` | primary — default via `192.168.1.1`, metric 100 |
| **wlan0** (WiFi) | `192.168.1.15/24` (DHCP) | `2c:cf:67:64:03:f4` | fallback — metric 600 |
- ✅ **eth0 линк на 2026-09-22 = 1000 Mbit/s full duplex** (`ethtool eth0`: `Speed: 1000Mb/s`, `Duplex: Full`, `Link detected: yes`, master-slave status: slave). Роутерный порт (Port 3) тоже `1000FD`. Гигабит восстановлен после замены патч-корда 2026-09-04.
- Router/gateway: `192.168.1.1` (`f0:79:59:77:9b:70`). eth0 MAC соответствует static lease в доке [[family/how-to/openmediavault-rpi5|openmediavault-rpi5]].
- ⚠️ Ранее эта заметка утверждала «wlan0 = .15 primary» — устарело (см. таблицу выше).
## Измерения латентности через роутер (2026-09-22)
Снято с **Rasputin** (OpenWrt, `192.168.6.1`, WAN `192.168.1.50` — см. [[family/how-to/rasputin-router]]):
```
Rasputin → Кра́кен eth 192.168.1.14: 0.499 / 0.639 / 0.897 ms 10/10, 0% loss
Rasputin → Кра́кен 192.168.1.15: 0.444 / 0.641 / 1.037 ms 10/10, 0% loss
```
С Mac (`192.168.1.57`, Wi-Fi en0 802.11ac 5GHz 80MHz):
```
Mac → роутер 192.168.1.1: 0.622 / 1.006 / 1.308 ms 0% loss
Mac → ТВ 192.168.1.70: 0.596 / 2.295 / 26.874 ms 0% loss (через Wi-Fi ТВ)
Mac → Кра́кен 192.168.1.15: 1.321 / 3.169 / 4.233 ms 0% loss
```
🔴 **Пропускная способность (throughput) нигде не измерена** — все цифры выше это **латентность (RTT)**, не скорость. `1000FD` в `robocfg`/`ethtool` — это **link speed**, согласованная скорость линка, а НЕ реальные Мбит/с. Три разных величины, которые легко спутать:
| Мера | Инструмент | Что отвечает |
|---|---|---|
| Link speed | `ethtool` / `robocfg` / `sysfs speed` | согласованная скорость линка (потолок) |
| Throughput | `iperf3` | реальные Мбит/с через линк |
| Интернет | speedtest | что даёт провайдер |
**Состояние `iperf3` (2026-09-22):**
```
Распутин: iperf3 3.17.1 ✅ (opkg install iperf3)
Кра́кен: iperf3 3.12 ✅ (apt-get install iperf3)
Mac: НЕ установлен
```
⚠️ На OpenWrt в комплекте уже были `libiperf3` и `python3-iperf3` — это **библиотеки, не бинарь**. Проверять `which iperf3`, а не `opkg list-installed | grep iperf`.
**Замер ещё НЕ сделан.** Блокер: sshd на Распутине отказал (`Connection refused` при живом пинге). Партнёр готов, на Кра́кене сервер поднят на `:5201`. Команды:
```bash
# на Кра́кене
nohup iperf3 -s -p 5201 > /tmp/iperf3s.log 2>&1 &
# на Распутине
iperf3 -c 192.168.1.14 -p 5201 -t 10
```
⚠️ Гигабитный линк физически даёт максимум ~940–950 Мбит/с (оверхед Ethernet). На NanoPi R5S реальный потолок может быть ниже — упрётся в CPU.
## Проверка скорости линка — команды (проверено 2026-09-22)
```bash
# Кра́кен (RPi5, ethtool есть)
ssh kraken 'ethtool eth0 | grep -E "Speed|Duplex|Link detected"'
# ТВ (webOS, ethtool НЕТ → только sysfs)
ssh -i ~/.ssh/id_rsa root@192.168.1.70 'cat /sys/class/net/eth0/speed; cat /sys/class/net/eth0/duplex'
# Роутер Бишкек (Merlin) — скорость порта свитча
ssh admin@192.168.1.1 'robocfg show'
# Rasputin (OpenWrt) — скорость WAN
ssh root@192.168.6.1 'cat /sys/class/net/eth0/speed'
```
🔴 **`robocfg show` на Merlin показывает `1000FD` по порту, но это НЕ значит, что партнёр на гигабите.** Порт 4 показывал `1000FD`, при этом USB-адаптер Mac отдавал `100baseTX` — рассинхрон. Доверять надо цифре **на клиенте** (`ethtool` / `/sys/class/net/*/speed`), а `robocfg` — только как второе мнение.
## ETH-линк ТВ: 100 Мбит — это ПОТОЛОК ЖЕЛЕЗА ТВ (уточнено 2026-09-22)
ТВ `192.168.1.70` (MAC `ac:5a:f0:25:11:c6`) подключён **кабелем**, и его eth0 держит **100 Mbit/s full duplex** (подтверждено чтением `/sys/class/net/eth0/speed` → `100`).
🔴 **Это предел сетевой карты телевизора, а НЕ кабеля.** Проверено с **заведомо гигабитным патч-кордом** — ТВ всё равно отдаёт `100` и больше не даёт. Не диагностировать как «битый/полуживой кабель», не менять патч-корд, не искать гигабит: модель физически не умеет.
⚠️ Ранняя версия этой заметки (2026-09-04) объясняла 100M «downshift из-за плохого провода» по аналогии с Kraken — **это была неверная гипотеза**. Причина у ТВ другая: ограничение самой сетевой карты. У Kraken причина была своя (патч-корд, заменён 2026-09-04 → линк `1000 full`, подтверждено 2026-09-22). Не переносить вывод с одного устройства на другое.
⚠️ На роутере порт ТВ «мигает» между состояниями в течение сессии: сначала MAC ТВ виден на **Port 1** (`DOWN` в `robocfg`, но MAC присутствует в FDB моста `br0`), затем порт ТВ переехал в **Port 4** (`1000FD`). То есть кабель ТВ перекладывали. **Вывод о линке всегда проверять заново** — он менялся прямо в ходе диагностики.
⚠️ **Порт 1 у Merlin может показывать `DOWN` и одновременно держать MAC клиента в `brctl showmacs br0`.** Это не противоречие в данных — это признак, что интерфейс был перенесён; MAC удерживается ageing-таймером FDB. Не строить вывод на одном `robocfg`.
## Хранилище Kraken — USB (проверено 2026-09-04)
Единственный диск `sda` (Toshiba **MQ01UBB200**, 1.8TB) подключён **напрямую в порт USB3/SS RPi5, НЕ через хаб** — Sysfs путь `/.../xhci-hcd.0/usb2/2-1`, speed **5000 Mbps**. lsusb -t: Dev 2 на Bus 02 (5000M). Линк USB3 настоящий (не USB2).
**Скорость чтения диска ~95 МБ/с** (dd direct + buffered, по remux-файлу): это не USB-узкое место, а **физический предел 5400rpm 2.5" ноутбучного HDD** (максимум ~100–110 МБ/с на внешних дорожках). Для сравнения потолок USB2 ≈ 35–40 МБ/с. USB3.0 линк подтверждён (5000M). Вывод: для скорости >200 МБ/с нужен SSD/7200rpm, текущий механик упрется в ~95–110 МБ/с.
Хабы (Super Top `1-1.2`, Huasheng «USB2.0 HUB» `1-1`) висят на **Bus 01 (USB2, 480M)** и **пустые** — к ним ничто не подключено.
Монтирование: `/dev/sda1` (ext4, UUID `6194539b-03e0-4f33-986b-4da09834e82f`) → `/srv/dev-disk-by-uuid-6194539b-...`; старый путь `49e8f586...` — **symlink** на него.
## Клиент — LG webOS TV (192.168.1.75 WiFi / 192.168.1.70 Ethernet) (проверено 2026-09-04)
По SSH `root@192.168.1.75` или `root@192.168.1.70` (`~/.ssh/config` .75, id_rsa; выводит post-quantum warning — ок). Host LGwebOSTV, ядро 4.4.84 armv7 (webOS). ТВ имеет **два MAC**: WiFi `54:77:87:ce:fb:b3`, Ethernet `ac:5a:f0:25:11:c6` (этот = static lease в роутере `.75`).
**Состояние на конец сессии 2026-09-04:** ТВ переведён на **провод** (пользователь воткнул патч-корд в роутер) → WiFi `wlan0 DOWN`, `eth0 UP`. После этого IP сменился: проводной интерфейс получил **`192.168.1.70`** (старый `.75` больше не отвечает, ping 100% loss). ⚠️ **eth0 ТВ линк = 100 Mbit/s full duplex** (carrier up, speed=100) — то есть **тот же downshift на 100M**, какой был у Kraken (см. ниже). Провод 100M **медленнее**, чем WiFi (867 PHY ≈ 400+ реальных Мбит/с) → переключение на полуживой кабель — регресс., если не поменять патч-корд ТВ↔роутер на рабочий гигабитный.
**Сводка по линкам ТВ (до переключения на провод, WiFi .75):**
- Wi-Fi клиент был: SSID **ASUS5**, BSSID `f0:79:59:77:9b:74`, **канал 153 / 5765MHz / width 80MHz (5 GHz, 802.11ac)**, **signal -53 dBm** (отличный), **TX link rate 867.0 MBit/s PHY** (2-поток 80MHz AC — потолок карты), txpower 15 dBm.
- Реальный TCP-пропуск ≈ 50–60% PHY ≈ **400–500 Мбит/с** при таком сигнале — это в разы больше 99 Мбит/с remux'а, так что **WiFi ТВ не узкое место**. Торможение 4K сохранялось и на WiFi, и позже подтверждено на сотне-проводе.
**Forensics торможения (проведено вживую при воспроизведении Project Hail Mary, Direct Play):**
- Транскода НЕТ: 0 ffmpeg-процессов, `/config/transcodes` пуст, CPU Kraken load ~0.1 — сервер простаивает.
- Сервер отдаёт всего ~21 Мбит/с (eth0 tx) при файле ~27 Мбит/с — сеть и диск с запасом ×10+.
- Wi-Fi ТВ-интерфейс за время стрима: **rx_crc_errors=0, tx_retries delta=0**, signal постоянно -53 dBm — радио чистое, не деградирует.
- **Вывод: все сетевые/дисковые/радио-счётчики чисты, линки имеют запас, а Direct Play НИЗКОбитрейтного (24-27 Мбит/с) 4K всё равно подёргивается** → причина в **программном декодере/буфере клиента «Jellyfin for WebOS 1.2.2»**, а не в инфраструктуре. См. [[arr-stack-kraken]] «Известные проблемы». Плюс если смотреть через провод — линк ТВ сейчас 100M (тоже слабое место для remux).
## WireGuard Topology
Split-tunnel: Eagle ↔ VPS ↔ Kraken. Full details: [[tech/wireguard-vpn]].
- Eagle: `10.99.0.2`, Kraken: `10.99.1.2`, VPS relay: `10.99.0.1`/`10.99.1.1`
- `wg-auto.sh` on Eagle (LaunchDaemon) — up when off home Wi-Fi, down at home
- VPS as relay; two interfaces (wg0/wg1) avoid hairpin forwarding
## Media Volume Mount Paths
Docker containers on Kraken mount media from NAS over NFS/SMB.
Paths were documented here — check docker-compose files in
`/opt/media-toolbox-kraken` for current mount config.