Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Правила маршрутизации для динамических IP-адресов

    Правила маршрутизации для динамических IP-адресов

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Правила маршрутизации для динамических IP-адресов, RouterOS
     
    NetWorker
    Guest
    #1
    0
    24.01.2020 00:15:00
    Привет всем, я столкнулся с ситуацией, когда мне нужно было добавить маршрутное правило для доменного имени, привязанного к динамическому IP-адресу. Я написал очень короткий и простой скрипт и решил поделиться им. Надеюсь, это сэкономит вам время/усилия, если вам нужно что-то подобное. # Маршрутные правила для динамических IP-адресов
    # Этот скрипт разрешает имя хоста и проверяет, есть ли уже его IP-адрес в маршрутных правилах
    # Если нет, он создает маршрутное правило, которое ищет только в указанной таблице.

    # Сетевик

    # Измените имена здесь:
    :local ip1 [:resolve host1.someonesdomain.com]
    :local table1 "regulartraffic"

    :local ip2 [:resolve host2.someonesdomain.com]
    :local table2 "specialtraffic"

    #--------------------------
    :if ([:len [/ip route rule find where dst-address=$ip1 . "/32"]] = 0) do={
    [/ip route rule add dst-address=$ip1 action=lookup-only-in-table table=$table1]
    :log info "Новый IP добавлен в таблицу $table1"
    }

    :if ([:len [/ip route rule find where dst-address=$ip2 . "/32"]] = 0) do={
    [/ip route rule add dst-address=$ip2 action=lookup-only-in-table table=$table2]
    :log info "Новый IP добавлен в таблицу $table2"
    }
     
     
     
    Leolo
    Guest
    #2
    0
    10.07.2024 20:43:00
    Я всегда получаю эту ошибку, когда пытаюсь выполнить скрипт, написанный NetWorker: “выполнение скрипта script1 из winbox завершилось неудачей, пожалуйста, проверьте его вручную.” У кого-то получилось его запустить? Он работает в Mikrotik OS v7.15.2?
     
     
     
    rextended
    Guest
    #3
    0
    10.07.2024 21:11:00
    У вас есть "проверьте это вручную"? Скрипт полон ошибок для v7 и даже некоторых для v6... Что вы ожидаете от скрипта 2020 года, когда v7 "еще не существовал"? Вот что вы получаете, если слепо копируете и вставляете, не понимая, что делаете...
     
     
     
    Leolo
    Guest
    #4
    0
    10.07.2024 21:43:00
    Да, но что я не понимаю, так это почему такая базовая и важная функция не включена в RouterOS? Динамические IP-адреса ОЧЕНЬ распространены для многих устройств, подключенных к интернету! Вы не можете использовать имена хостов в командах “/routing rule add dst-address=”. Такое очевидное отсутствие функционала должно быть реализовано в RouterOS. Почему нам приходится прибегать к скриптам для такой ВАЖНОЙ и АБСОЛЮТНО БАЗОВОЙ функции?!?
     
     
     
    rextended
    Guest
    #5
    0
    10.07.2024 23:15:00
    Абсолютно для кого? 99% пользователей даже не знают, что такое маршрут...
     
     
     
    Leolo
    Guest
    #6
    0
    10.07.2024 23:55:00
    Я не знаю, как обстоят дела в твоем районе, но все, кого я знаю и кто покупает маршрутизаторы Mikrotik, конечно, знают, что такое маршрут! А причина, по которой я ищу уже написанные скрипты вместо того, чтобы писать свои собственные, в том, что документация Mikrotik ужасно скудная и разбросана по различным сайтам и форумам. На самом деле это полная неразбериха, и за ней очень сложно следить. В чем-то документация Mikrotik напоминает Linux (который тоже ужасно плохо документирован, и чтобы найти что-то полезное, приходится лазить по многим форумам). Как бы мне хотелось, чтобы их документация была такой же хорошей, как документация FreeBSD или OpenBSD. Вот как должна выглядеть документация — высокого качества!
     
     
     
    rextended
    Guest
    #7
    0
    11.07.2024 00:19:00
    Предоставленная документация определенно лучше, чем то, как пользователи форума пишут сообщения. Например, если бы автор темы указал, на какой версии это работает, ты бы не поместил это в v7, верно?
     
     
     
    jaclaz
    Guest
    #8
    0
    11.07.2024 08:11:00
    Конечно, по шкале от 1 до 10 это можно оценить на 2 или 3, в то время как посты пользователей в среднем на 1 или 2 - не очень хороший результат. Честно говоря, если бы не ты, Amm0, erlinden и еще несколько человек, которые хорошо разбираются в синтаксисе скриптов и делятся знаниями на форуме (ребята, спасибо всем вам, тем, кого я назвал, и тем, кого не назвал), было бы невозможно написать даже самый простой скрипт, основываясь только на официальной документации. Особенно это касается - иногда тонких - изменений между версиями v6 и v7, но даже внутри v7 они часто вообще не документированы.
     
     
     
    mrz
    Guest
    #9
    0
    11.07.2024 08:27:00
    Это не связано с синтаксисом скрипта. Вам следует ознакомиться с изменениями конфигурации между версиями v7 и v6. Начните с этой статьи: https://help.mikrotik.com/docs/display/ROS/Moving+from+ROSv6+to+v7+with+examples. На самом деле подсветка синтаксиса покажет вам точно, где ошибка, и даст достаточно хорошую подсказку, куда смотреть. И в завершение, утверждение, что документация плохая, потому что в ней нет точного скрипта под ваши специфические нужды, — это неосведомленность. Документация не предназначена для этого. В ней много примеров скриптов, которые поэтапно объясняют, как, например, решить вопрос с DNS, как выполнять команды и так далее. Вам просто нужно адаптировать всю предоставленную информацию под свои конкретные нужды.
     
     
     
    rextended
    Guest
    #10
    0
    11.07.2024 08:57:00
    Я полностью согласен… Вам просто нужно адаптировать всю предоставленную информацию под свои конкретные нужды. Обычно так работает мой мозг… Очень трудно объяснить другим, как это сделать…
     
     
     
    jaclaz
    Guest
    #11
    0
    11.07.2024 09:27:00
    @mrz Где этот фантастический репозиторий примеров скриптов? Как ленивый, невежественный, ничего не понимающий пользователь, я не смог его найти и всегда вынужден собирать информацию по крупицам по всему форуму (и предоставленную продвинутыми участниками форума, а не Mikrotik).
     
     
     
    Leolo
    Guest
    #12
    0
    11.07.2024 09:33:00
    Ладно, так что быстрая и, скажем так, не очень аккуратная "модернизация" скрипта NetWorker до версии 7 могла бы выглядеть так? :local ip1 [:resolve host1.someonesdomain.com] :local table1 "regulartraffic"

    :local ip2 [:resolve host2.someonesdomain.com] :local table2 "specialtraffic"

    :if ([:len [/routing rule find where dst-address="$ip1/32"]] = 0) do={ [/routing rule add dst-address="$ip1/32" action=lookup-only-in-table table=$table1] :log info "Новый IP добавлен в таблицу $table1" }

    :if ([:len [/routing rule find where dst-address="$ip2/32"]] = 0) do={ [/routing rule add dst-address="$ip2/32" action=lookup-only-in-table table=$table2] :log info "Новый IP добавлен в таблицу $table2" } Возможно, единственное, что не хватает, это как "убрать" правила, упоминающие старые IP-адреса, которые хост использовал в прошлом?? Я постараюсь немного поразмышлять над этим и посмотрю, что можно с этим сделать. РЕДАКТИРОВАТЬ: ммм, похоже, в оригинальном скрипте есть ошибка, из-за которой второе условие для host2 создает проблемы для всего скрипта. Ах, это тоже нуждается в исправлении!
     
     
     
    erlinden
    Guest
    #13
    0
    11.07.2024 10:29:00
    Я использую список адресов, создаю список (например, WAN-IP) и добавляю адрес (blahblah.sn.mynetname.net). Затем вы можете обращаться к списку адресов (по его имени).
     
     
     
    Leolo
    Guest
    #14
    0
    11.07.2024 10:56:00
    Да, это было бы логичным решением. Но по какой-то неизвестной причине Mikrotik не позволяет использовать списки адресов в командах “/routing rule”.
     
     
     
    mrz
    Guest
    #15
    0
    11.07.2024 10:59:00
    правило маршрутизации — это просто интерфейс для linux ip правил. Здесь вы найдете эту «неизвестную причину»: https://www.man7.org/linux/man-pages/man8/ip-rule.8.html
     
     
     
    jaclaz
    Guest
    #16
    0
    11.07.2024 11:14:00
    Информация, которую удивительно нет на: https://help.mikrotik.com/docs/ https://help.mikrotik.com/docs/display/ROS/Policy+Routing Q.E.D.
     
     
     
    Leolo
    Guest
    #17
    0
    11.07.2024 20:35:00
    Хорошо, вот еще одна попытка модифицировать оригинальный скрипт NetWorker. Я не нашел "ортодоксального" способа очистки устаревших правил, которые ссылаются на старые IP-адреса, использовавшиеся хостами в прошлом. Но думаю, что комментарии можно привлечь для выполнения этой функции. :local ip1 [:resolve host1.someonesdomain.com] :local table1 "regulartraffic"

    :local ip2 [:resolve host2.someonesdomain.com] :local table2 "specialtraffic"

    :if ([:len [/routing rule find where dst-address="$ip1/32"]] = 0) do={ [/routing rule remove [find where comment="uglyrule1"]]; [/routing rule add dst-address="$ip1/32" action=lookup-only-in-table table=$table1 comment="uglyrule1"] :log info "Новый IP добавлен в таблицу $table1" }

    :if ([:len [/routing rule find where dst-address="$ip2/32"]] = 0) do={ [/routing rule remove [find where comment="uglyrule2"]]; [/routing rule add dst-address="$ip2/32" action=lookup-only-in-table table=$table2 comment="uglyrule2"] :log info "Новый IP добавлен в таблицу $table2" }
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры