Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • 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
    IPSEC к Fortigate

    IPSEC к Fortigate

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    IPSEC к Fortigate, RouterOS
     
    flynno
    Guest
    #1
    0
    01.07.2018 12:17:00
    Ребята, у меня сейчас большие проблемы с настройкой IPSEC VPN на удалённый роутер Fortigate. У меня СPE SXT Lite5 ac, который подключается к интернету по PPPoE на wlan, а LAN у меня на ether1 с DHCP в сети 192.168.0.0/24.

    Конфигурация IPSEC:
    SRC. Address 0.0.0.0/0  
    DST. Address 0.0.0.0/0  
    SA SRC. Address my-public-ip  
    SA DST. Address remote-public-ip  
    Protocol: ESP  
    Tunnel: включено  
    Level: unique  
    Action: Encrypt  
    Firewall Nat  
    SRC. Address 192.168.0.0/24  
    Action SRC-NAT To Addresses: my-public-ip  

    Тоннель на phase2 устанавливается, и я могу пинговать удалённый веб-сервер с CPE, но не могу с LAN-компьютера.

    Ниже требования по VPN на стороне Fortigate:  
    Internet Key Exchange Configuration  
    Authentication Algorithm: SHA-512  
    Encryption Algorithm: AES-256-CBC  
    Lifetime (seconds): 86400  
    Phase 1 Negotiation Mode: MAIN  
    Perfect Forward Secrecy: Diffie-Hellman Group 20  

    IPsec Configuration  
    Protocol: ESP  
    Authentication Algorithm: SHA-512  
    Encryption Algorithm: AES-256-CBC  
    Lifetime (seconds): 3600  
    Mode: Route Based  
    Perfect Forward Secrecy: Diffie-Hellman Group 20  

    У меня на Mikrotik используется Diffie-Hellman Group 2 и ecp384.

    Правила фаервола:  
    /ip firewall filter  
    add action=accept chain=input comment=“allow IPsec NAT” dst-port=4500 protocol=udp  
    add action=accept chain=input comment=“allow IKE” dst-port=500 protocol=udp  
    add action=accept chain=input comment=“allow l2tp” dst-port=1701 protocol=udp  
    add action=accept chain=input comment=“allow pptp” dst-port=1723 protocol=tcp  
    add action=accept chain=input comment=“allow sstp” dst-port=443 protocol=tcp  
    add chain=input comment=“ipsec-ah” proto=ipsec-ah action=accept  
    add chain=input comment=“ipsec-esp” proto=ipsec-esp action=accept  

    Если кто-то сможет помочь с решением этой проблемы — награжу.
     
     
     
    flynno
    Guest
    #2
    0
    27.07.2018 11:03:00
    Привет, Sindy! Спасибо за твой очень подробный и полезный ответ. Я добавил команду /ip ipsec policy add place-before=0 action=none src-address=0.0.0.0/0 dst-address=192.168.0.0/24 place-before=0. Теперь я могу открыть веб-сервер по его IP-адресу в браузере, но когда пытаюсь зайти на доменное имя самого веб-сервера, мне пишет “Сервер не найден” и страница не загружается.

    IPSEC Gateway a.a.a.a  
    Webserver b.b.b.b  

    Мне сказали, что трафик к веб-серверу должен маршрутизироваться через IPSEC Gateway:

    IPSEC Gateway a.a.a.a  
    Webserver b.b.b.b

    Я добавил маршруты в /IP Routes:  
    Dst. address a.a.a.a Gateway WAN  
    Dst. address b.b.b.b Gateway WAN

    Я могу пинговать веб-сервер и свой ПК в локальной сети, но не могу загрузить ни один сайт или домен веб-сервера — только IP веб-сервера можно открыть из браузера.

    Буду очень признателен за любую помощь!
     
     
     
    sindy
    Guest
    #3
    0
    27.07.2018 12:32:00
    То, что вы пока не учитываете, — это то, что стандартный IPsec (тот, который вы используете) работает независимо от маршрутизации, точнее, он поверх маршрутизации, после того как та уже выполнена. В отличие от других типов VPN, IPsec не создает туннельный интерфейс, который можно использовать в качестве шлюза. Ему достаточно, чтобы обычная маршрутизация отправила пакет куда-то, а не в никуда. А потом, после всех операций маршрутизации и файрволла, включая NAT, политики IPsec проверяют пакеты и, если им что-то нравится, "перехватывают" их, шифруют и отправляют через соответствующие туннели IPsec, которые называются security associations.

    Так что в вашем случае, когда основная политика IPsec говорит, что всё (dst-address=0.0.0.0/0) должно идти через туннель, конкретный маршрут, который вы добавили для веб-сервера, то есть dst-address=b.b.b.b gateway=WAN, ничего в этом поведении не меняет. Поскольку вы можете открыть веб-страницу сервера через браузер, если вводите IP-адрес, но не можете открыть по домену, я предположу, что проблема связана с работой DNS.

    Первым делом попробуйте пропинговать доменное имя сервера, и если пинг не проходит, значит, проблема точно в DNS. Скорее всего, ваши DNS-серверы недоступны через IPsec-туннель, потому что они находятся в другом сегменте вашей локальной сети, а не в 192.168.0.0/24, или Fortigate блокирует DNS-запросы ко всем серверам, кроме тех, которые он разрешил, или же настроенные вами DNS-серверы не принимают запросы с адреса, на который Fortigate делает NAT (если он его делает).

    Также возможно, что имя сервера зарегистрировано только в DNS Fortigate, а публичные DNS про него ничего не знают, и Fortigate не перенаправляет DNS-запросы своим серверам.

    В общем, опишите ситуацию подробнее, чтобы получить более точный совет. Я понимаю, что молчание — золото, но не тогда, когда нужна поддержка.
     
     
     
    flynno
    Guest
    #4
    0
    27.07.2018 14:41:00
    Привет, Синди! Я могу пропинговать доменное имя веб-сервера, и оно переводится в IP-адрес. Настройки DNS-сервера автоматически выдаются мне по PPPoE на Mikrotik, и у меня включены удалённые запросы с IP роутера 192.168.0.1, добавленным в список DNS. Если отключить в PPPoE опцию «Use Peer DNS», то можно ввести свои настройки — я так и сделал, пробовал DNS от Google: 8.8.8.8, 8.8.4.4. Я также пытался убрать DNS-серверы из DHCP-раздачи на роутере и добавить DNS напрямую в настройки сетевой карты на ПК. Как только IPSEC отключается, интернет работает нормально, но когда включён — нет. Админ сказал, что они не указывают конкретный DNS, так как адрес веб-сервера должен разрешаться любым DNS-сервером. При пинге веб-сервера я вижу, что трафик идёт через туннель. Админ также сказал, что у них всё нормально: он видит успешные подключения к веб-серверу и передачу данных. Значит, проблема со стороны моего оборудования.
     
     
     
    sindy
    Guest
    #5
    0
    27.07.2018 15:19:00
    Итак, подытожим: когда туннель не работает, ты можешь заходить на веб-страницы по имени и пинговать серверы по имени, кроме того сервера, для которого требовался IPsec, так? Когда туннель работает, ты можешь заходить на веб-страницы и пинговать серверы по IP-адресу, включая тот самый сервер с IPsec, так? Когда туннель работает: можешь ли ты пинговать серверы в интернете по имени (выбери те серверы, которые ты сегодня еще не посещал, чтобы кеш DNS не влиял на результат)? Можешь ли пинговать интересующий тебя сервер по имени? И еще объясни, пожалуйста, uplink. Ты упомянул PPPoE на своем 'Tik и роутер с адресом 192.168.0.1 — значит, у тебя два uplink? Обычно ADSL-роутеры либо работают как роутеры, тогда на 'Tik нельзя запустить pppoe-клиент, либо работают как мосты, и тогда ты запускаешь pppoe, но в таком случае DNS на роутере не работает, потому что он не видит интернет, а pppoe передается тебе.
     
     
     
    flynno
    Guest
    #6
    0
    27.07.2018 16:12:00
    Итак, подведём итоги: при отключённом туннеле вы можете заходить на веб-страницы по имени и пинговать сервера по имени, за исключением сервера, для которого нужен был IPsec, верно? При включённом туннеле вы можете заходить на веб-страницы и пинговать сервера по адресу, включая тот самый сервер, для которого нужен был IPsec, да или нет?

    Нет, я не могу зайти ни на какие сайты, только IP веб-сервера доступен.

    При включённом туннеле: можете ли вы пинговать сервера в интернете по имени (выберите сервера, которые вы сегодня не посещали, чтобы DNS-кэш не влиял на результаты)? Нет.

    Можете ли вы пинговать интересующий сервер по имени? Нет, могу пинговать веб-сервер только по IP.

    У меня Mikrotik SXT CPE, режим беспроводной станции Wlan на ISP Sector AP, PPPoE работает на Wlan, а ether1 подключён к моему ПК, DHCP работает на ether1 192.168.0.0/24. Wlan и ether1 не объединены в мост.
     
     
     
    sindy
    Guest
    #7
    0
    27.07.2018 18:50:00
    Ну, неужели я пропустил ключевую информацию, что туннель существует только для доступа к конкретному серверу b.b.b.b и на самом деле не передаёт никакой другой трафик, кроме того, который идёт на веб-сервер? Потому что в политике из твоего первого поста было сказано, что этот VPN должен брать на себя весь интернет-трафик, но может быть именно эта ошибка и вызвала целую цепочку недоразумений?
     
     
     
    flynno
    Guest
    #8
    0
    27.07.2018 19:32:00
    У меня есть IP-адрес, который предназначен только для использования VPN и не для обычного серфинга в интернете. IPSEC VPN используется для безопасного доступа к порталу входа на удалённый веб-сервер, а не для просмотра интернета через VPN. Но когда я пытаюсь использовать IP веб-сервера, видно, что я могу дотянуться до него и даже пинговать с ПК и устройства Tik, однако страница входа не открывается. Всё меняется, когда я применяю ваше правило: /ip ipsec policy add place-before=0 action=none src-address=0.0.0.0/0 dst-address=192.168.0.0/24 place-before=0 — только тогда я могу зайти на веб-сервер по IP. Если это правило отключить, доступа к веб-серверу по IP вообще нет, так что это был шаг в правильном направлении. Конфигурация IPSEC: Тип VPN — маршрутный. Селекторы должны быть 0.0.0.0/0. Рекомендуется, чтобы клиентская среда была NAT’ирована на публичный IP-адрес.
     
     
     
    sindy
    Guest
    #9
    0
    27.07.2018 20:17:00
    Проблема в том, что «VPN селекторы 0.0.0.0/0-0.0.0.0/0», что по-другому называют ipsec policy у Mikrotik, означают отправку всего трафика через туннель. И если с локальной сетью было просто «отрубиться», то вот отсеять весь трафик, кроме IP веб-сервера (b.b.b.b), уже не так просто. Поэтому сначала попробуй поменять политику с src-address=0.0.0.0/0 dst-address=0.0.0.0/0 на src-address=0.0.0.0/0 dst-address=b.b.b.b/32; если туннель установится — отлично, если нет — придётся заморочиться с более сложными правилами action=none перед этим.
     
     
     
    flynno
    Guest
    #10
    0
    28.07.2018 12:03:00
    IPSEC Gateway a.a.a.a Webserver b.b.b.b  
    /ip ipsec policy print  
    Flags: T - шаблон, X - отключено, D - динамическое, I - недействительное, A - активно, по умолчанию 0  

    ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=b.b.b.b dst-port=any protocol=all action=none  
    1  A  

    ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=0.0.0.0/0 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=My-Public-IP sa-dst-address=a.a.a.a proposal=default ph2-count=1  

    Туннель устанавливается, но после изменений я не могу получить доступ к веб-порталу ни по домену, ни по IP. Спасибо за помощь,  
    Синди
     
     
     
    sindy
    Guest
    #11
    0
    28.07.2018 12:37:00
    То, что ты сделал, — это не то, что я имел в виду. Политика с action=none должна была остаться без изменений (то есть с dst-address=192.168.0.0/24) на данный момент. Политика с action=encrypt должна иметь dst-address=b.b.b.b вместо dst-address=0.0.0.0/0. В итоге должно быть вот так:

    _/ip ipsec policy print  
    Flags: T - шаблон, X - отключено, D - динамическое, I - неверное, A - активно, default  
    0     ;;; VPN  
    src-address=0.0.0.0/0 src-port=any dst-address=192.168.0.0/24 dst-port=any protocol=all action=none  
    1  A  ;;; VPN  
    src-address=0.0.0.0/0 src-port=any dst-address=b.b.b.b/32 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=My-Public-IP sa-dst-address=a.a.a.a proposal=default ph2-count=1_

    Но, как я и говорил — пэр может не принять соединение, потому что он получает информацию о политике, которую мы используем по отношению к нему. Если он принимает соединения только с политикой dst-address=0.0.0.0/0, у нас возникает проблема, которую нужно обойти. С другой стороны, если пэр примет и все заработает, политика с action=none станет лишней, и её можно будет удалить.
     
     
     
    flynno
    Guest
    #12
    0
    28.07.2018 13:00:00
    /ip ipsec policy print  
    Flags: T - шаблон, X - отключено, D - динамическое, I - недействительно, A - активно, default 0  
    ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=192.168.0.0/24 dst-port=any protocol=all action=none  
    1 A  
    ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=b.b.b.b/32 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=My-Public-IP sa-dst-address=a.a.a.a proposal=default ph2-count=1  

    Я настроил конфигурацию, как выше, но соединение с новыми изменениями не устанавливается. Есть ли способ проверить, что происходит с моей стороны, чтобы я мог здесь представить результаты, или это всё наугад?
     
     
     
    sindy
    Guest
    #13
    0
    28.07.2018 14:24:00
    Это именно то, чего я и ожидал. Администратор Fortigate считает, что любое устройство в мире должно работать так же, как его Fortigate, поэтому он даже не догадывается, что принуждение людей использовать политику, которая совпадает со всем трафиком, может вызвать проблемы у клиентов. Чтобы обойти это, вам понадобится куча политик с action=none, которые будут соответствовать пакетам, не предназначенным для его сети, так что только те, что пройдут мимо всех этих политик без совпадений, в итоге попадут на политику 0.0.0.0/0->0.0.0.0/0 и дойдут до него. Чтобы упростить, я покажу метод на первых двух байтах IP-адреса. Надеюсь, вы знакомы с преобразованиями между двоичной и десятичной системами, а также с принципом построения IP-маски.

    Итак, пусть первые два байта b.b.b.b — 217.125. В двоичном виде это 1101 1001 0111 1101. Нужно идти побитно и создавать все префиксы разной длины от 1 до 32, которые совпадают с этим значением во всех битах, кроме последнего:

    1101 1001 0111 1101 0…   … … => 0.0.0.0/1  
    10.. …   … … => 128.0.0.0/2  
    111. …   … … => 224.0.0.0/3  
    1100 …   … … => 192.0.0.0/4  
    1101 0…   … … => 208.0.0.0/5  
    1101 11..   … … => 220.0.0.0/6  
    1101 101.   … … => 218.0.0.0/7  
    1101 1000   … … => 216.0.0.0/8  
    1101 1001   1… … => 217.128.0.0/9  
    1101 1001   00.. … => 217.0.0.0/10  
    1101 1001   010. … => 217.64.0.0/11  
    1101 1001   0110 … => 217.96.0.0/12  
    1101 1001   0111 0… => 217.112.0.0/13  
    1101 1001   0111 10.. => 217.120.0.0/14  
    1101 1001   0111 111. => 217.126.0.0/15  
    1101 1001   0111 1100 => 217.124.0.0/16  

    Для реального адреса b.b.b.b нужно вычислить все 32 префикса с несоответствующей подсетью именно так, и использовать каждый из них как dst-address в /ip ipsec policy с action=none, размещённой выше единственной политики с action=encrypt и dst-address=0.0.0.0, которую требует Fortigate. Хорошая новость в том, что если делать именно так, можно удалить ранее добавленную политику с action=none, так как одна из этих заменит её.

    Но может быть гораздо проще способ, который стоит попробовать первым. Парень просит отправлять пакеты с публичного адреса в качестве исходного, потому что ему нужно быть уверенным, что два клиента не пришлют пакеты с одного и того же адреса, чтобы Fortigate знал, куда направлять ответы. Но необязательно, чтобы это был тот же самый публичный адрес, с которого вы создаёте туннель.

    Так что сделайте следующее — оставьте конфигурацию с двумя политиками, которые были вчера: action=none src-address=0.0.0.0/0 dst-address=192.168.0.0/24 и action=encrypt src-address=0.0.0.0/0 dst-address=0.0.0.0/0, а сверху над action=encrypt добавьте ещё одну с action=none и src-address=ваш.wan.ip.address dst-address=0.0.0.0/0.

    Это позволит туннелю успешно установиться, но при этом запретит что-либо отправлять через него, потому что всё, что вы отправляете вне вашей локальной сети, сначала маскируется (src-nat) под ваш публичный WAN-адрес.

    Теперь возьмите какой-нибудь публичный IP-адрес, который вы контролируете и уверены, что он никогда не будет подключаться к VPN на Fortigate, например, m.m.m.m, и добавьте следующее правило выше текущего правила action=masquerade или action=src-nat, которое вы используете в /ip firewall nat chain=srcnat:

    /ip firewall nat add chain=srcnat action=src-nat dst-address=b.b.b.b to-addresses=m.m.m.m

    Таким образом, исходный адрес пакетов, которые вы отправляете на b.b.b.b, будет заменён на m.m.m.m, и вторая политика с action=none их проигнорирует, а политика с action=encrypt их сопоставит и отправит Fortigate.
     
     
     
    flynno
    Guest
    #14
    0
    28.07.2018 15:46:00
    IPSEC Gateway a.a.a.a Вебсервер b.b.b.b  
    0     ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=192.168.0.0/24 dst-port=any protocol=all action=none  
    1     ;;; VPN src-address=My-Public-IP/32 src-port=any dst-address=0.0.0.0/0 dst-port=any protocol=all action=none  
    2  A  ;;; VPN src-address=0.0.0.0/0 src-port=any dst-address=0.0.0.0/0 dst-port=any protocol=all action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=My-Public-IP sa-dst-address= a.a.a.a proposal=default ph2-count=1  

    Я добавил второй PPPoE с новым публичным IP. Таким образом, сейчас запущено два PPPoE одновременно с двумя разными публичными адресами. Это правильно?  

    Правило файрвола:  
    /ip firewall nat add chain=srcnat action=src-nat dst-address=b.b.b.b to-addresses=New-Public-IP  

    Результаты: туннель устанавливается, но я не могу достучаться до вебсервера ни по доменному имени, ни по IP-адресу вебсервера. Если я отключаю второй PPPoE и убираю добавленное правило NAT в файрволе, то могу нормально пользоваться интернетом с новой политикой и туннель устанавливается.  

    Спасибо, что уделили время этому вопросу.
     
     
     
    sindy
    Guest
    #15
    0
    28.07.2018 16:03:00
    Не знаю, используются у вас статические или динамические адреса на PPPoE, но по вашему описанию кажется, что они динамические, а это делает настройку довольно нестабильной (как только адреса меняются, связь перестает работать, пока вы не подкорректируете правила под новые адреса). У того, у кого 32 исключающие политики, с этим проблем нет. В любом случае, измените настройки /interface pppoe-client так, чтобы тот, у кого обычный публичный адрес, мог добавлять default gateway, а другой — нет. Тогда, даже если второй интерфейс будет активен, пакеты всегда будут выходить через первый. Публичный адрес первого pppoe (который разрешено назначать шлюзом по умолчанию) должен совпадать с адресом в политике с action=none, а публичный адрес второго pppoe (который не разрешено использовать как шлюз по умолчанию) должен быть в правиле, которое я вам дал. Чтобы проверить, пришлите, пожалуйста, вывод команд /interface pppoe-client export hide-sensitive и /ip firewall nat export, предварительно заменив IP-адреса на свои.
     
     
     
    flynno
    Guest
    #16
    0
    28.07.2018 16:12:00
    Маршрут по умолчанию 0.0.0.0/0 шлюз pppoe-out1

    /interface pppoe-client
    add disabled=no interface=wlan2 keepalive-timeout=60 name=pppoe-out1 use-peer-dns=yes user=*******1
    add disabled=no interface=wlan2 name=pppoe-out2 user=*******2

    /ip firewall nat
    add action=src-nat chain=srcnat comment="Public-Ip-2 to Webserver IP" dst-address=b.b.b.b to-addresses=m.m.m.m
    add action=src-nat chain=srcnat comment="Public-Ip-1 Src-Nat" src-address=192.168.0.0/24 to-addresses=z.z.z.z
     
     
     
    sindy
    Guest
    #17
    0
    28.07.2018 16:20:00
    Хорошо. При такой настройке вы можете нормально выходить в интернет, туннель IPsec поднят, но не можете подключиться к серверу b.b.b.b ни по IP, ни по имени? И когда пытаетесь, то можете увидеть в /ip ipsec installed-sa с вашего z.z.z.z на их a.a.a.a счетчик пакетов и байт, а в обратном направлении – нет?
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры