docs: обновить документацию — добавить splitgw, ingress-proxypass, hysteria2-server

docs/networking.md:
  - Раздел ingress-proxypass: архитектура, пример конфигурации с TLS и auth
  - Раздел splitgw: TPROXY-маршрутизация, systemd и k8s режимы, пример TV
  - Раздел hysteria2-server: установка на VPS, SSH-пароль, URL для клиентов

docs/make-reference.md:
  - addon-mediaserver (с флагом без Hysteria2)
  - addon-hysteria2-server (SSH-ключ и интерактивный пароль -k)
  - addon-splitgw (systemd и k8s DaemonSet)
  - addon-ingress-proxypass

docs/troubleshooting.md:
  - Строки таблицы: 502/503/404 для ingress-proxypass, TPROXY для splitgw,
    firewall/TLS для hysteria2-server, Prowlarr sidecar для mediaserver
  - Разделы диагностики: ingress-proxypass, splitgw, hysteria2-server
    с конкретными командами kubectl/systemctl/iptables
This commit is contained in:
Sergey Antropoff
2026-04-26 07:36:46 +03:00
parent e9e0ffa3c2
commit fafcc34f03
3 changed files with 171 additions and 0 deletions

View File

@@ -27,6 +27,15 @@
| NetBird: клиент не подключается | DNS не настроен | Настрой A-записи для Management, Signal, Coturn LB IPs |
| MinIO: distributed не поднимается | Мало нод | Distributed требует минимум 4 реплики/ноды |
| Nextcloud: redirect loop | HTTP→HTTPS конфликт | Добавь `TRUSTED_PROXIES` в конфиг Nextcloud |
| ingress-proxypass: 502 Bad Gateway | Кластер не достигает внешний IP | `curl -v http://<external-ip>:<port>` с ноды кластера; проверь файрвол на внешнем хосте |
| ingress-proxypass: 503 | Endpoints пустой | `kubectl -n ingress-proxypass get endpoints` — должны быть адреса |
| ingress-proxypass: 404 | Имя хоста не совпадает | `kubectl -n ingress-proxypass describe ingress <name>` — хост должен совпасть точно |
| splitgw: трафик не перехватывается | TPROXY mark не применён | `iptables -t mangle -L SPLITGW -v -n` — должны быть правила; `journalctl -u splitgw-rules -f` |
| splitgw: sing-box не стартует | Ошибка конфига | `journalctl -u singbox -f`; `sing-box check --config /etc/sing-box/config.json` |
| splitgw: YouTube всё равно без VPN | DNS утечка | DNS-запросы должны идти через TPROXY; `nslookup youtube.com 8.8.8.8` с устройства |
| hysteria2-server: порт закрыт | Файрвол VPS | `ufw allow 443/udp` или `firewall-cmd --add-port=443/udp --permanent` |
| hysteria2-server: клиент не подключается | Самоподписанный сертификат | Добавь `insecure=1` в URL или установи `tls_mode: acme` |
| mediaserver: Prowlarr не видит индексеры | Hysteria2 sidecar упал | `kubectl -n mediaserver logs <prowlarr-pod> -c hysteria2` |
## Подробный вывод
@@ -125,6 +134,59 @@ kubectl describe certificate <name> -n <namespace>
kubectl logs -n cert-manager deployment/cert-manager -f
```
## Диагностика ingress-proxypass
```bash
# Ресурсы namespace
kubectl -n ingress-proxypass get all,ingress,endpoints
# Проверить Endpoints заполнены (Addresses не должен быть <none>)
kubectl -n ingress-proxypass describe endpoints <name>
# Тест изнутри кластера
kubectl run curl --rm -it --image=curlimages/curl -- \
curl -v http://<service>.ingress-proxypass.svc.cluster.local:<port>
# Проверить что nginx подхватил правила
kubectl -n ingress-nginx logs -l app.kubernetes.io/name=ingress-nginx --tail=50
```
## Диагностика splitgw
```bash
# Статус сервисов на хосте gateway
systemctl status singbox splitgw-rules
journalctl -u singbox -f
journalctl -u splitgw-rules -f
# Проверить TPROXY-правила iptables
iptables -t mangle -L SPLITGW -v -n
iptables -t mangle -L PREROUTING -v -n
# Проверить sing-box конфиг
sing-box check --config /etc/sing-box/config.json
# Диагностика DNS (с устройства-источника)
nslookup youtube.com
nslookup vk.com
```
## Диагностика hysteria2-server
```bash
# Статус на VPS
systemctl status hysteria2
journalctl -u hysteria2 -f
# Проверить порт открыт (UDP)
ss -ulnp | grep 443
# С клиентской машины:
nc -u <vps-ip> 443
# Тест подключения
curl -v --proxy hysteria2://pass@<vps-ip>:443?insecure=1 https://example.com
```
## Типичные Molecule ошибки
| Ошибка | Решение |