[Solved] Проблема с регекспом к DNS запросу в Layer 7 protocol

Тема в разделе "Общие вопросы", создана пользователем pentagrammer, 5 апр 2020.

  1. pentagrammer

    pentagrammer Новый участник

    Есть домашний микрот RouterBOARD 952Ui-5ac2nD, RouterOS v.6.46.4.
    На нем есть домашняя сеть и настроенный openvpn клиент в офисную сеть.
    В офисной сети хосты имею доменные имена в зоне .off - например server1.off user1.off test.srv.off (не спрашивайте почему так - тут так принято).
    На микрот соответственно от провайдера при получении адреса прилетают два DNS хоста.
    При установлении связи по openvpn с офисом - прилетает еще один dns хост.
    Итого в параметрах DNS вижу три прилетевших ip адреса DNS хостов.
    Моя паранойя не хочет чтобы в запросы к dns резолверу в офисе попадали запросы со всех домашних устройств. Поясню - хочется чтобы запросы на резолвинг хостов офисной сети улетали на офисный DNS резолвер, остальные - на DNS резолвер провайдера.
    Прочитал статью про использование layer 7 protocol для маркировки пакетов. Сделал правила в firewall, которые перенаправляют помеченные пакеты на DNS резолвер офиса. Но вот незадача - не могу составить нормальный регэксп к правилу layer 7 protocol, вернее регэксп составил и он прекрасно работает для линуксах, но вот на микротике правило с регэскпом:
    ^.*\.off.*$ маркирует и пакеты с запросом на резолвинг testsrv.off и пакеты на резолвинг office.acme.com...
    Код:
    $ echo -e "offcie.com\nuser1.off\noffice.acme.com\ntest.srv.off\n" |egrep "^.*\.off.*$"
    user1.off
    test.srv.off
    перепробовал кучу вариантов и пришел к выводу, что в регэкспах микротика именно в layer7 protocol мне не удается экранировать точку - микротик ее игнорирует, что приводит к тому что маркировка срабатывает на тех хостах, на которых не должна. Прошу помощи :( у меня осталась лишь одна идея - попробовать символ точки указать в регэкспе как hex-код... ЧЯДНТ?

    PS: проверял, редирект запросов на офисный резолвер прекрасно работает. Вопрос лишь в том, как отфильтровать запросы на резолвинг только офисных хостов.
     
    Последнее редактирование: 5 апр 2020
  2. pentagrammer

    pentagrammer Новый участник

    Отвечу сам себе, я пришел к неправильному выводу. Дело не в работе микрота с регекспами, дело в самом DNS запросе. Я ошибался, когда думал, что DNS запрос сродни запросу http или https. В этом и заключалась вся проблема. Правильный регексп для DNS запроса приведенного выше бюдет:
    Код:
    ^.*\x01off\x01
     
    Илья Князев нравится это.