13 KiB
04. Сеть и доступ
Топология
Инфраструктура объединяет устройства в локальной подсети 192.168.1.0/24. Доступ из внешней сети осуществляется через маршрутизатор TP-Link с белым IP-адресом 188.73.191.202, на который делегирован домен zailon.ru. Для удалённого подключения к внутренним ресурсам используется OpenVPN и OlimpVPN (VLESS).
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
Название: 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.
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.100–192.168.1.200 (статические адреса для серверов заданы вручную)
- Статические IP-адреса серверов: см. раздел Виртуальные машины и LXC
Ключевые хосты
| Хост | 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)
# В 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
🔄 Бэкапы и восстановление
Автоматические бэкапы
| Параметр | Значение |
|---|---|
| Скрипт | /opt/3x-ui/backup.sh |
| Расписание | 0 3 * * 0 (воскресенье, 03:00 +05) |
| Локальное хранилище | /opt/3x-ui/backups/ |
| Nextcloud | nc.zailon.ru/Admin/Домашний Сервер/OlimpBackup/OlimpVPN/ |
| Состав бэкапа | db/, cert/, docker-compose.yml |
| Хранение локально | 30 дней |
| Таймзона | Asia/Yekaterinburg (+05) |
Ручной запуск бэкапа
&&&bash /opt/3x-ui/backup.sh &&&
Восстановление из бэкапа
&&&bash
1. Скачать последний бэкап с Nextcloud
LATEST=$(curl -s -u "Zailon:TOKEN"
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/"
-X PROPFIND -H "Depth: 1" |
grep -oP '3x-ui_backup_\d+_\d+.tar.gz' | tail -1)
curl -s -u "Zailon:TOKEN"
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/${LATEST}"
-o /tmp/restore.tar.gz
2. Остановить сервис
cd /opt/3x-ui && docker compose down
3. (Опционально) Создать резервную копию текущей конфигурации
tar -czf /opt/3x-ui/pre_restore_$(date +%Y%m%d).tar.gz -C /opt/3x-ui db cert docker-compose.yml
4. Восстановить файлы
tar -xzf /tmp/restore.tar.gz -C /opt/3x-ui/ chown -R root:root /opt/3x-ui/ chmod 600 /opt/3x-ui/cert/private.key
5. Запустить сервис
docker compose up -d
6. Проверить статус
docker ps | grep 3xui docker logs 3xui_app --tail 20 &&&
Мониторинг бэкапов
&&&bash
Логи бэкапа
tail -f /var/log/3x-ui-backup.log
Локальные бэкапы
ls -lh /opt/3x-ui/backups/
Проверка на Nextcloud (WebDAV)
curl -u "Zailon:TOKEN"
"https://nc.zailon.ru/remote.php/dav/files/Zailon/Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/"
-X PROPFIND -H "Depth: 1" | grep -oP '<d:href>\K[^<]+' | tail -5
Проверка crontab
crontab -l
Проверка таймзоны
timedatectl | grep "Time zone" &&&
Решение проблем
Ошибка 401 Unauthorized
&&&bash
Пересоздать токен приложения в Nextcloud:
Настройки → Безопасность → Приложения паролей → Создать новый
Обновить NEXTCLOUD_PASS в /opt/3x-ui/backup.sh
&&&
Ошибка 404 Not Found
&&&bash
Проверить путь к папке (регистр и пробелы важны!)
Правильный формат: /Admin/Домашний%20Сервер/OlimpBackup/OlimpVPN/
&&&
Бэкап не создаётся
&&&bash
Проверить права на запись
ls -la /opt/3x-ui/backups/
Проверить место на диске
df -h /opt/3x-ui
Проверить логи cron
journalctl -u cron -n 20 &&&
Время в логах неверное
&&&bash
Установить таймзону
timedatectl set-timezone Asia/Yekaterinburg
Перезапустить cron
systemctl restart cron &&&
Чеклист обслуживания
- Еженедельно: Проверять
/var/log/3x-ui-backup.logпосле воскресенья - Ежемесячно: Убедиться что бэкапы есть на Nextcloud
- Ежеквартально: Протестировать восстановление на тестовом окружении
- При смене пароля Nextcloud: Обновить
NEXTCLOUD_PASSв скрипте - Перед обновлением 3X-UI: Сделать ручной бэкап
⚠️ Важно: Токен приложения
2Fpz6-ocGSz-rRbaZ-efoa3-EDATzимеет доступ только к WebDAV. Никогда не используйте основной пароль аккаунта в скриптах!
Связанные разделы: