Docs/docs/04-network.md
2026-03-26 14:03:39 +05:00

212 lines
9.0 KiB
Markdown
Raw Permalink 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.

# 04. Сеть и доступ
## Топология
Инфраструктура объединяет устройства в локальной подсети `192.168.1.0/24`. Доступ из внешней сети осуществляется через маршрутизатор TP-Link с белым IP-адресом `188.73.191.202`, на который делегирован домен `zailon.ru`. Для удалённого подключения к внутренним ресурсам используется OpenVPN и OlimpVPN (VLESS).
```mermaid
graph TD
Internet(Интернет) --> Router(Роутер TP-Link)
Router --> LAN(Локальная сеть 192.168.1.0/24)
Router -->|Внешний IP 188.73.191.202| Domain(zailon.ru)
LAN --> Proxmox(Proxmox Host 192.168.1.200)
Proxmox --> VM1(LXC / ВМ 201-213)
Router -->|VPN| OlimpVPN[OlimpVPN 2.27.50.20]
OlimpVPN -->|VLESS:2054| LAN
```
*Все виртуальные машины и контейнеры подключены к локальной сети через мост vmbr0.*
---
## Маршрутизатор (TP-Link)
- **Модель**: TP-Link (предположительно Archer C6/A6 или аналогичный)
- **Локальный IP**: 192.168.1.1
- **Внешний IP**: 188.73.191.202 (статический)
### Перенаправление портов (Port Forwarding)
| Имя сервиса | Внешний порт | Внутренний порт | IP устройства | Протокол | Назначение |
|-------------|--------------|-----------------|---------------|----------|------------|
| snikket | 3478 | 3478 | 192.168.1.206 | Все | XMPP / STUN |
| snikket | 50000-50100 | 50000-50100 | 192.168.1.206 | UDP | XMPP медиа |
| snikket | 5222 | 5222 | 192.168.1.206 | TCP | XMPP клиенты |
| snikket | 5349 | 5349 | 192.168.1.206 | TCP | XMPP TLS |
| Enshrouded | 15636 | 15636 | 192.168.1.212 | Все | Игровой сервер |
| Mumble | 45131 | 45131 | 192.168.1.206 | Все | Голосовой чат |
| virsing | 27015-27016 | 27015-27016 | 192.168.1.207 | Все | Игровой сервер |
| Virsing | 9876-9877 | 9876-9877 | 192.168.1.207 | Все | Игровой сервер |
| SOTH | 9700 | 9700 | 192.168.1.207 | UDP | Игровой сервер |
| SOTH | 8766 | 8766 | 192.168.1.207 | UDP | Игровой сервер |
| valheim | 2456-2458 | 2456-2458 | 192.168.1.207 | Все | Valheim |
| HTTPS | 443 | 443 | 192.168.1.201 | Все | Nginx Proxy Manager |
| HTTP | 80 | 80 | 192.168.1.201 | Все | Nginx Proxy Manager (редирект) |
> **Примечание**: некоторые порты (например, 15636, 27015-27016, 9876-9877) ведут на остановленные ВМ (212, 207) и могут быть закрыты.
---
## VPN-сервисы
### OpenVPN (домашний)
На роутере включён OpenVPN-сервер с настройками:
- **Тип сервиса**: UDP
- **Порт**: 1194
- **VPN-подсеть**: 192.168.45.0/24
- **Клиентский доступ**: только домашняя сеть (192.168.1.0/24)
Используется для удалённого подключения к домашней сети с мобильных устройств и ноутбуков.
### OlimpVPN (VLESS, внешний сервер)
| Параметр | Значение |
|----------|----------|
| **Сервер** | 2.27.50.20 (Финляндия) |
| **Домен** | charon.zailon.ru |
| **Протокол** | VLESS + Reality + XHTTP |
| **Порт** | 2054 |
| **Панель управления** | https://charon.zailon.ru:45131/olimp-styx/ |
| **URI подписки** | /charon-cerberus/ |
#### Конфигурация inbound
```yaml
Название: OlimpVpn
Протокол: VLESS
Порт: 2054
Транспорт: XHTTP
Безопасность: Reality
Reality параметры:
Target: cloud.zailon.ru:443
SNI: cloud.zailon.ru
uTLS: chrome
Public Key: TOyddQCTdSpycmO20uiLOqMABuKabpwVhw57tWmvJws
Short IDs: 174fc0, 568a8044d80a, b211, ...
SpiderX: /
XHTTP параметры:
Path: /remote.php/dav/upload
Mode: stream-one
Padding Bytes: 100-1000
```
#### Подключение клиентов
Формат ссылки VLESS:
```
vless://UUID@2.27.50.20:2054?type=xhttp&encryption=none&path=%2Fremote.php%2Fdav%2Fupload&security=reality&pbk=PUBLIC_KEY&fp=chrome&sni=cloud.zailon.ru&sid=SHORT_ID&sp=%2F#ClientName
```
Автоматическая подписка:
```
https://charon.zailon.ru:45131/charon-cerber/CLIENT_ID
```
> **Примечание**: подробная инструкция по установке и управлению — в [документации OlimpVPN](04b-olimpvpn.md).
---
## DNS
Домен `zailon.ru` делегирован на внешний IP `188.73.191.202`. Все поддомены `*.zailon.ru` также указывают на этот IP через записи типа A.
| Поддомен | Назначение | Целевой хост |
|----------|------------|--------------|
| `charon.zailon.ru` | Панель OlimpVPN | 2.27.50.20 (VPS) |
| `nc.zailon.ru` | Nextcloud | 188.73.191.202 → 192.168.1.201 |
| `cloud.zailon.ru` | Reality SNI / Nextcloud | 188.73.191.202 → 192.168.1.201 |
| `*.zailon.ru` | Wildcard для сервисов | 188.73.191.202 |
DNS-серверы:
- Внешние: стандартные провайдера (или публичные, например 8.8.8.8)
- Локально: системный resolver на каждом хосте (127.0.0.53)
---
## Локальная сеть
- **Подсеть**: 192.168.1.0/24
- **Шлюз**: 192.168.1.1 (роутер)
- **DHCP**: включён на роутере, диапазон раздачи 192.168.1.100192.168.1.200 (статические адреса для серверов заданы вручную)
- **Статические IP-адреса серверов**: см. раздел [Виртуальные машины и LXC](03-vms-lxcs.md)
### Ключевые хосты
| Хост | IP | Назначение |
|------|-----|------------|
| Роутер | 192.168.1.1 | Шлюз, DHCP, OpenVPN |
| NPM | 192.168.1.201 | Nginx Proxy Manager, SSL-терминация |
| Proxmox | 192.168.1.200 | Хост виртуализации |
| media (LXC) | 192.168.1.203 | Jellyfin, Samba, yt-dlp, xray-прокси |
| talk (LXC) | 192.168.1.206 | Snikket (XMPP), Mumble |
---
## Безопасность сети
- **Wi-Fi**: WPA2-PSK (рекомендуется обновление до WPA3)
- **Гостевая сеть**: отсутствует
- **VLAN**: не используются
- **Доступ к панели 3X-UI**:
- HTTPS + Let's Encrypt
- Секретный URI: `/olimp-styx/`
- Секретный subscription URI: `/charon-cerber/`
- Рекомендуется ограничить доступ по IP при возможности
### Fail2ban (опционально для 3X-UI)
```yaml
# В docker-compose.yml 3X-UI:
environment:
XUI_ENABLE_FAIL2BAN: "true"
XUI_FAIL2BAN_PORT: "45131"
XUI_FAIL2BAN_MAX_RETRY: "5"
XUI_FAIL2BAN_BAN_TIME: "3600"
```
---
## Мониторинг сети
- Сбор метрик через node_exporter (порт 9100) на всех хостах
- Логи роутера не собираются (ограниченные возможности TP-Link)
- Логи 3X-UI: `docker logs 3xui_app --tail 100 -f`
---
## Бэкапы конфигурации
### OlimpVPN (3X-UI)
Автоматические еженедельные бэкапы на Nextcloud:
- **Скрипт**: `/opt/3x-ui/backup.sh`
- **Cron**: `0 3 * * 0` (воскресенье, 03:00)
- **Хранилище**: `nc.zailon.ru/VPN_Backups/3x-ui/`
- **Состав**: база данных, сертификаты, docker-compose.yml
```bash
# Ручной бэкап
cd /opt/3x-ui
tar -czf backup_$(date +%Y%m%d).tar.gz db/ cert/ docker-compose.yml
# Восстановление
docker compose down
tar -xzf backup_*.tar.gz -C /opt/3x-ui/
docker compose up -d
```
> **Важно**: токены и пароли хранятся отдельно, не включаются в бэкап.
---
**Связанные разделы:**
- [Виртуальные машины и LXC](03-vms-lxcs.md)
- [OlimpVPN — полная документация](08-olimpvpn.md)
- [Сервисы и порты](06-services.md)
- [Проксирование и SSL (NPM)](07-proxy-ssl.md)
- [Безопасность](10-security.md)