┌─────────────────────────┐ ┌─────────────────────────┐
│ MAIN OFFICE │ │ REMOTE OFFICE │
│ MikroTik CHR / VPS │ │ OpenWrt / Zyxel │
│ │ │ │
│ WAN: 87.251.66.254/24 │ │ WAN: DHCP │
│ LAN: 192.168.99.1/24 │ │ LAN: 192.168.1.1/24 │
│ WG: 10.25.25.1/24 │ │ VPN: 10.25.25.2/32 │
└───────────┬─────────────┘ └────────────┬────────────┘
│ │
└──── WireGuard UDP 13231 ⭐ ─────────┘
└──── SSTP TCP 2443 ──────────────────┘
└──── L2TP UDP 1701 ──────────────────┘
| Устройство | Интерфейс | IP-адрес | Маска | Назначение |
|---|---|---|---|---|
| MikroTik CHR | ether1 (WAN) | 87.251.66.254 | /24 | Публичный IP |
| MikroTik CHR | bridge-local (LAN) | 192.168.99.1 | /24 | Локальная сеть |
| MikroTik CHR | wireguard (VPN) | 10.25.25.1 | /24 | WireGuard сервер |
| OpenWrt | br-lan (LAN) | 192.168.1.1 | /24 | Локальная сеть офиса |
| OpenWrt | wg0 (VPN) | 10.25.25.2 | /32 | WireGuard клиент |
┌─────────────────────────────────────────────────────────────────┐
│ ГЛАВНЫЙ ОФИС (VPS/MikroTik CHR) │
│ WAN: 87.251.66.254/24 │
│ LAN: 192.168.99.1/24 │
│ WG: 10.25.25.1/24 (порт 13231) │
│ SSTP: порт 2443 │
└─────────────────────────────────────────────────────────────────┘
│
Интернет (Internet)
│
┌─────────────────────────────────────────────────────────────────┐
│ УДАЛЁННЫЙ ОФИС (OpenWrt/Zyxel) │
│ WAN: DHCP от провайдера │
│ LAN: 192.168.1.1/24 │
│ VPN-клиент: WG / SSTP / L2TP │
└─────────────────────────────────────────────────────────────────┘
Преимущества:
Недостатки:
Порты: UDP 13231 (настраиваемый)
Преимущества:
Недостатки:
Порты: TCP 443 (или 2443)
Преимущества:
Недостатки:
Порты: UDP 500, 1701, 4500 + ESP (протокол 50)
| Протокол | Скорость | Безопасность | Простота | NAT | Рекомендация |
|---|---|---|---|---|---|
| WireGuard | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ✅ | ОСНОВНОЙ |
| SSTP | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ✅ | РЕЗЕРВНЫЙ |
| L2TP/IPsec | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⚠️ | РЕЗЕРВНЫЙ |
# === НАСТРОЙКА ИНТЕРФЕЙСОВ === /interface ethernet set [find default-name=ether1] name=ether1-WAN # LAN bridge /interface bridge add name=bridge-local comment="LAN" /interface bridge port add bridge=bridge-local interface=ether2 /interface bridge port add bridge=bridge-local interface=ether3 /interface bridge port add bridge=bridge-local interface=ether4 # === НАСТРОЙКА IP-АДРЕСОВ === /ip address add address=87.251.66.254/24 interface=ether1-WAN comment="WAN" /ip address add address=192.168.99.1/24 interface=bridge-local comment="LAN" /ip address add address=10.25.25.1/24 interface=wireguard comment="WireGuard" # === DHCP СЕРВЕР ДЛЯ LAN === /ip pool add name=pool-lan ranges=192.168.99.100-192.168.99.200 /dhcp-server add name=dhcp-lan interface=bridge-local address-pool=pool-lan disabled=no /dhcp-server network add address=192.168.99.0/24 gateway=192.168.99.1 dns-server=8.8.8.8,1.1.1.1 # === NAT (MASQUERADE) === /ip firewall nat add chain=srcnat out-interface=ether1-WAN action=masquerade comment="NAT WAN" # === МАРШРУТ ПО УМОЛЧАНИЮ === /ip route add dst-address=0.0.0.0/0 gateway=87.251.66.1 comment="Default Route"
# === СОЗДАНИЕ WIREGUARD ИНТЕРФЕЙСА ===
/interface wireguard add name=wireguard listen-port=13231 private-key="ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА" comment="WireGuard Server"
# === IP-АДРЕС WIREGUARD ===
/ip address add address=10.25.25.1/24 interface=wireguard comment="WireGuard"
# === ДОБАВЛЕНИЕ ПИРОВ (КЛИЕНТОВ) ===
# Пир для OpenWrt (Офис 1)
/interface wireguard peers add \
interface=wireguard \
public-key="ПУБЛИЧНЫЙ_КЛЮЧ_OPENWRT" \
allowed-address=10.25.25.2/32,192.168.1.0/24 \
endpoint-address=0.0.0.0 \
endpoint-port=0 \
persistent-keepalive=25s \
comment="OpenWrt Office"
# Пир для Zyxel (Офис 2)
/interface wireguard peers add \
interface=wireguard \
public-key="ПУБЛИЧНЫЙ_КЛЮЧ_ZYXEL" \
allowed-address=10.25.25.3/32,192.168.2.0/24 \
endpoint-address=0.0.0.0 \
endpoint-port=0 \
persistent-keepalive=25s \
comment="Zyxel Office"
# === FIREWALL ДЛЯ WIREGUARD ===
/ip firewall filter add chain=input protocol=udp dst-port=13231 action=accept comment="WireGuard"
/ip firewall filter add chain=forward in-interface=wireguard out-interface=bridge-local action=accept comment="WG to LAN"
/ip firewall filter add chain=forward in-interface=bridge-local out-interface=wireguard action=accept comment="LAN to WG"
# === МАРШРУТИЗАЦИЯ ===
/ip route add dst-address=192.168.1.0/24 gateway=10.25.25.2 comment="Route to OpenWrt"
/ip route add dst-address=192.168.2.0/24 gateway=10.25.25.3 comment="Route to Zyxel"
# === СОЗДАНИЕ SSL-СЕРТИФИКАТА === /certificate add name=sstp-cert common-name=87.251.66.254 country=RU state=Moscow locality=Moscow organization=MainOffice key-size=2048 days-valid=3650 /certificate sign sstp-cert name=sstp-cert # === НАСТРОЙКА SSTP СЕРВЕРА === /interface sstp-server server set enabled=yes port=2443 certificate=sstp-cert authentication=mschap1,mschap2 keepalive-timeout=60 default-profile=pppoe-remote # === PPP ПРОФИЛЬ === /ppp profile add name=pppoe-remote local-address=10.10.10.1 remote-address=10.10.10.100-10.10.10.200 dns-server=8.8.8.8,1.1.1.1 use-encryption=yes change-tcp-mss=yes comment="SSTP Profile" # === ПОЛЬЗОВАТЕЛИ === /ppp secret add name=sstp-office1 password=Sstp@Pass2026 service=sstp profile=pppoe-remote remote-address=10.10.10.2 comment="OpenWrt SSTP" /ppp secret add name=sstp-office2 password=Sstp@Pass2026 service=sstp profile=pppoe-remote remote-address=10.10.10.3 comment="Zyxel SSTP" # === FIREWALL ДЛЯ SSTP === /ip firewall filter add chain=input protocol=tcp dst-port=2443 action=accept comment="SSTP" # === МАРШРУТИЗАЦИЯ === /ip route add dst-address=192.168.1.0/24 gateway=10.10.10.2 comment="Route to OpenWrt via SSTP"
# === ВКЛЮЧЕНИЕ L2TP СЕРВЕРА === /interface l2tp-server server set enabled=yes use-ipsec=yes ipsec-secret=L2tp@Secret2026 keepalive-timeout=60 default-profile=pppoe-remote # === FIREWALL ДЛЯ L2TP === /ip firewall filter add chain=input protocol=udp dst-port=500 action=accept comment="L2TP IPsec" /ip firewall filter add chain=input protocol=udp dst-port=1701 action=accept comment="L2TP" /ip firewall filter add chain=input protocol=udp dst-port=4500 action=accept comment="L2TP NAT-T" /ip firewall filter add chain=input protocol=ipsec-esp action=accept comment="IPsec ESP" # === ПОЛЬЗОВАТЕЛИ === /ppp secret add name=l2tp-office1 password=L2tp@Pass2026 service=l2tp profile=pppoe-remote remote-address=10.10.10.4 comment="OpenWrt L2TP" /ppp secret add name=l2tp-office2 password=L2tp@Pass2026 service=l2tp profile=pppoe-remote remote-address=10.10.10.5 comment="Zyxel L2TP" # === МАРШРУТИЗАЦИЯ === /ip route add dst-address=192.168.1.0/24 gateway=10.10.10.4 comment="Route to OpenWrt via L2TP"
⚠️ ВАЖНО: OpenWrt 25.12.4 использует пакетный менеджер apk (не opkg!)
# Обновление пакетов apk update # WAN (обычно уже настроен через DHCP) uci set network.wan.proto='dhcp' uci set network.wan.ifname='eth0' uci commit network # LAN uci set network.lan.ipaddr='192.168.1.1' uci set network.lan.netmask='255.255.255.0' uci set network.lan.proto='static' uci commit network # DHCP сервер для LAN uci set dhcp.lan.interface='lan' uci set dhcp.lan.start='100' uci set dhcp.lan.limit='150' uci set dhcp.lan.leasetime='12h' uci commit dhcp # Перезапуск /etc/init.d/network restart /etc/init.d/dnsmasq restart
# === УСТАНОВКА ПАКЕТОВ === apk update apk add wireguard-tools luci-proto-wireguard # === ГЕНЕРАЦИЯ КЛЮЧЕЙ === wg genkey | tee /etc/config/wg_private.key | wg pubkey > /etc/config/wg_public.key chmod 600 /etc/config/wg_private.key # Показать ключи: echo "=== ПРИВАТНЫЙ КЛЮЧ (для клиента) ===" cat /etc/config/wg_private.key echo "" echo "=== ПУБЛИЧНЫЙ КЛЮЧ (для сервера) ===" cat /etc/config/wg_public.key # === НАСТРОЙКА WIREGUARD ИНТЕРФЕЙСА === PRIVATE_KEY=$(cat /etc/config/wg_private.key) uci set network.wg0=interface uci set network.wg0.proto='wireguard' uci set network.wg0.private_key="$PRIVATE_KEY" uci set network.wg0.listen_port='0' uci add_list network.wg0.addresses='10.25.25.2/32' # === ПИР (ГЛАВНЫЙ СЕРВЕР) === uci add network.wg0.wireguard_wg0 uci set network.@wireguard_wg0[-1].public_key='MAIN_SERVER_PUBLIC_KEY' uci add_list network.@wireguard_wg0[-1].allowed_ips='192.168.99.0/24' uci set network.@wireguard_wg0[-1].endpoint_host='87.251.66.254' uci set network.@wireguard_wg0[-1].endpoint_port='13231' uci set network.@wireguard_wg0[-1].persistent_keepalive='25' uci commit network # === FIREWALL ДЛЯ VPN === uci set firewall.vpn=zone uci set firewall.vpn.name='vpn' uci set firewall.vpn.input='REJECT' uci set firewall.vpn.output='ACCEPT' uci set firewall.vpn.forward='REJECT' uci set firewall.vpn.masq='0' uci add firewall forwarding uci set firewall.@forwarding[-1].src='lan' uci set firewall.@forwarding[-1].dest='vpn' uci add firewall forwarding uci set firewall.@forwarding[-1].src='vpn' uci set firewall.@forwarding[-1].dest='lan' uci commit firewall # === МАРШРУТИЗАЦИЯ === uci set network.route_wg=route uci set network.route_wg.interface='wg0' uci set network.route_wg.target='192.168.99.0/24' uci commit network # === ПЕРЕЗАПУСК === /etc/init.d/network restart /etc/init.d/firewall restart # === ПРОВЕРКА === wg show ping -c 4 192.168.99.1
⚠️ ВНИМАНИЕ: SSTP клиент НЕ РАБОТАЕТ на OpenWrt 25.12.4 из-за бага совместимости:
# Установка пакетов (для справки) apk update apk add sstp-client luci-proto-ppp # Настройка интерфейса uci set network.sstp0=interface uci set network.sstp0.proto='sstp' uci set network.sstp0.server='87.251.66.254' uci set network.sstp0.username='sstp-office1' uci set network.sstp0.password='Sstp@Pass2026' uci set network.sstp0.defaultroute='0' uci set network.sstp0.peerdns='0' uci set network.sstp0.sstp_options='--cert-warn' uci commit network /etc/init.d/network restart
# === УСТАНОВКА ПАКЕТОВ === apk update apk add xl2tpd openswan luci-proto-l2tp # === НАСТРОЙКА L2TP ИНТЕРФЕЙСА === uci set network.l2tp0=interface uci set network.l2tp0.proto='l2tp' uci set network.l2tp0.server='87.251.66.254' uci set network.l2tp0.username='l2tp-office1' uci set network.l2tp0.password='L2tp@Pass2026' uci set network.l2tp0.defaultroute='0' uci set network.l2tp0.peerdns='0' uci commit network # === FIREWALL === uci set firewall.vpn=zone uci set firewall.vpn.name='vpn' uci set firewall.vpn.input='REJECT' uci set firewall.vpn.output='ACCEPT' uci set firewall.vpn.forward='REJECT' uci set firewall.vpn.masq='0' uci add firewall forwarding uci set firewall.@forwarding[-1].src='lan' uci set firewall.@forwarding[-1].dest='vpn' uci add firewall forwarding uci set firewall.@forwarding[-1].src='vpn' uci set firewall.@forwarding[-1].dest='lan' uci commit firewall # === МАРШРУТИЗАЦИЯ === uci set network.route_l2tp=route uci set network.route_l2tp.interface='l2tp0' uci set network.route_l2tp.target='192.168.99.0/24' uci commit network # === ПЕРЕЗАПУСК === /etc/init.d/network restart /etc/init.d/firewall restart /etc/init.d/xl2tpd restart # === ПРОВЕРКА === logread -f | grep l2tp
Через веб-интерфейс:
MainOffice10.25.25.3/32192.168.99.0/2487.251.66.254:1323125Через командную строку (CLI):
# Войти в CLI telnet 192.168.1.1 # Настройка WireGuard interface Wireguard0 description "Main Office VPN" private-key "ПРИВАТНЫЙ_КЛЮЧ" address 10.25.25.3/32 peer public-key "ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА" allowed-ip 192.168.99.0/24 endpoint 87.251.66.254:13231 persistent-keepalive 25 exit exit # Маршрут ip route 192.168.99.0/24 10.25.25.1 # Сохранить system configuration save
Через веб-интерфейс:
MainOffice-SSTP87.251.66.2542443sstp-office2Sstp@Pass2026Через веб-интерфейс:
MainOffice-L2TP87.251.66.254l2tp-office2L2tp@Pass2026L2tp@Secret2026| Destination | Gateway | Interface | Comment |
|---|---|---|---|
| 0.0.0.0/0 | 87.251.66.1 | ether1-WAN | Default Route |
| 192.168.99.0/24 | — | bridge-local | LAN |
| 10.25.25.0/24 | — | wireguard | WireGuard |
| 192.168.1.0/24 | 10.25.25.2 | wireguard | OpenWrt Office |
| 192.168.2.0/24 | 10.25.25.3 | wireguard | Zyxel Office |
| 10.10.10.0/24 | — | sstp-server | SSTP Pool |
| Destination | Gateway | Interface | Comment |
|---|---|---|---|
| 0.0.0.0/0 | (WAN gateway) | eth0 | Default Route |
| 192.168.1.0/24 | — | br-lan | LAN |
| 192.168.99.0/24 | 10.25.25.1 | wg0 | Main Office |
| Destination | Gateway | Interface | Comment |
|---|---|---|---|
| 0.0.0.0/0 | (WAN gateway) | eth0 | Default Route |
| 192.168.2.0/24 | — | br-lan | LAN |
| 192.168.99.0/24 | 10.25.25.1 | Wireguard0 | Main Office |
На MikroTik:
# Проверить WireGuard пиры /interface wireguard peers print # Проверить активные PPP сессии /ppp active print # Проверить маршруты /ip route print # Проверить firewall /ip firewall filter print # Тест подключения /ping 192.168.1.1 src-address=192.168.99.1
На OpenWrt:
# Проверить WireGuard статус wg show # Проверить маршруты ip route show # Проверить логи logread -f | grep wireguard # Тест подключения ping -c 4 192.168.99.1 traceroute 192.168.99.1
На Zyxel:
# Через CLI show interface Wireguard0 show ip route ping 192.168.99.1
Симптомы:
wg show показывает пир, но нет handshakeРешение:
# Проверить ключи на обоих концах # На клиенте: cat /etc/config/wg_public.key # На сервере: /interface wireguard peers print # Убедиться, что публичный ключ клиента добавлен на сервер # Убедиться, что публичный ключ сервера добавлен на клиент # Проверить firewall на сервере /ip firewall filter print where comment="WireGuard" # Проверить NAT на клиенте uci show firewall.vpn.masq # Должно быть: firewall.vpn.masq='0'
Симптомы:
/dev/pts/1: unrecognized option
* Ошибка: Could not perform HTTP handshake with server
Причина:
Баг совместимости sstp-client v1.0.20 с pppd v2.5.2 в OpenWrt 25.12.4.
Решение:
* Использовать WireGuard вместо SSTP
* Или откатить pppd до версии 2.4.9
===== Проблема 3: Нет маршрута к удалённой сети =====
Симптомы:
* VPN подключён, но нет доступа к LAN удалённого офиса
* ping 192.168.99.1'' не работаетРешение:
# На клиенте проверить маршрут ip route show | grep 192.168.99 # Если нет — добавить: uci set network.route_wg=route uci set network.route_wg.interface='wg0' uci set network.route_wg.target='192.168.99.0/24' uci commit network /etc/init.d/network restart # На сервере проверить маршрут /ip route print where dst-address=192.168.1.0/24 # Если нет — добавить: /ip route add dst-address=192.168.1.0/24 gateway=10.25.25.2
Симптомы:
Решение:
# На клиенте OpenWrt проверить firewall uci show firewall.vpn # Убедиться, что форвардинг разрешён: uci show firewall.@forwarding # Должно быть: # firewall.@forwarding[0].src='lan' # firewall.@forwarding[0].dest='vpn' # firewall.@forwarding[1].src='vpn' # firewall.@forwarding[1].dest='lan' # На сервере MikroTik проверить firewall /ip firewall filter print where comment~"WG|WireGuard" # Добавить правила если нужно: /ip firewall filter add chain=forward in-interface=wireguard out-interface=bridge-local action=accept /ip firewall filter add chain=forward in-interface=bridge-local out-interface=wireguard action=accept
Симптомы:
Решение:
# На клиенте ОТКЛЮЧИТЬ masquerading для VPN зоны uci set firewall.vpn.masq='0' uci commit firewall /etc/init.d/firewall restart # Проверить: uci show firewall.vpn.masq # Должно быть: '0'
MikroTik:
# Полная проверка WireGuard /interface wireguard print /interface wireguard peers print /ip address print where interface=wireguard /ip route print where dst-address~"192.168" /ip firewall filter print where comment~"WG|WireGuard" # Полная проверка SSTP /interface sstp-server server print /ppp active print where service=sstp /ppp secret print where service=sstp /ip firewall filter print where dst-port=2443 # Тест连通ности /tool torch interface=wireguard /ping 192.168.1.1 src-address=10.25.25.1
OpenWrt:
# Полная проверка WireGuard wg show ip addr show wg0 ip route show | grep 192.168.99 uci show network.wg0 uci show firewall.vpn # Проверка логов logread | grep -E "wireguard|wg0" | tail -20 # Тест连通ности ping -c 4 192.168.99.1 traceroute 192.168.99.1 curl -I http://192.168.99.1
Версия документа: 1.0
Дата: 03.07.2026
Автор: Техническая документация
Оборудование: MikroTik CHR, OpenWrt 25.12.4, Zyxel Keenetic
Antistatus 03.07.2026 09:41