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

    Dstnat в цепочке output?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Dstnat в цепочке output?, RouterOS
     
    Sob
    Guest
    #1
    0
    28.12.2016 03:06:00
    Я думал, что хорошо разбираюсь в RouterOS, но это меня поставило в тупик. В Linux iptables можно изменить адрес назначения для исходящих локально соединений вот так: iptables -t nat -A OUTPUT --dst 192.168.80.1 -j DNAT --to-destination 192.168.84.2. Но в RouterOS, похоже, такого сделать нельзя. Я что-то пропустил или это известное ограничение?
     
     
     
    forsakenzero
    Guest
    #2
    0
    01.01.2018 14:15:00
    Привет! С Новым годом с моим первым постом! Мне очень нужна эта функция, её ещё никак не реализовали? Я могу сделать это, используя другой RB в качестве файрвола для первого RB, но это совсем не удобно.
     
     
     
    juliokato
    Guest
    #3
    0
    04.01.2018 12:35:00
    Плюс один!
     
     
     
    msatter
    Guest
    #4
    0
    01.04.2022 17:17:00
    Это зависит от того, где именно находится твой локоть. Вывод в NAT требует доработки, чтобы убрать часть предупреждающей ленты из мозга, которая теперь уже устарела.
     
     
     
    nescafe2002
    Guest
    #5
    0
    31.01.2017 13:40:00
    Я бы тоже проголосовал за этот вариант. Это может быть полезно для: scoped DNS forwarders; при переносе правил L7 из цепочки dstnat в цепочку forward локальный DNS-сервер и кэш смогут использоваться для локального трафика (например, netwatch) в сетевой подсети с сетевой картой.
     
     
     
    Sob
    Guest
    #6
    0
    31.01.2017 15:09:00
    Если бы это добавили, я бы тоже использовал это для перенаправления DNS по доменам в нескольких местах, потому что это помогло бы хотя бы частично решить некоторые недостатки текущего слоя L7 (обход кеша и неработоспособность для самого роутера). Но очень надеюсь дожить до появления нормальной поддержки этого в DNS-резолвере RouterOS.
     
     
     
    bajodel
    Guest
    #7
    0
    12.02.2017 09:31:00
    Интересная фишка +1
     
     
     
    baragoon
    Guest
    #8
    0
    12.02.2017 17:21:00
    +1 Отправлено с моего iPhone через Tapatalk
     
     
     
    intelfx
    Guest
    #9
    0
    19.02.2017 01:55:00
    Я тоже присоединяюсь к этому запросу, нужна эта функция для условного DNS форвардинга.
     
     
     
    Sob
    Guest
    #10
    0
    17.04.2018 22:54:00
    После прочтения темы sindy «Multiple Road Warrior L2TP/IPsec clients behind NAT - solved» и когда мой мозг перестал болеть, я подумал: «Эй, этот трюк с циклом может сработать и для других задач». Идея в том, чтобы позволить трафику с роутера выйти наружу, затем вернуться обратно на роутер, и после этого можно делать dstnat. В примере показано, как перенаправить собственные DNS-запросы роутера на другой порт, но можно использовать это для чего угодно.

    Сначала помечаем маршрутизацию для исходящего трафика, который нужно dstnat, а затем можно сопоставить это с in-interface=ipip-loop2 в цепочке dstnat.

    /interface bridge  
    add name=loopback protocol-mode=none  

    /ip address  
    add address=127.0.0.2/32 interface=loopback  

    /interface ipip  
    add local-address=127.0.0.1 name=ipip-loop1 remote-address=127.0.0.2  
    add local-address=127.0.0.2 name=ipip-loop2 remote-address=127.0.0.1  

    /ip route  
    add distance=1 gateway=ipip-loop1 routing-mark=loophack  
    add distance=1 dst-address=10.10.10.10/32 gateway=ipip-loop2  

    /ip dns  
    set allow-remote-requests=yes servers=208.67.222.222,208.67.220.220  

    /ip firewall mangle  
    add action=mark-routing chain=output dst-port=53 new-routing-mark=loophack passthrough=no protocol=udp  
    add action=mark-routing chain=output dst-port=53 new-routing-mark=loophack passthrough=no protocol=tcp  

    /ip firewall nat  
    add action=src-nat chain=srcnat out-interface=ipip-loop1 to-addresses=10.10.10.10  
    add action=dst-nat chain=dstnat dst-port=53 in-interface=ipip-loop2 protocol=udp to-ports=5353  
    add action=dst-nat chain=dstnat dst-port=53 in-interface=ipip-loop2 protocol=tcp to-ports=5353  
    add action=masquerade chain=srcnat out-interface=<WAN>

    (10.10.10.10 — это какой-то случайный адрес, который нигде больше не используется)

    Это работает, но теперь мой мозг снова болит.
     
     
     
    aoakeley
    Guest
    #11
    0
    21.08.2018 14:23:00
    Вы, сэр, настоящая легенда. Я использовал это, чтобы решить проблему с The Dude, который работал на роутере, и мне нужно было изменить удалённый порт winbox для некоторых сайтов (чего The Dude не поддерживает). Я несколько часов бился головой, пытаясь настроить dst-nat в исходящей цепочке. Был почти на финише, а эта подсказка довела дело до конца.
     
     
     
    Sob
    Guest
    #12
    0
    23.08.2018 00:27:00
    Спасибо @sindy за это, я бы никогда сам не додумался до такой сумасшедшей идеи.
     
     
     
    Florian
    Guest
    #13
    0
    18.04.2019 12:09:00
    +1, по той же причине, касающейся условной переадресации DNS. Хитрость с циклом классная, но, честно говоря, я бы хотел что-то попроще. Может, RoS7 и новый ядро…
     
     
     
    Sob
    Guest
    #14
    0
    18.04.2019 19:31:00
    На самом деле, трюк с циклом — это действительно грязный приём, но если уж совсем прижало, его можно использовать. Проще было бы сделать dstnat в output доступным в RouterOS. Для этого, кажется, не нужен новый ядро, я встречал упоминания об этом в статьях про Linux 2.4, а в RouterOS, если память не подводит, стоит что-то из серии 3.x. Так что, скорее всего, это уже там есть, просто, видимо, никто не подумал, что кому-то это может понадобиться, и поэтому не открыли доступ. Если действительно нужно, можно попробовать отправить официальный запрос на добавление функции в техподдержку. Но если хочется этого для DNS, то лучше сразу просить именно то, что нужно — Feature Request: Conditional DNS Forwarding. Dstnat в output — это всего лишь костыль, чуть лучше того, что есть сейчас, но всё равно не фонтан.
     
     
     
    Sob
    Guest
    #15
    0
    31.03.2022 20:20:00
    Не могу поверить своим глазам, посмотрите, что возможно в v7:  
    /ip firewall nat  
    add chain=output dst-address=192.168.80.1 action=dst-nat to-addresses=192.168.84.2  
    Вы видите chain=output в “/ip firewall nat”? Маршрутизатор принимает это и не ругается.  

    И ещё одно правило:  
    /ip firewall mangle  
    add chain=postrouting protocol=icmp action=log  

    Затем “ping 192.168.80.1”, и в логе появляется:  
    22:14:10 firewall,info postrouting: in:(unknown 0) out:internal, proto ICMP (type 8, code 0), 192.168.80.183->192.168.84.2, NAT 192.168.80.183->(192.168.80.1->192.168.84.2), len 56  

    Это работает!
     
     
     
    anav
    Guest
    #16
    0
    31.03.2022 20:53:00
    Вы говорите, что функция была сделана видимой (доступной), и теперь люди могут менять адрес назначения в цепочке вывода. Можете привести пример, который был бы понятен тем из нас, кому такое требование встречается очень редко?
     
     
     
    Sob
    Guest
    #17
    0
    01.04.2022 01:11:00
    Помимо упомянутой в этой теме пересылки DNS по доменам (хотя сейчас это обычно лучше решается за счёт улучшенного кэширования DNS и новых записей FWD), вы можете использовать это, например, в качестве завершающего шага для hairpin NAT. Допустим, у вас есть веб-сервер в локальной сети по приватному адресу 192.168.88.20 и dstnat на него с вашего публичного адреса 1.2.3.4. Ваш www.example.tld указывает на 1.2.3.4, так что любой с выхода в интернет может подключиться к серверу. Из вашей локалки это не работает, но вы уже умеете это исправлять с помощью hairpin NAT. Ура, победа — теперь все могут заходить на www.example.tld! Ну, не совсем — одно устройство всё равно не может, это ваш собственный роутер. Если он пытается подключиться к www.example.tld, то обращается к 1.2.3.4, то есть к самому себе, ведь соединение не идёт по цепочке chain=dstnat и не перенаправляется. Но теперь это можно исправить с помощью такого правила:

    /ip firewall nat  
    add chain=output dst-address=1.2.3.4 protocol=tcp dst-port=80,443 action=dst-nat to-addresses=192.168.88.20

    Скорее всего, вам это никогда не понадобится. Но если вдруг возникнет такая необходимость — теперь это возможно.
     
     
     
    anav
    Guest
    #18
    0
    01.04.2022 14:07:00
    Да, так же вероятно, как дотронуться локтем до носа!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры