====== Домашний роутер (OpenWrt) ======
''192.168.0.1'' — главная точка периметра. Делает всё: маршрутизация, NAT, DHCP, DNS-фильтрация, Wi-Fi, reverse-proxy, TLS, VPN-сервер, ZeroTier-gateway, мониторинг трафика, watchdog'и для критичных сервисов.
===== Что это за железо =====
* **Модель:** GL.iNet **GL-MT6000** («Flint 2»). MediaTek Filogic SoC, ARM Cortex-A53 4×.
* **OS:** OpenWrt 25.12.0 (r32713-f919e7899d), kernel 6.12.71.
* **Архитектура:** ''aarch64_cortex-a53'', target ''mediatek/filogic''.
* **RAM/диск:** 1 ГБ / 8 ГБ overlayfs (использовано ~37%).
* **Hostname:** ''gl-mt6000''.
* **TZ:** Europe/Moscow (MSK-3), NTP — ''ntp1.stratum2.ru'' + openwrt pool.
* **Установлено пакетов APK:** ~322. (В OpenWrt 25.x менеджер пакетов — ''apk'', не ''opkg''.)
===== Архитектура трафика =====
┌─────────────────────────────┐
│ ИНТЕРНЕТ (Cloudflare DNS) │
└─────────────┬───────────────┘
│
WAN eth1 │ public 95.165.74.182/19
metric 1 │
LTE mbim metric 20 │
(резерв) │ │
│ │
┌────────▼─────────────▼────────┐
│ GL-MT6000 (192.168.0.1) │
│ │
│ nginx :80/:443 ←── *.melnoff.com (TLS, ACME)
│ ZeroTier :9993 ←── ZT-leaf 31040019d0 ⇄ moon
│ AmneziaWG :51820 ←── обфусц. VPN сервер
│ AdGuardHome :53 ←── DNS для LAN
│ dnsmasq :5353 ←── DHCP + .lan имена
│ uhttpd 127.0.0.1:8082 ←── LuCI веб-админка
└──┬──────┬──────┬─────────────┬┘
br-lan.1│ │br-lan.2 │zt7t5aodqt (172.25.30.1/24)
VLAN 1 │ │VLAN 2 │
192.168.0/24 │172.16.10/24 │ ZeroTier overlay
┌──────▼─┐ ┌─▼──────────┐ ┌────▼────────────────┐
│ LAN+ │ │ Docker │ │ Внешние ZT-клиенты │
│ Wi-Fi │ │ fabric │ │ (мак, телефон, │
│ │ │ (PVE VMs │ │ удалённый peer .6) │
│ HomePC │ │ + LXC 107)│ └─────────────────────┘
│ NAS │ │ docker-lxc │
│ ... │ │ vm-2/3/5 │
└────────┘ └────────────┘
* **Wi-Fi и LAN-порты** на одном бридже ''br-lan'' с VLAN 1 (''192.168.0.0/24'').
* **Порт LAN2** дополнительно несёт VLAN 2 (''lan2:t'' — tagged) — это идёт на Proxmox-хост, где он внутри расцеплен на ''172.16.10.0/24'' (Docker-фабрика).
* **ZeroTier** — оверлей через интернет; ZT-демон на роутере имеет IP ''172.25.30.1'' и подключён к **зоне lan** в firewall, поэтому ZT-клиенты автоматически могут ходить в обе VLAN.
* **AmneziaWG** — отдельная зона ''awg'' с forwarding в обе стороны от ''lan'' и ''wan''.
===== WAN: основной канал + LTE-резерв =====
==== Основной WAN ====
* Интерфейс ''eth1'', протокол ''dhcp''. Получает публичный ''95.165.74.182/19'', шлюз ''95.165.64.1''.
* **Это тот же IP, на который смотрят все ваши ''A''-записи в Cloudflare** (''*.melnoff.com'').
==== LTE-резерв ====
* Интерфейс ''lte'', протокол ''mbim'', устройство ''/dev/cdc-wdm0''.
* APN: ''internet.mts.ru'' (МТС).
* Metric 20 — на 19 выше WAN, поэтому используется только при failover.
* Установлен пакет ''gammu'' для управления GSM-модемом (SMS и т.п.).
==== Failover (mwan3) ====
''mwan3'' переключает default-маршрут между WAN и LTE по результатам ping-проб ''8.8.8.8'' и ''1.1.1.1'' раз в 5 секунд:
* **down** после 3 неудач, **up** после 8 удач.
* Политика ''failover'': WAN (member ''wan_m1'', metric 1) приоритетнее LTE (''lte_m2'', metric 2).
===== LAN и VLAN =====
==== Бриджи и интерфейсы ====
^ Логический интерфейс ^ Device ^ IP/маска ^ Состав ^
| ''lan'' | ''br-lan.1'' (VLAN 1) | ''192.168.0.1/24'' | физ. порты ''lan1''-''lan4'' + ''phy0-ap0'' (2.4 GHz) + ''phy1-ap0'' (5 GHz) |
| ''vlan2_vms'' | ''br-lan.2'' (VLAN 2) | ''172.16.10.254/24'' | только ''lan2:t'' (tagged) |
| ''management'' | ''br-mgmt'' | ''192.168.1.1/24'' | физ. порт ''lan5'' (сейчас DOWN) |
| ''zerotier'' | ''zt7t5aodqt'' | (none, IP даёт ZT) | оверлей, IP ''172.25.30.1'' |
| ''awg0'' | ''awg0'' | ''10.10.10.1/24'' | AmneziaWG-сервер |
==== Принцип ====
* **Один физический бридж** ''br-lan'' с фильтрацией VLAN.
* **Wi-Fi** членом VLAN 1 (то есть Wi-Fi-клиенты получают IP в ''192.168.0.0/24'', как и проводные).
* **VLAN 2** идёт **только** через порт ''lan2'' tagged. Туда воткнут PVE, который внутри расцепляет тег и отдаёт Docker-контейнерам адреса ''172.16.10.0/24''.
* **lan5** — отдельный физический mgmt-порт (если воткнуть консольный ноут — попадаешь в ''192.168.1.0/24'', не зависит от VLAN'ов LAN).
===== Wi-Fi =====
^ SSID ^ Band ^ HT mode ^ Encryption ^ Country ^
| ''MELNOFF_2GHz'' | 2.4 GHz | HE40 (Wi-Fi 6) | WPA2-PSK | RU |
| ''MELNOFF_5GHz'' | 5 GHz | HE80 (Wi-Fi 6) | WPA2-PSK | RU |
Оба radio привязаны к сети ''lan'' (VLAN 1), channel auto.
===== ZeroTier на самом роутере =====
⭐ Роутер **сам является участником** ZT-сети ''melnoff-main-network'' и одновременно работает gateway-узлом.
* Установлен **нативный пакет** ''zerotier-1.16.0'' (не Docker).
* **ZT-адрес роутера:** ''31040019d0''. **ZT-IP:** ''172.25.30.1''.
* Интерфейс ''zt7t5aodqt'' включён в **зону lan** firewall — поэтому всё, что приходит из ZT, считается доверенным LAN-трафиком.
* Поэтому контроллер сети раздаёт клиентам маршруты ''192.168.0.0/24 via 172.25.30.1'' и ''172.16.10.0/24 via 172.25.30.1'' — это **этот** роутер.
* UCI-конфигурация: ''allow_managed=1'' (применять выданные IP/маршруты), ''allow_global=0'', ''allow_default=0'', ''allow_dns=0''.
==== ZT-watchdog ====
''/etc/scripts/zt-watchdog.sh'' — каждые 5 минут (cron):
#!/bin/sh
# ZeroTier peer watchdog
PEERS="172.25.30.3 172.25.30.6 172.25.30.10"
FAIL=0
TOTAL=0
for ip in $PEERS; do
TOTAL=$((TOTAL+1))
ping -c1 -W3 $ip >/dev/null 2>&1 || FAIL=$((FAIL+1))
done
if [ $FAIL -gt 1 ]; then
logger -t zt-watchdog "$FAIL/$TOTAL peers unreachable, restarting zerotier"
service zerotier restart
fi
Защищает от залипания ZT-демона: если 2 из 3 контрольных пиров не пингуются — перезапуск.
===== AmneziaWG (VPN-сервер) =====
AmneziaWG = форк WireGuard с обфускацией заголовков для обхода DPI. У вас он работает как **сервер** для клиентов «снаружи» (телефон в роуминге и т.п.).
* Серверный интерфейс ''awg0'', UDP-порт ''51820'', сеть ''10.10.10.0/24'' (сервер = ''.1'').
* MTU ''1280'' (под обфускацию + запас).
* **Параметры обфускации:**
* ''awg_jc=4'' — 4 «мусорных» пакета при handshake (junk count).
* ''awg_jmin=40'', ''awg_jmax=70'' — размер мусорных пакетов 40–70 байт.
* ''awg_h1..h4'' = ''1''/''2''/''3''/''4'' — переопределение magic header'ов.
* ''awg_s1=0'', ''awg_s2=0'' — без дополнительного init-padding.
* Один peer: «Phone», ''10.10.10.2/32'', persistent keepalive 25 с.
* Зона firewall ''awg'': forwarding разрешён ''awg→lan'', ''lan→awg'', ''awg→wan''. Это full-tunnel: с телефона можно ходить и в домашнюю LAN, и в интернет через ваш WAN.
===== Reverse-proxy и TLS =====
Подробный рецепт публикации сервиса под ''.melnoff.com'' — см. [[selfhosted:network|тут]].
* **nginx 1.26.3** (пакет ''nginx-ssl''), также установлены модули ''nginx-mod-luci'' и ''nginx-mod-ubus'' (LuCI работает через nginx, не uhttpd).
* vhost'ы: один файл на сервис в ''/etc/nginx/conf.d/''. Все указывают backend ''http://172.16.10.1:'' — это IP LXC 107 на PVE.
* **acme.sh** (пакеты ''acme-acmesh'' + ''acme-common'' + ''acme''). Сертификаты в ''/etc/acme/_ecc/'', ECDSA-256, Let's Encrypt webroot http-01.
* Cron: ''0 0 * * * /etc/init.d/acme renew''.
* UCI-секция ''acme'' содержит 12 активных cert-блоков: ''nas, git, bw, luci, argo (3 домена), litellm, fooocus, wiki'' + cert для ''admin.corginet.ru''.
* **uhttpd** оставлен на ''127.0.0.1:8082'' (legacy), но реально LuCI ходит через nginx.
===== DNS: AdGuardHome + dnsmasq =====
Двухуровневая схема:
client → 192.168.0.1:53 (AdGuardHome)
│
├── upstream → 1.1.1.1, 8.8.8.8
│
├── rewrites (homepc.zt и т.п.) → 192.168.0.11 / 172.16.10.1
│
└── forward → 127.0.0.1:5353 (dnsmasq, локальные .lan имена + DHCP)
* **AdGuardHome 0.107.73**, конфиг ''/etc/adguardhome/adguardhome.yaml'', web UI на ''192.168.0.1:3000''.
* Слушает DNS на ''0.0.0.0:53'', upstream — Cloudflare и Google.
* Включена фильтрация (''filtering_enabled: true''). Установлены blocklist'ы.
* 12+ ''rewrites'' (''dnsrewrite''-правил) для локальных доменов в зону ''*.melnoff.com''/''homepc.zt'' с разрешением в LAN-IP (''192.168.0.1'' или ''172.16.10.1'').
* **dnsmasq** «спрятан» на ''127.0.0.1:5353'' (потому что 53 занят AdGuard'ом). Отвечает за DHCP и зону ''.lan'' (имена из static-резерваций).
===== DHCP + статические резервации =====
* **LAN** (''192.168.0.0/24''): DHCP диапазон ''.10–.100'', leasetime 12 ч.
* **VLAN 2** (''172.16.10.0/24''): диапазон ''.100–.253'', 12 ч.
* **Management** (''192.168.1.0/24''): диапазон ''.2–.10'', 30 мин.
==== Резервации (статические IP по MAC) ====
^ IP ^ Имя ^ Что (предположительно) ^
| ''192.168.0.5'' | host-5 | Synology NAS |
| ''192.168.0.6'' | host-6 | **PVE** (Proxmox) |
| ''192.168.0.8'' | host-8 | — |
| ''192.168.0.9'' | host-9 | — |
| ''192.168.0.10'' | host-10 | — |
| ''192.168.0.11'' | **HomePC** | хост, на котором живёт ''homepc.zt'' DNS-зона |
| ''192.168.0.18,20,22..24,30..32'' | host-N | разные клиенты |
| ''192.168.0.100,131..134,201'' | host-N | ещё клиенты |
| ''172.16.10.1'' | **docker-lxc** | LXC 107 на PVE — главный Docker-host |
| ''172.16.10.2'' | vm-2 | VM на PVE |
| ''172.16.10.3'' | vm-3 | VM на PVE |
| ''172.16.10.4'' | claude-router | (?) |
| ''172.16.10.5'' | vm-5 | VM на PVE |
===== Firewall =====
==== Default policy ====
''input=REJECT, output=ACCEPT, forward=REJECT, syn_flood=on'' — sane defaults.
==== Зоны ====
^ Зона ^ Input ^ Output ^ Forward ^ Состав ^
| ''lan'' | ACCEPT | ACCEPT | ACCEPT | ''lan'', ''vlan2_vms'', ''management'', ''zerotier'' (''zt7t5aodqt'') |
| ''wan'' | REJECT | ACCEPT | DROP (masq, mtu_fix) | ''wan'', ''lte'' |
| ''awg'' | ACCEPT | ACCEPT | ACCEPT | ''awg0'' |
==== Forwarding ====
* ''lan'' → ''wan'' (обычный outbound)
* ''awg'' → ''lan'', ''awg'' → ''wan'', ''lan'' → ''awg'' (full-tunnel VPN)
==== Открытые порты на WAN ====
^ Port ^ Proto ^ Куда ^ Что ^
| 80 | tcp | local nginx | HTTP redirect to HTTPS + ACME challenge |
| 443 | tcp | local nginx | HTTPS (''*.melnoff.com'' vhosts) |
| 9993 | udp | local | ZeroTier-демон |
| 51820 | udp | local | AmneziaWG |
| 2244 | tcp | DNAT → ''172.16.10.1:2244'' | Gitea SSH |
| 1804 | tcp | DNAT → ''192.168.0.11:1804'' | RDP на HomePC (нестандартный порт) |
| ICMP echo | | | reachability |
| IGMP, DHCP renew | | | системные |
''SSH (22)'' и ''LuCI (uhttpd/nginx)'' — **не** открыты на WAN, только из LAN/AWG/ZT.
===== Service watchdog =====
''/etc/scripts/service-watchdog.sh'' (раз в минуту через cron) автоматически рестартует упавшие сервисы и проверяет AdGuard функционально:
#!/bin/sh
restart_if_dead() {
local name="$1" proc="$2"
if ! pidof "$proc" > /dev/null; then
logger -t watchdog "$name is down, restarting..."
service "$name" restart
sleep 3
if ! pidof "$proc" > /dev/null; then
logger -t watchdog "$name still down after service restart, trying direct start"
case "$proc" in
AdGuardHome)
start-stop-daemon -S -b -x /usr/bin/AdGuardHome -- \
--config /etc/adguardhome/adguardhome.yaml \
--logfile syslog --no-check-update \
--work-dir /etc/adguardhome
;;
esac
fi
fi
}
restart_if_dead xray xray
restart_if_dead byedpi ciadpi
restart_if_dead adguardhome AdGuardHome
restart_if_dead zerotier zerotier-one
# AdGuard functional check
if pidof AdGuardHome > /dev/null; then
result=$(nslookup ya.ru 192.168.0.1 2>&1)
if echo "$result" | grep -q 'SERVFAIL\|REFUSED\|timed out\|connection refused'; then
logger -t watchdog "AdGuard DNS not resolving, force restarting..."
kill -9 $(pidof AdGuardHome) 2>/dev/null
sleep 2
start-stop-daemon -S -b -x /usr/bin/AdGuardHome -- ...
fi
fi
Под мониторингом: ''xray'', ''byedpi/ciadpi'' (anti-DPI инструменты), ''AdGuardHome'', ''zerotier-one''. Помимо ''pidof'' — функциональная DNS-проверка для AdGuard: если упирается в ''SERVFAIL''/''REFUSED'' — kill -9 и пересоздание процесса.
===== Прочие сервисы =====
* **nlbwmon** — учёт трафика по IP/протоколу. БД в ''/var/lib/nlbwmon'', 10 поколений по месяцу. Виден через LuCI (''luci-app-nlbwmon'').
* **miniupnpd-nftables** — UPnP/NAT-PMP. ''secure_mode=1'', разрешает port-mapping в диапазоне ''1024-65535''.
* **xray** — прокси для обхода блокировок (под watchdog'ом).
* **byedpi/ciadpi** — DPI-bypass для http(s) (под watchdog'ом).
* **luci** + русская локализация + темы Bootstrap/Material; под nginx.
* **htop, git, curl, dbus** — стандартный админский тулинг.
===== Cron-таски =====
0 0 * * * /etc/init.d/acme renew # ежедневное обновление сертификатов
3 3 12 12 * /usr/bin/nginx-util check_ssl # годовая проверка SSL
* * * * * /etc/scripts/service-watchdog.sh # каждую минуту
*/5 * * * * /etc/scripts/zt-watchdog.sh # каждые 5 минут
===== Конфиги (UCI exports, секреты замаскированы) =====
==== /etc/config/network ====
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option packet_steering '1'
# === BRIDGES ===
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
config device
option type 'bridge'
option name 'br-mgmt'
list ports 'lan5'
# === BRIDGE VLANs ===
config bridge-vlan
option device 'br-lan'
option vlan '1'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'phy0-ap0'
list ports 'phy1-ap0'
config bridge-vlan
option device 'br-lan'
option vlan '2'
list ports 'lan2:t'
# === L3 INTERFACES ===
config interface 'lan'
option device 'br-lan.1'
option proto 'static'
option ipaddr '192.168.0.1'
option netmask '255.255.255.0'
config interface 'vlan2_vms'
option proto 'static'
option ipaddr '172.16.10.254'
option netmask '255.255.255.0'
option device 'br-lan.2'
config interface 'management'
option proto 'static'
option device 'br-mgmt'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
config interface 'lte'
option proto 'mbim'
option device '/dev/cdc-wdm0'
option apn 'internet.mts.ru'
option metric '20'
config interface 'zerotier'
option proto 'none'
option device 'zt7t5aodqt'
# === AMNEZIAWG SERVER ===
config interface 'awg0'
option proto 'amneziawg'
option private_key '***REDACTED***'
option listen_port '51820'
list addresses '10.10.10.1/24'
option awg_jc '4'
option awg_jmin '40'
option awg_jmax '70'
option awg_s1 '0'
option awg_s2 '0'
option awg_h1 '1'
option awg_h2 '2'
option awg_h3 '3'
option awg_h4 '4'
option mtu '1280'
config amneziawg_awg0
option description 'Phone'
option public_key '1c1KX8pjJ70aNFRha3w6+I5g9n4dZnJSMoiz3gJ0BV8='
option preshared_key '***REDACTED***'
list allowed_ips '10.10.10.2/32'
option persistent_keepalive '25'
==== /etc/config/wireless ====
config wifi-device 'radio0'
option type 'mac80211'
option path 'platform/soc/18000000.wifi'
option band '2g'
option channel 'auto'
option htmode 'HE40'
option country 'RU'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'MELNOFF_2GHz'
option encryption 'psk2'
option key '***REDACTED***'
config wifi-device 'radio1'
option type 'mac80211'
option path 'platform/soc/18000000.wifi+1'
option band '5g'
option channel 'auto'
option htmode 'HE80'
option country 'RU'
config wifi-iface 'default_radio1'
option device 'radio1'
option network 'lan'
option mode 'ap'
option ssid 'MELNOFF_5GHz'
option encryption 'psk2'
option key '***REDACTED***'
==== /etc/config/dhcp (без полного списка резерваций) ====
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option rebind_protection '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option cachesize '1000'
option authoritative '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
option localservice '1'
option filter_aaaa '1'
option port '5353' # AdGuardHome занимает 53
option logdhcp '1'
config dhcp 'lan'
option interface 'lan'
option start '10'
option limit '91'
option leasetime '12h'
option dhcpv4 'server'
list dhcp_option '6,192.168.0.1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config dhcp 'management'
option interface 'management'
option start '2'
option limit '9'
option leasetime '30m'
list dhcp_option '3,192.168.1.1'
list dhcp_option '6,192.168.0.1'
config dhcp 'vlan2_vms'
option interface 'vlan2_vms'
option start '100'
option limit '154'
option leasetime '12h'
list dhcp_option '3,172.16.10.254'
list dhcp_option '6,192.168.0.1'
option dhcpv4 'server'
# Static reservations (~25 хостов) опущены — см. таблицу выше.
==== /etc/config/firewall ====
config defaults
option syn_flood '1'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list network 'lan'
list network 'vlan2_vms'
list network 'management'
list network 'zerotier'
list device 'zt7t5aodqt'
config zone
option name 'wan'
list network 'wan'
list network 'lte'
option input 'REJECT'
option output 'ACCEPT'
option forward 'DROP'
option masq '1'
option mtu_fix '1'
config zone
option name 'awg'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option masq '0'
list network 'awg0'
config forwarding
option src 'lan'
option dest 'wan'
config forwarding
option src 'awg'
option dest 'lan'
config forwarding
option src 'awg'
option dest 'wan'
config forwarding
option src 'lan'
option dest 'awg'
# === WAN INPUT RULES ===
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-ZeroTier-WAN'
option src 'wan'
option proto 'udp'
option dest_port '9993'
option target 'ACCEPT'
config rule
option name 'Allow-HTTP-In'
option src 'wan'
option proto 'tcp'
option dest_port '80'
option target 'ACCEPT'
config rule
option name 'Allow-HTTPS-In'
option src 'wan'
option proto 'tcp'
option dest_port '443'
option target 'ACCEPT'
config rule
option name 'Allow-AWG'
option src 'wan'
option proto 'udp'
option dest_port '51820'
option target 'ACCEPT'
# === DNAT REDIRECTS ===
config redirect
option name 'Proxy-2244' # gitea SSH
option src 'wan'
option dest 'lan'
option proto 'tcp'
option src_dport '2244'
option dest_ip '172.16.10.1'
option target 'DNAT'
config redirect
option name 'HomePC RDP'
option src 'wan'
option dest 'lan'
option target 'DNAT'
option proto 'tcp'
option src_dport '1804'
option dest_ip '192.168.0.11'
==== /etc/config/system ====
config system
option hostname 'gl-mt6000'
option timezone 'MSK-3'
option zonename 'Europe/Moscow'
option ttylogin '0'
option log_size '128'
config timeserver 'ntp'
list server 'ntp1.stratum2.ru'
list server '0.openwrt.pool.ntp.org'
list server '1.openwrt.pool.ntp.org'
==== /etc/config/dropbear ====
config dropbear 'main'
option enable '1'
option PasswordAuth 'on'
option RootPasswordAuth 'on'
option Port '22'
==== /etc/config/mwan3 ====
config globals 'globals'
option mmx_mask '0x3F00'
option local_source 'lan'
config interface 'wan'
option enabled '1'
option family 'ipv4'
option count '1'
option timeout '2'
option interval '5'
option down '3'
option up '8'
list track_ip '8.8.8.8'
list track_ip '1.1.1.1'
config interface 'lte'
option enabled '1'
option family 'ipv4'
option count '1'
option timeout '2'
option interval '5'
option down '3'
option up '8'
list track_ip '8.8.8.8'
list track_ip '1.1.1.1'
config member 'wan_m1'
option interface 'wan'
option metric '1'
option weight '1'
config member 'lte_m2'
option interface 'lte'
option metric '2'
option weight '1'
config policy 'failover'
list use_member 'wan_m1'
list use_member 'lte_m2'
config rule 'default_rule'
option dest_ip '0.0.0.0/0'
option sticky '0'
option use_policy 'failover'
==== /etc/config/zerotier ====
config zerotier 'global'
option enabled '1'
option config_path '/etc/zerotier'
option secret '***REDACTED***'
config network 'melnoff'
option id 'c53bc939c1ce37d2'
option allow_managed '1'
option allow_global '0'
option allow_default '0'
option allow_dns '0'
==== /etc/config/upnpd ====
config upnpd 'config'
option enabled '1'
option enable_natpmp '1'
option enable_upnp '1'
option secure_mode '1'
option download '1024'
option upload '512'
option internal_iface 'lan'
option external_iface 'wan'
option port '5000'
option uuid '***REDACTED***'
config perm_rule
option action 'allow'
option ext_ports '1024-65535'
option int_addr '0.0.0.0/0'
option int_ports '1024-65535'
config perm_rule
option action 'deny'
option ext_ports '0-65535'
option int_addr '0.0.0.0/0'
option int_ports '0-65535'
==== /etc/config/nlbwmon ====
config nlbwmon
option netlink_buffer_size '524288'
option commit_interval '24h'
option refresh_interval '30s'
option database_directory '/var/lib/nlbwmon'
option database_generations '10'
option database_interval '1'
option database_limit '10000'
option protocol_database '/usr/share/nlbwmon/protocols'
list local_network '192.168.0.0/16'
list local_network '172.16.0.0/12'
list local_network '10.0.0.0/8'
list local_network 'lan'
==== /etc/config/acme (только активные сертификаты) ====
config acme
option account_email 'admin@melnoff.com'
option debug '1'
# Все active cert'ы — webroot http-01, ec256 ключ
config cert 'nas'
option enabled '1'
option validation_method 'webroot'
option key_type 'ec256'
list domains 'nas.melnoff.com'
config cert 'git'
option enabled '1'
option validation_method 'webroot'
option key_type 'ec256'
option domains 'git.melnoff.com'
config cert 'bw'
option enabled '1'
option validation_method 'webroot'
option key_type 'ec256'
option domains 'bw.melnoff.com'
config cert 'luci'
option enabled '1'
option validation_method 'webroot'
option webroot '/var/run/acme/challenge'
option key_type 'ec256'
option domains 'luci.melnoff.com'
config cert
option enabled '1'
option validation_method 'webroot'
option webroot '/var/run/acme/challenge'
option key_type 'ec256'
list domains 'admin.corginet.ru'
config cert 'argo'
option enabled '1'
option validation_method 'webroot'
option webroot '/var/run/acme/challenge'
option key_type 'ec256'
list domains 'argo.melnoff.com'
list domains 'chat.argo.melnoff.com'
list domains 'n8n.argo.melnoff.com'
config cert 'litellm'
option enabled '1'
option validation_method 'webroot'
option webroot '/var/run/acme/challenge'
option key_type 'ec256'
option domains 'litellm.melnoff.com'
config cert 'fooocus'
option enabled '1'
option validation_method 'webroot'
option webroot '/var/run/acme/challenge'
option key_type 'ec256'
option domains 'fooocus.melnoff.com'
config cert 'wiki'
option enabled '1'
option validation_method 'webroot'
option key_type 'ec256'
option domains 'wiki.melnoff.com'
===== Замечания и идеи на улучшение =====
==== Безопасность ====
- **''dropbear.RootPasswordAuth = on''** + **''PasswordAuth = on''** — root по паролю включён на SSH. На WAN-зоне порт 22 закрыт (атакующий должен сначала попасть в LAN/AWG/ZT), но это всё равно лишний риск. Лучше отключить и оставить только key-based.
- **UPnP включён** в ''secure_mode'' с правом открывать ''1024–65535''. Любая программа в LAN (включая случайно установленную) может пробить себе порт наружу. Если активно не используется — отключить.
- **RDP проброшен наружу** (''wan:1804 → 192.168.0.11:1804''). RDP — постоянная цель брутфорса, даже на нестандартном порту. Стоит спрятать его за AWG/ZT и убрать redirect.
==== Чего не хватает / что стоит добавить ====
* **SQM/QoS** не установлен. Если канал перегружается — добавить ''sqm-scripts'' для bufferbloat.
* **Регулярный backup конфига**. Скриптом ''sysupgrade -b /tmp/backup.tar.gz'' с копированием на NAS (''192.168.0.5'') по cron'у — занимает 15 минут на настройку.
* **DDNS** не настроен (и не нужен — статичный IP ''95.165.74.182''; если адрес начнёт меняться — добавить).
==== Известные мелочи ====
* ''dnsmasq'' слушает на ''5353'', а не на стандартном ''53'' — потому что 53 занят AdGuard'ом. Если что-то ломится напрямую в dnsmasq — указывайте порт явно.
* ''uhttpd'' (старая luci-веб) висит на ''127.0.0.1:8082''. Реально LuCI отдаётся через nginx (''luci.melnoff.com''), uhttpd можно отключить, но это сломает локальный fallback.
* Имя интерфейса ZeroTier (''zt7t5aodqt'') — сгенерировано из network ID, не редактируйте вручную.