Не работает Hairpin NAT

Тема в разделе "Вопросы и решение проблем", создана пользователем Vdmit, 22 май 2021.

  1. Vdmit

    Vdmit New Member

    Регистрация:
    22 май 2021
    Сообщения:
    8
    Симпатии:
    1
    Баллы:
    3
    Пол:
    Мужской
    Помогите разобраться в чем может быть проблема ? Не работает Web сервер из локальной сети, прописал правила NAT все по инструкции, снаружи работает, а вот внутренний нет.
    вот такие два правила для внутренних , замена назначенца и источника
    ip=1.1.1.1 - адрес внешнего интерфейса роутера
    ip=2.2.2.2- адрес web сервера
    ;;; Web 1
    chain=dstnat action=dst-nat to-addresses=2.2.2.2 protocol=tcp
    src-address=192.168.0.0/24 dst-address=1.1.1.1 dst-port=80 log=no
    log-prefix=""

    4 ;;; Web 2
    chain=srcnat action=masquerade protocol=tcp src-address=192.168.0.0/24
    dst-address=2.2.2.2 dst-port=80 log=no log-prefix=""

    Может какие-то правила из Filter Rules
    этот вариант каким трафиком считается forward ? или input, output ?
    куда еще смотреть. Если на локальном ПК в hosts прописать домен и ip web то работает, значит сервак доступен из локалки.
    Таким же образом и видеорегистратор нужно будет прописать !
     
  2. alexey

    alexey Moderator

    Регистрация:
    16 мар 2021
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    6
    Если web сервер и локальная сеть в разных подсетях (2.2.2.2 и 192.168.0.0/24) - должно работать без Hairpin NAT
    Иначе примерно так:
    /ip firewall nat
    add chain=dstnat dst-address=внешний_IP protocol=tcp dst-port=80 action=dst-nat to-address=web_сервер (вероятно уже есть)
    add chain=srcnat out-interface=WAN action=masquerade (вероятно уже есть)
    add chain=srcnat src-address=локальная_сеть dst-address=web_сервер protocol=tcp dst-port=80 out-interface=LAN action=masquerade
     
  3. Vdmit

    Vdmit New Member

    Регистрация:
    22 май 2021
    Сообщения:
    8
    Симпатии:
    1
    Баллы:
    3
    Пол:
    Мужской
    Не работает ! Web сервер и ПК локалки в разных подсетях. Здесь засады нет я так понимаю, Если на локальном ПК в hosts прописать домен и ip web то работает, значит сервак доступен из локалки.
    194.226.129.142-внешний ip
    192.168.49.11 web сервер
    bridge1- vlan локалки

    вот такие правила прописаны

    в этом правиле подменяется назначенец (т.е. юзер идет на внешний ip=194.226.129.142, а он подменяется на web=192.168.49.11)
    ;;; Web 1
    chain=dstnat action=dst-nat to-addresses=192.168.49.11 protocol=tcp
    src-address=192.168.0.0/24 dst-address=194.226.129.142 dst-port=80 log=no
    log-prefix=""
    а в этом правиле подменяется отправитель на адрес роутера
    4 ;;; Web 2
    chain=srcnat action=masquerade protocol=tcp src-address=192.168.0.0/24
    dst-address=192.168.49.11 out-interface=bridge1 dst-port=80 log=no
    log-prefix=""
    это для внешних клиентов
    5 ;;; WEB
    chain=dstnat action=dst-nat to-addresses=192.168.49.11 to-ports=80
    protocol=tcp src-address-list=!haker-web in-interface=bridge0 dst-port=80
    log=no log-prefix=""

    если включить service port80 то перебрасывает на web морду микротика
     
    Последнее редактирование: 24 май 2021
  4. alexey

    alexey Moderator

    Регистрация:
    16 мар 2021
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    6
    Так сделали?
    chain=dstnat action=dst-nat to-address=192.168.49.11 protocol=tcp dst-address=194.226.129.142 dst-port=80 to-port=80 log=no log-prefix="" src-address=192.168.0.0/24
    chain=dstnat action=dst-nat to-address=192.168.49.11 protocol=tcp dst-address=194.226.129.142 dst-port=80 src-address-list=!haker-web to-port=80
    chain=srcnat src-address=192.168.0.0/24 dst-address=192.168.49.11 protocol=tcp dst-port=80 out-interface=bridge0 action=masquerade
    А разве не должен?
     
  5. Vdmit

    Vdmit New Member

    Регистрация:
    22 май 2021
    Сообщения:
    8
    Симпатии:
    1
    Баллы:
    3
    Пол:
    Мужской
    разобрался, оказывается если ПК , который идет на сайт и web сервер в разных подсетях достаточно одного правила, аналогичного внешнему пробросу

    chain=dstnat action=dst-nat to-addresses=ip_web protocol=tcp dst-address=ip_внешний in-interface=vlan dst-port=80 log=no log-prefix=""

    vlan именно тот , в котором торчит ПК внутреннего клиента, причем Apache видит именно ip конкретного клиента!
    у меня несколько подсетей отдельных, с которых нужно ходить на сайт местного web сервера, vlan-ы внутренние объединены в bridge1, но я пробовал прописывать
    in-interface=bridge1 -НЕ РАБОТАТЕТ ! Пришлось прописать это правило для всех vlan -нов !

    Если web сервер и ПК внутренне сети в одной подсети (у меня видеосервер так торчит), то нудно добавить еще одно правило маскарадное!
    chain=srcnat action=masquerade protocol=tcp dst-address=ip_web out-interface=vlan-web dst-port=80 log=no log-prefix=""
    здесь важно, чтобы out-interface=vlan-we это та подсеть куда торчить именно web сервер
    и тогда Apache видит именно ip роутера на этом vlan-е.

    Короче прописал по этому принципу видеорегистраторы , все работает !
     
    Baraboom нравится это.

Поделиться этой страницей

Share