Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Wireguard LAN к LAN (одна сторона за NAT) не работает

    Wireguard LAN к LAN (одна сторона за NAT) не работает

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Wireguard LAN к LAN (одна сторона за NAT) не работает, RouterOS
     
    btong
    Guest
    #1
    0
    12.05.2023 14:19:00
    Привет, у меня проблемы с настройкой лабораторной конфигурации между двумя CHR на RouterOS 7.9. Топология такая:  
    LAN A -------------> Router A -----> Интернет ------> Провайдер (carrier NAT) --------> Router B ------------> LAN B  
    192.168.77.0/24                                                                                            192.168.88.0/24  

    У Router A публичный IP на внешнем интерфейсе, а у Router B нет из-за carrier NAT у провайдера. Туннель, очевидно, сможет инициировать только Router B, но это нормально.  

    Собрал такую конфигурацию Wireguard:  

    Router A  
    /interface wireguard  
    add listen-port=25070 mtu=1420 name=vpn-to-b  
    /interface wireguard peers  
    add allowed-address=192.168.77.0/24 endpoint-port=25070 interface=vpn-to-b public-key="2UZ1OE9TFaS0V/shFmTPKqLLgOeJjwovZZSbdsk/PhU="  
    /ip address  
    add address=1.2.4.7/24 interface=ether1 network=1.2.4.0  
    add address=192.168.77.1/24 interface=ether2 network=192.168.77.0  
    add address=10.255.255.2/30 interface=vpn-to-b network=10.255.255.0  
    /ip firewall filter  
    add action=accept chain=forward  
    add action=accept chain=input  
    add action=accept chain=output  
    /ip firewall nat  
    add action=accept chain=srcnat dst-address=192.168.88.0/24 src-address=192.168.77.0/24  
    add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.77.0/24  
    /ip route  
    add distance=1 gateway=31.22.44.1  
    add dst-address=192.168.88.0/24 gateway=vpn-to-b  

    Router B  
    /interface wireguard  
    add listen-port=25070 mtu=1420 name=vpn-to-a  
    /interface wireguard peers  
    add allowed-address=192.168.88.0/24 endpoint-address=1.2.4.7 endpoint-port=25070 interface=vpn-to-a public-key="zW5HwHVFpqDwxRt1fKb/Yv+uSNKZhLXYnLm9TwwHsUA="  
    /ip address  
    add address=10.0.0.1/24 interface=ether1 network=10.0.0.0  
    add address=192.168.88.1/24 interface=ether2 network=192.168.88.0  
    add address=10.255.255.1/30 interface=vpn-to-a network=10.255.255.0  
    /ip firewall filter  
    add action=accept chain=forward  
    add action=accept chain=input  
    add action=accept chain=output  
    /ip firewall nat  
    add action=accept chain=srcnat dst-address=192.168.77.0/24 src-address=192.168.88.0/24  
    add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.88.0/24  
    /ip route  
    add distance=1 gateway=10.0.0.2  
    add dst-address=192.168.77.0/24 gateway=vpn-to-a  

    Ключи выглядят нормально:  

    Router A  
    [admin@A] /ip/firewall/nat> /interface wireguard print
    Flags: X - отключен; R - работает  
    0  R name="vpn-to-b" mtu=1420 listen-port=25070 private-key="gM+uCt/2WJajqM55VwpohdZBu2VtQ/l+LIRRYHYNkE0=" public-key="zW5HwHVFpqDwxRt1fKb/Yv+uSNKZhLXYnLm9TwwHsUA="  

    Router B  
    [admin@B] /ip/firewall/nat> /interface wireguard/print
    Flags: X - отключен; R - работает  
    0  R name="vpn-to-a" mtu=1420 listen-port=25070 private-key="cKD9fR/8bKGhunHpcsnivQFJr3ZD7DOEMgGFzqLgq2U=" public-key="2UZ1OE9TFaS0V/shFmTPKqLLgOeJjwovZZSbdsk/PhU="  

    По тому, что я читал, конфигурация вроде правильная, но пинги с B на A не проходят, и я не вижу пакетов между ними. Как я уже сказал, это лабораторная среда (EVE-NG), так что могу легко посмотреть трафик через Wireshark между нодами сети. Буду признателен за любую помощь, потому что пока не понимаю, в чем тут загвоздка. Спасибо!
     
     
     
    mihyli
    Guest
    #2
    0
    16.02.2024 00:19:00
    Хорошо… возобновлю эту тему… У меня настроен wireguard s2s… уже 4 пира работают нормально… без srcnat masquerade на out-interface=wireguard… Но я добавил пятого пира, и без masquerade при out-interface wireguard он не работает… Четыре пира работают — значит, с конфигурацией всё в порядке… Кто-нибудь может объяснить?
     
     
     
    Mesquite
    Guest
    #3
    0
    16.02.2024 02:34:00
    Нет, не без просмотра настроек твоего Wireguard peer на роутере (всех пяти) и настроек Wireguard на клиентском устройстве...
     
     
     
    mihyli
    Guest
    #4
    0
    16.02.2024 08:49:00
    Серверная сторона: клиентская сторона: странно, что я могу пинговать LAN IP-клиента с терминала Mikrotik на сервере, но не могу пинговать LAN IP-сервера. Все остальные туннели работают… но когда я включаю masquerade для исходящего трафика WireGuard, этот туннель начинает работать, а остальные перестают.
     
     
     
    Mesquite
    Guest
    #5
    0
    16.02.2024 12:42:00
    Настройки на стороне клиента должны быть такими: allowed IPs=172.31.1.0/24, 192.168.10.0/24. Не совсем понятно, почему отображается 6 пиров wireguard, предполагаю, что первый из них относится к другому интерфейсу wg на роутере и поэтому не касается вашего вопроса.
     
     
     
    mihyli
    Guest
    #6
    0
    16.02.2024 12:46:00
    Нет, не должен… я не хочу пропускать трафик от других пиров. Все пиры находятся на одном интерфейсе WG… все остальные пиры работают без проблем… конфигурация одинаковая.
     
     
     
    Mesquite
    Guest
    #7
    0
    16.02.2024 14:50:00
    Да, так и должно быть, я бы предположил, что все остальные ваши пиры ошибаются. Чтобы гарантировать, что трафик не пройдет, нужно использовать правила файрвола на стороне принимающего роутера… (то есть предполагается, что пир 5 — это роутер). Например, на стороне Peer 5 добавить:

    action=accept  
    chain=forward  
    in-interface=wireguard  
    dst-address=subnet  
    src-address-list=(СПИСОК КОНКРЕТНЫХ устройств, которым разрешён доступ к LAN через wireguard)  

    И ещё пример на Peer 5:

    action=accept  
    chain=input  
    in-interface=wireguard  
    src-address-list=(Список IP wireguard, которым разрешена удалённая настройка роутера)  

    Другой случай — если пир это отдельное устройство, вроде ПК. Тогда волноваться не о чем, поскольку allowed IPs, скорее всего, установлен на 0.0.0.0/0 (что обычно у одиночных устройств — означает ВСЕ IP, и это не вызывает проблем с безопасностью на самом устройстве). А если всё же стоит, например, 172.31.1.0/24 — подсеть на роутере… то подумайте сами, для ПК нет никакой настройки роутера и подсети LAN, к которой могут подключаться удалённые пользователи.
     
     
     
    mihyli
    Guest
    #8
    0
    16.02.2024 15:02:00
    Эти пиры — другие mikrotik'и… та же самая конфигурация идеально работает на других… даже туннель 10.0.0.0/24 работает…  
    SITE A: 192.168.10.0/24  
    SITE B: 10.0.0.0/24 (разрешённые IP 0.0.0.0/0 на wg-пире)  
    С mikrotik'а с сайта A могу пропинговать, например, 10.0.0.8… но с 192.168.10.5 пинг на 10.0.0.8 не проходит… правила фаервола в порядке… трассировка останавливается на 192.168.10.1, который и есть mikrotik с сайта A.
     
     
     
    Mesquite
    Guest
    #9
    0
    16.02.2024 15:36:00
    В целом только роутер (сервер для рукопожатия) идентифицирует пира по адресу /32 (качество peer-to-peer). Все остальные роутеры (работающие как клиенты для рукопожатия), если не используют 0.0.0.0/0 в allowed IPs (покрывающий все адреса), должны применять для allowed IPs wireguardsubnet, remotesubnet(s), где remote subnets описывают один или оба варианта: удалённые подсети и их пользователи, которые заходят в локальный роутер и идут через туннель, а также удалённые подсети, которые ЛОКАЛЬНЫЕ пользователи выбирают как адреса назначения для трафика, направленного в туннель. Причин волноваться из-за того, что wireguard subnet включён в allowed IPs, нет. Если вам показалось, что нужно волноваться, это бред, ведь вы уже это делаете для любых записей 0.0.0.0/0. По сути, если на основном роутере (сервере для рукопожатия) не разрешить пересылку трафика между пирами, никакого перекрёстного трафика всё равно не будет.

    Добавьте в цепочку:
    chain=forward action=accept in-interface=wireguard out-interface=wireguard

    Таким образом вы настроите правильный формат маршрутизации WireGuard и гарантируете, что удалённые подсети будут учтены на каждом роутере, которому нужно к ним обращаться или отвечать.

    /ip route add dst-address=remotesubnet gateway=wireguard routing-table=main

    Остальное решается с помощью правил файрвола: цепочка input для доступа к конфигурации, forward — для доступа к подсетям или входа в туннель.
     
     
     
    btong
    Guest
    #10
    0
    28.02.2024 22:06:00
    Я вернулся к этому после перерыва. Реализовал шаги из предыдущего ответа и теперь вижу, что с B на A уходят пакеты инициализации Wireguard, но A ни разу не отвечает и не начинает туннель. Вот мои лабораторные настройки (анонимизированы):

    A:  
    /interface ethernet  
    set [ find default-name=ether3 ] name=ether1
    set [ find default-name=ether1 ] name=ether2
    set [ find default-name=ether2 ] name=ether3

    /interface wireguard  
    add listen-port=51820 mtu=1420 name=vpn-to-b  

    /interface wireguard peers  
    add allowed-address=192.168.88.0/24,10.255.255.2/32 endpoint-port=51820 interface=vpn-to-b public-key="zW5HwHVFpqDwxRt1fKb/Yv+uSNKZhLXYnLm9TwwHsUA="  

    /ip address  
    add address=1.2.3.247/24 interface=ether1 network=1.2.3.0  
    add address=192.168.77.1/24 interface=ether2 network=192.168.77.0  
    add address=10.255.255.1/30 interface=vpn-to-b network=10.255.255.0  

    /ip firewall filter  
    add action=accept chain=forward  
    add action=accept chain=input  
    add action=accept chain=output  

    /ip firewall nat  
    add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.77.0/24  

    /ip route  
    add distance=1 gateway=1.2.3.1  
    add dst-address=192.168.88.0/24 gateway=vpn-to-b  

    /system identity  
    set name=RouterA  

    B:  
    /interface ethernet  
    set [ find default-name=ether3 ] name=ether1
    set [ find default-name=ether1 ] name=ether2
    set [ find default-name=ether2 ] name=ether3

    /interface wireguard  
    add listen-port=51820 mtu=1420 name=vpn-to-a  

    /interface wireguard peers  
    add allowed-address=192.168.77.0/24,10.255.255.1/32 endpoint-address=1.2.3.247 endpoint-port=51820 interface=\
    vpn-to-a persistent-keepalive=35s public-key="2UZ1OE9TFaS0V/shFmTPKqLLgOeJjwovZZSbdsk/PhU="  

    /ip address  
    add address=10.0.0.1/24 interface=ether1 network=10.0.0.0  
    add address=192.168.88.1/24 interface=ether2 network=192.168.88.0  
    add address=10.255.255.2/30 interface=vpn-to-a network=10.255.255.0  

    /ip firewall filter  
    add action=accept chain=forward  
    add action=accept chain=input  
    add action=accept chain=output  

    /ip firewall nat  
    add action=masquerade chain=srcnat out-interface=ether1 src-address=192.168.88.0/24  

    /ip route  
    add distance=1 gateway=10.0.0.2  
    add dst-address=192.168.77.0/24 gateway=vpn-to-a  

    /system identity  
    set name=RouterB  

    Я вижу кучу Handshake-пакетов Wireguard, но туннель так и не устанавливается. Кажется, конфигурация почти правильная, что я упускаю?
     
     
     
    Mesquite
    Guest
    #11
    0
    29.02.2024 00:05:00
    VPN — это сервис маршрутизатора. Где вы разрешили рукопожатие в правилах брандмауэра?? На маршрутизаторе B разрешённый IP должен быть /interface wireguard peers add allowed-address=192.168.77.0/24,10.255.255.0/30 Однако это не причина ваших проблем.
     
     
     
    JohnTRIVOLTA
    Guest
    #12
    0
    29.02.2024 04:51:00
    Сторона A, добавьте nat правило /ip firewall nat add action=accept chain=srcnat dst-address=192.168.88.0/24 place-before=1  
    Сторона B, добавьте nat правило /ip firewall nat add action=accept chain=srcnat dst-address=192.168.77.0/24 place-before=1
     
     
     
    btong
    Guest
    #13
    0
    29.02.2024 12:55:00
    Где ты разрешил handshake в правилах фаервола? Правила ip-фильтра в этой лабораторной просто принимают всё — точно не нужно специально указывать этот трафик? На роутере B в allowed IP должно быть /interface wireguard peers add allowed-address=192.168.77.0/24,10.255.255.0/30 Сделано, но, увы, изменений нет. Также на стороне A поставил 10.255.255.0/30, ведь это точно должно быть и там, если на B нужно. Сторона A, добавь nat правило: /ip firewall nat add action=accept chain=srcnat dst-address=192.168.88.0/24 place-before=1 Сторона B, добавь nat правило: /ip firewall nat add action=accept chain=srcnat dst-address=192.168.77.0/24 place-before=1 Сделано, спасибо, но изменений нет. Всё ещё вижу только handshake с 10.0.0.1 → 1.2.3.247.
     
     
     
    JohnTRIVOLTA
    Guest
    #14
    0
    29.02.2024 13:22:00
    В разделе A не используйте «endpoint-port=xxx» на пира WireGuard — удалите это!!!
     
     
     
    btong
    Guest
    #15
    0
    29.02.2024 14:17:00
    Внутри стороны A не используйте «endpoint-port=xxx» на пиру wg — удалите это!!! Я тоже так сделал — но всё равно только односторонний трафик рукопожатия с B → A.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры