Помогите разобраться с сетями VLAN

Тема в разделе "Вопросы начинающих", создана пользователем DimentR, 11 авг 2015.

  1. DimentR

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

    Здравствуйте!
    Прошу помощи советом, не могу понять в чем дело:
    Имеется 3 сети Vlan (на трех физических интерфейсах, но к делу не относится)
    Код:
    /interface vlan
    add interface=ether1 l2mtu=1594 name=vlan1 vlan-id=1
    add interface=ether2 l2mtu=1594 name=vlan2 vlan-id=2
    add interface=ether3 l2mtu=1594 name=vlan3 vlan-id=3
    порт, куда воткнут кабель от Интернет-провайдера
    Код:
    set [ find default-name=ether5 ] name=ether5-internet
    4 белых адреса от провайдера (изменил, что бы не совпадали с реальными)
    (4 адреса из одной подсети с одним шлюзом)
    Код:
    /ip address
    # IP от провайдера
    add address=96.96.96.125/26 comment="Out IPs" interface=ether5-internet \
        network=96.96.96.128
    add address=96.96.96.126/26 interface=ether5-internet network=96.96.96.128
    add address=96.96.96.127/26 interface=ether5-internet network=96.96.96.128
    add address=96.96.96.171/26 interface=ether5-internet network=96.96.96.128
    # Присутствие в локальных сетях
    add address=192.168.1.1/24 comment="1 network" interface=ether1 network=\
        192.168.1.0
    add address=192.168.2.1/24 comment="2 network" interface=ether2 network=\
        192.168.2.0
    add address=192.168.3.1/24 comment="3 network" interface=ether3 network=\
        192.168.3.0
    IP route
    Код:
    /ip route
    # 190 - шлюз провайдера
    add distance=1 gateway=96.96.96.190 pref-src=96.96.96.125
    add distance=1 gateway=96.96.96.190 pref-src=96.96.96.126
    add distance=1 gateway=96.96.96.190 pref-src=96.96.96.127
    add distance=1 gateway=96.96.96.190 pref-src=96.96.96.171
    IP firewall filter не пишу – на время тестирования и попыток решения проблемы ставил output, input, forward – accept на первое место.
    IP firewall address list

    Код:
    /ip firewall address-list
    add address=192.168.1.0/24 list="VLAN1 adressess"
    add address=192.168.2.0/24 list="VLAN2 adressess"
    add address=192.168.3.0/24 list="VLAN3 adressess"
    IP firewall NAT
    Код:
    /ip firewall nat
    # Проброс некоторых портов
    add action=netmap chain=dstnat dst-address=96.96.96.126 dst-port=80 \
        protocol=tcp to-addresses=192.168.3.24 to-ports=80
    add action=netmap chain=srcnat protocol=tcp src-address=192.168.3.24 \
        src-port=80 to-addresses=96.96.96.126 to-ports=80
    add action=netmap chain=dstnat dst-address=96.96.96.127 dst-port=80 \
        protocol=tcp to-addresses=192.168.3.57 to-ports=80
    add action=netmap chain=srcnat protocol=tcp src-address=192.168.3.57 \
        src-port=80 to-addresses=96.96.96.127 to-ports=80
    # и кучка  других портов на 127 и 126 айпишниках
    # Выделяю  ип целиком первому серверу
    add action=netmap chain=dstnat comment="=== 1 Server" dst-address=\
        96.96.96.125 to-addresses=192.168.3.56
    add action=netmap chain=srcnat src-address=192.168.3.56 to-addresses=\
        96.96.96.125
    # Второму серверу
    add action=netmap chain=dstnat comment="=== 2 Server" dst-address=\
        96.96.96.171 to-addresses=192.168.3.66
    add action=netmap chain=srcnat src-address=192.168.3.66 to-addresses=\
        96.96.96.171
    # Пытаюсь установить исходящий IP по умолчанию для выхода в Интернет для всех остальных машин во всех сетях
    add action=src-nat chain=srcnat comment="=== Set OUT IP for 1 network" \
        out-interface=ether5-internet src-address-list="VLAN1 adressess" \
        to-addresses=96.96.96.127
    add action= src-nat chain=srcnat comment="=== Set OUT IP for 2 network" \
        out-interface=ether5-internet src-address-list="VLAN2 adressess" \
        to-addresses=96.96.96.127
    add action=src-nat chain=srcnat comment="=== Set OUT IP for 3 network" \
        out-interface=ether5-internet src-address-list="VLAN3 adressess" \
        to-addresses=96.96.96.127
    # Дефолтный маскарадинг в самом низу.
    add action=masquerade chain=srcnat comment="=== default configuration" \
        out-interface=ether5-internet
    
    Проблемы -
    У меня не работает Интернет.
    Работает он только тогда, когда вытаскиваешь дефолтный маскарадинг наверх, исходящий ип при этом всегда самый первый в списке (ип первого сервера, …125)
    На первом сервере тоже появляется Интернет.
    Все, остальной NAT совершенно не работает.
    Причем из Интернета не пингуется никакой IP адрес кроме первого.
    Из локальных сетей пингуются другие адреса сети провайдера.
    8.8.8.8 не пингуется.

    Подскажите, что я делаю не так? Как надо сделать?


    Ранее, на тестовом стенде, я имитировал выход в Интернет (маскарадинг в самом низу был, до него не доходило) и включал со стороны внешнего Интерфейса компьютер с адресом из сети провайдера. Устанавливал соединения с ним из локальных сетей и при этом NAT работал корректно (адреса подставлялись правильные)

    PS
    Я уже довольно много чего пробовал –
    • Src-nat и dst-nat, вместо netmap
    • Routing mark через мангл
    • В ip route менял pref source – микротику все равно.
     
  2. Илья Князев

    Илья Князев Администратор Команда форума

    Для проброса ПОРТОВ используется dst-nat, а не netmap
    Основной вопрос... Он вот тут описан NAT. Часть 3
     
    Последнее редактирование модератором: 23 янв 2019
  3. DimentR

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

    Илья, спасибо за ответ.
    Дело в том, что netmap было уже после dst-nat, неким криком отчаяния. Цикл Ваших статей (спасибо, доходчиво, классно) прочел. По моим соображениям, если использовать src-nat and dst-nat вместо netmap все должно работать.
    Единственное, увидел у себя в конфигурации (после Ваших статей, кстати) - что я не указываю исходящий интерфейс для src-nat и входящий для dst-nat. Указал. Также route маршрут указал 1 без pref. source (с этим я тоже экспериментировал). На выходных попробую протестировать конфигурацию в боевой среде (в тестовой все работает). Отпишусь, если все хорошо.
    Может Вы видите что-то еще, какой-то недочет? Или предполагаете?
     
  4. DimentR

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

    Мне надо было задавать вопрос с конфигурацией без экспериментов. Давайте, пожалуйста, начнем сначала. Я выложу опять конфигурацию, правильную на мой взгляд.
    И так, вкратце, что я поменял:
    • netmap на dst-nat and src-nat
    • оставил 1 IP route маршрут
    • указал входящие порты для dst-nat
    • указал исходящие порты для src-nat (по рекомендациям из Ваших статей)
    К сожалению, опять: все работает на тестовом стенде, но стоит включить его в боевую конфигурацию - не работает ничего (ставил несколько компов, менял IP, смотрел какие адреса подставляются через нат, открывается ли тестовый сайт и пр.)

    Конфигурация -


    Имеется 3 сети Vlan (на трех физических интерфейсах, но к делу не относится)

    Код:
    /interface vlan
    
    add interface=ether1 l2mtu=1594 name=vlan1 vlan-id=1
    
    add interface=ether2 l2mtu=1594 name=vlan2 vlan-id=2
    
    add interface=ether3 l2mtu=1594 name=vlan3 vlan-id=3
    порт, куда воткнут кабель от Интернет-провайдера

    Код:
    set [ find default-name=ether5 ] name=ether5-internet


    4 белых адреса от провайдера (изменил, что бы не совпадали с реальными)


    (4 адреса из одной подсети с одним шлюзом)


    Код:
    /ip address
    
    # IP от провайдера
    
    add address=96.96.96.125/26 comment="Out IPs" interface=ether5-internet \
    
      network=96.96.96.128
    
    add address=96.96.96.126/26 interface=ether5-internet network=96.96.96.128
    
    add address=96.96.96.127/26 interface=ether5-internet network=96.96.96.128
    
    add address=96.96.96.171/26 interface=ether5-internet network=96.96.96.128
    
    # Присутствие в локальных сетях
    
    add address=192.168.1.1/24 comment="1 network" interface=ether1 network=\
    
      192.168.1.0
    
    add address=192.168.2.1/24 comment="2 network" interface=ether2 network=\
    
      192.168.2.0
    
    add address=192.168.3.1/24 comment="3 network" interface=ether3 network=\
    
      192.168.3.0
    IP route (тут вот немного поменял)

    Код:
    # 190 - шлюз провайдера
    
    add distance=1 gateway=96.96.96.190
    
    add distance=1 dst-address=192.168.1.0/24 gateway=192.168.1.1
    
    add distance=1 dst-address=192.168.2.0/24 gateway=192.168.2.1
    
    add distance=1 dst-address=192.168.3.0/24 gateway=192.168.3.1 
    IPfirewallfilter не пишу – на время тестирования и попыток решения проблемы ставил output, input, forward – accept на первое место.

    IP firewall address list

    Код:
    /ip firewall address-list
    
    add address=192.168.1.0/24 list="VLAN1 adressess"
    
    add address=192.168.2.0/24 list="VLAN2 adressess"
    
    add address=192.168.3.0/24 list="VLAN3 adressess"

    IP firewall NAT

    Код:
    /ip firewall nat
    
    # Проброс некоторых портов
    
    add action=dst-nat chain=dstnat dst-address=96.96.96.126 dst-port=80 \
    
      in-interface=ether5-internet protocol=tcp to-addresses=192.168.3.24 \
    
      to-ports=80
    
    add action=dst-nat chain=dstnat dst-address=96.96.96.127 dst-port=80 \
    
      in-interface=ether5-internet protocol=tcp to-addresses=192.168.3.57 \
    
      to-ports=80
    
    add action=src-nat chain=srcnat out-interface=ether5-internet protocol=tcp \
    
      src-address=192.168.3.24 src-port=80 to-addresses=96.96.96.127 to-ports=\
    
      80
    
    add action=src-nat chain=srcnat out-interface=ether5-internet protocol=tcp \
    
      src-address=192.168.3.57 src-port=80 to-addresses=96.96.96.126 to-ports=\
    
      80
    
    # и кучка  других портов на 127 и 126 айпишниках
    
    # Выделяю  ип целиком первому серверу
    
    add action=dst-nat chain=dstnat comment="=== 1 Server" dst-address=\
    
      96.96.96.125 in-interface=ether5-internet to-addresses=192.168.3.56
    
    add action=src-nat chain=srcnat out-interface=ether5-internet src-address=\
    
      192.168.3.56 to-addresses=96.96.96.125
    
    # Второму серверу
    
    add action=dst-nat chain=dstnat comment="=== 2 Server" dst-address=\
    
      96.96.96.171 in-interface=ether5-internet to-addresses=192.168.3.66
    
    add action=src-nat chain=srcnat out-interface=ether5-internet src-address=\
    
      192.168.3.66 to-addresses=96.96.96.171
    
    # Пытаюсь установить исходящий IP по умолчанию для выхода в Интернет для всех остальных машин во всех сетях
    
    add action=src-nat chain=srcnat comment="=== Set OUT IP for 1 network" \
    
      out-interface=ether5-internet src-address-list="VLAN1 adressess" \
    
      to-addresses=96.96.96.127
    
    add action=src-nat chain=srcnat comment="=== Set OUT IP for 2 network" \
    
      out-interface=ether5-internet src-address-list="VLAN2 adressess" \
    
      to-addresses=96.96.96.127
    
    add action=src-nat chain=srcnat comment="=== Set OUT IP for 3 network" \
    
      out-interface=ether5-internet src-address-list="VLAN3 adressess" \
    
      to-addresses=96.96.96.127
    
    # Дефолтный маскарадинг в самом низу.
    
    add action=masquerade chain=srcnat comment="=== default configuration" \
    
      out-interface=ether5-internet
    
    

    Что здесь не так?

    Симптомы те же, что и в первом сообщении описывал.
     
    Последнее редактирование: 17 авг 2015
  5. Илья Князев

    Илья Князев Администратор Команда форума

    Так а где адреса VLAN назначаем ?
    Надо
    1. Назначить адреса VLAN
    2. Убрать маршруты
    Код:
    add distance=1 dst-address=192.168.1.0/24 gateway=192.168.1.1
    add distance=1 dst-address=192.168.2.0/24 gateway=192.168.2.1
    add distance=1 dst-address=192.168.3.0/24 gateway=192.168.3.1 
    Потом если мы хотим чтобы каждый VLAN ходил в Интернет через "свой" внешний IP пишем правила вида
    Код:
    /ip firewall nat
    add action=src-nat chain=srcnat out-interface=ether5-internet src-address=\
    192.168.3.0/24 to-addresses=96.96.96.125  
    Т.е. говорим, что если пакет пришел из сети 192.168.3.0/24 то внешний IP будет 96.96.96.125
     
  6. DimentR

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

    Илья, спасибо большое за ответ.
    Назначаю адреса тут -
    Код:
    add address=192.168.1.1/24 comment="1 network" interface=ether1 network=\
      192.168.1.0
    add address=192.168.2.1/24 comment="2 network" interface=ether2 network=\
      192.168.2.0
    add address=192.168.3.1/24 comment="3 network" interface=ether3 network=\
      192.168.3.0
    # ниже адреса провайдера на 5 внешнем интерфейсе
    
    Да, я теперь вижу ошибку, я назначаю адреса интерфейсу физическому а не VLANам!

    Посмотрим, дадут ли исправления нужный эффект.
     
  7. DimentR

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

    Эти маршруты динамические. Сами создались.
     
  8. DimentR

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

    Прокинул мосты
    Код:
    /interface bridge port
    add bridge=bridge1 interface=ether1
    add bridge=bridge1 interface=vlan1
    add bridge=bridge2 interface=ether2
    add bridge=bridge2 interface=vlan2
    add bridge=bridge3 interface=vlan3
    add bridge=bridge3 interface=ether3
    
    Поменял адреса:
    Код:
    /ip address
    add address=192.168.1.1/24 comment="1 network" interface=bridge1 network=\
      192.168.1.0
    add address=192.168.2.1/24 comment="2 network" interface=bridge2 network=\
      192.168.2.0
    add address=192.168.3.1/24 comment="3 network" interface=bridge3 network=\
      192.168.3.0
    # Ниже адреса провайдера
    

    В итоге все то же самое, за некоторым исключением:

    1. Интернет не работает.
    2. Интернет перестал работать даже на первом сервере с прокинутым первым адресом.
    3. Перестали пинговаться другие внутренние адреса провайдера
    4. Самое веселое: если поставить маскарадинг повыше src-nat для первой сети (от куда я пытался выйти в Интернет) - Интернет начинает работать, также, с первого IP.
    Наблюдая статистику пакетов NAT, вижу, что бежит статистика src-nat для сетей, dst-nat много пакетов для первого сервера, очень мало src-nat для первого и второго серверов, очень мало dst-nat для второго. Остальные все *открытые порты* по нулям.

    PS Уже начинаю думать что это что-то аппаратное...
     
    Последнее редактирование: 19 авг 2015
  9. DimentR

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

    Их я не убирал, т.к. они динамические. Не знаю как они попали тогда в мою конфигурацию, сейчас я динамических маршрутов не вижу в ней. Возможно, это был очередной мой эксперемент (извиняюсь, сильно спешил когда писал), возможно потому, что я обновил компоненты RouterOS до последней версии и они перестали там показываться.

    Сейчас IP ROUTE выглядит так -
    Код:
    /ip route
    add distance=1 gateway=96.96.96.190
    
     
    Последнее редактирование: 19 авг 2015
  10. Илья Князев

    Илья Князев Администратор Команда форума

    А мосты-то зачем ?
    С той стороны есть кто 802.1q VLAN принимает ?
     
  11. DimentR

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

    Да, есть свич.
    Это было для тестового стенда, где у меня просто пара компьютеров.
    В принципе, я пробовал и так и так, результат такой же. Возможно, что-то напутал, не рабочее время было. Надо еще раз попробовать. Отпишусь.
    Пишите, очень нуждаюсь в советах.
     
  12. Илья Князев

    Илья Князев Администратор Команда форума

    При работе с VLAN без настроек свитча за микротиком никуда.
    Вы там точно 802.1q настроили ?
     
  13. DimentR

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

    Свич от HP, настраивал через веб-интерфейс в Network/VLAN . Создано несколько нетегированых VLAN ов. Вряд ли там какой-то другой стандарт, кроме как 802.1q. Тем более, что со старым роутером (cisco, аналогичной конфигурации) все работает штатно.
     
  14. Илья Князев

    Илья Князев Администратор Команда форума

    802.1q это как раз тегированные VLAN.
    Вы бы сразу сказали, что с циски переходите. В своем конфиге вы как раз создаете тегированные виланы.
    Грубо говоря если ваш конфиг в циске выглядит примерно так: (сорри, команды по памяти пишу, но мысль будет понятна)
    Код:
    interface FastEthernet1
    switchport mode access
    switchport access vlan 10
    !
    interface FastEthernet2
    switchport mode access
    switchport access vlan 20
    !
    interface vlan10
    ip address 192.168.10.1 255.255.255.0
    !
    interface vlan20
    ip address 192.168.20.1 255.255.255.0
    
    То аналогичный конфиг микротика будет такой:
    Код:
    /interface ethernet
    set ether1 master-port=none
    set ether2 master-port=none
    /ip address
    add address=192.168.10.1/24  interface=ether1
    add address=192.168.20.1/24  interface=ether2 
    а то что вы делаете, на циске выглядит как
    Код:
    interface FastEthernet1.1
    encapsulation dot1q 1
    ip address ....
    !
    interface FastEthernet2.2
    encapsulation dot1q 2
    ip address .... 
     
  15. DimentR

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

    Спасибо за ответ!

    Да, у меня первый вариант. Не правильно понимал я. :(
    Буду пробовать.
     
  16. DimentR

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

    Илья, спасибо большое за помощь. Вы пролили свет на некоторые вещи.
    Удалил вланы, все подправил - не работает. Внешние ип провайдера из нашей сети пингуются, все остальное - нет. Если включить маскарадинг, Интернет появляется на первом ип.
    Все решилось указанием ARP: proxy-arp в Интерфейсе провайдера. Возможно, это не совсем правильно, но так работает (специфические настройки шлюза провайдера?).
    ARP табличка в IP / ARP только с внутренними нашими адресами + шлюз провайдера.
     
    Последнее редактирование: 24 авг 2015
  17. DimentR

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

    Мда, посыпались у некоторых внутренние адреса заместо внешних. Рассчитывал, что этого не произойдет т.к. NAT и все дела.
    Что можно еще сделать? Вроде все же правильно было, а не работает.
     
  18. Илья Князев

    Илья Князев Администратор Команда форума

    Так выключите ARP-proxу чтобы не сыпались.
     
  19. DimentR

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

    Но, к сожалению, без него результат тот же, что и был
     
  20. Илья Князев

    Илья Князев Администратор Команда форума

    Хорошо. Поехали.
    У вас 2 адреса (остальные так же) на интерфейсе wan и 2 клиентских подсети на интерфейсах lan1 и lan2
    Интерфейсы вы переименовали.
    1. Назначаем адреса
    Код:
    /ip address
    add address=1.1.1.2/24 interface=wan
    add address=1.1.1.3/24 interface=wan
    add address=192.168.1.1/24 interface=lan1
    add address=192.168.2.1/24 interface=lan2 
    2. Назначаем маршрут по умолчанию (нужен ОДИН)
    Код:
    ip route add gateway=1.1.1.1  
    3. Назначаем маскарад. lan1 идет в инет с адреса 1.1.1.2, а lan2 с адреса 1.1.1.3
    Код:
    /ip firewall nat
    add action=src-nat chain=srcnat out-interface=wan src-address=192.168.1.0/24 to-addresses=1.1.1.2
    add action=src-nat chain=srcnat out-interface=wan src-address=192.168.2.0/24 to-addresses=1.1.1.3
    
    пробрасываем порты
    Код:
    add action=dst-nat chain=dstnat in-interface=wan dst-address=1.1.1.2 dst-port=80 protocol=tcp to-addresses=192.168.1.10
    
    Далее, если у нас прошивка 6.29 и выше включаем fasttrack
    Код:
    /ip firewall filter
    add action=fasttrack-connection chain=forward 
    В общем-то весь базовый конфиг. остальное допилить по вкусу.