маршрутизация на route-map с ACL и NAT на ESR
Добавлено: 24 сен 2020 02:04
Доброго времени
На роутере esr-20 нужно подключить пользователей с разных VLAN к интернету от провайдеров. Настройки обоих провайдеров - статический адрес и шлюз. В документации есть пример настройки маршрутизации как раз на два провайдера, но там он без NAT. Провайдерами не заявлена поддержка каких-либо протоколов динамической маршрутизации. Очевидно, общего дефолтного шлюза в этом случае недостаточно,и, как я понял, в роутере для этого случая есть route-map. Значительная часть этого route-map ориентирована на работу совместно с протоколом BGP, но его мы не рассматриваем, нужно назначить статические маршруты, которые указаны провайдерами, то есть маршрут 0.0.0.0/0 на ip адреса шлюзов провайдеров в зависимости от vlan или диапазонов адресов локальных сетей (источников пакетов). Разумеется, SNAT необходим для того чтобы ответные пакеты от серверов из интернета находили адресаты внутри VLAN.
Как я понял, для роутера в этом случае предлагается использовать route-map на базе ACL, чтобы разделить правила для разных источников. Опять же, для сравнения, если использовать, например, iptables, то с ним понятно, что в какой момент, на каком этапе обрабатывается - POSTROUTING, PREROUTING, но что происходит и в каком порядке внутри этого роутера, не понятно.
Допустим, есть две локальных сети - 192.168.1.0/24 и 10.0.0.0/16, первую надо маршрутизировать на адрес x.x.x.1 с нашим адресом источника x.x.x.2, а другую - на y.y.y.1 с нашим snat адресом y.y.y.2. Вопрос, какую сеть надо указать в ACL в качестве адреса источника, чтобы трафик шёл, скажем, на первого провайдера? Очевидно, не локальную сеть 192.168.1.0/24, а, видимо, адрес интерфейса, смотрящего в сеть провайдера, то есть x.x.x.2/32, то есть сеть из одного единственного адреса, ведь решение о маршрутизации логично принимать после SNAT?
esr# configure
esr(config)# ip access-list extended provider1
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address x.x.x.2 255.255.255.255
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit
esr(config)# route-map provider1_gateway
esr(config-route-map)# rule 1
esr(config-route-map-rule)# match ip access-group provider1
esr(config-route-map-rule)# action set ip next-hop verify-availability x.x.x.1 10
esr(config-route-map-rule)# exit
esr(config-route-map)# exit
esr(config)# interface gi1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip policy route-map provider1_gateway
настройки NAT
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to interface gi1/0/1
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# match source-address LOCAL_NET1
esr(config-snat-rule)# action source-nat interface
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
интерфейсу присвоен адрес от провайдера x.x.x.2
Но это не работает, трафик не проходит, traceroute выше esr-20 ничего не показывает, почему?
дополнительные вопросы:
1) можно route-map с ACL делать только для одного из двух провайдеров, я для второго просто ip default-gateway y.y.y.1/LL и не использовать route-map? правильно ли роутер в этом случае обработает приоритет маршрутов - сначала использовать ACL, а для всего что останется - default-gateway?
2)в теории кроме nat+route-map+acl стоит задача поднять ещё и http(s)-proxy, сможет ли роутер правильно разобрать порядок преобразования пакетов и обработать эту связку?
На роутере esr-20 нужно подключить пользователей с разных VLAN к интернету от провайдеров. Настройки обоих провайдеров - статический адрес и шлюз. В документации есть пример настройки маршрутизации как раз на два провайдера, но там он без NAT. Провайдерами не заявлена поддержка каких-либо протоколов динамической маршрутизации. Очевидно, общего дефолтного шлюза в этом случае недостаточно,и, как я понял, в роутере для этого случая есть route-map. Значительная часть этого route-map ориентирована на работу совместно с протоколом BGP, но его мы не рассматриваем, нужно назначить статические маршруты, которые указаны провайдерами, то есть маршрут 0.0.0.0/0 на ip адреса шлюзов провайдеров в зависимости от vlan или диапазонов адресов локальных сетей (источников пакетов). Разумеется, SNAT необходим для того чтобы ответные пакеты от серверов из интернета находили адресаты внутри VLAN.
Как я понял, для роутера в этом случае предлагается использовать route-map на базе ACL, чтобы разделить правила для разных источников. Опять же, для сравнения, если использовать, например, iptables, то с ним понятно, что в какой момент, на каком этапе обрабатывается - POSTROUTING, PREROUTING, но что происходит и в каком порядке внутри этого роутера, не понятно.
Допустим, есть две локальных сети - 192.168.1.0/24 и 10.0.0.0/16, первую надо маршрутизировать на адрес x.x.x.1 с нашим адресом источника x.x.x.2, а другую - на y.y.y.1 с нашим snat адресом y.y.y.2. Вопрос, какую сеть надо указать в ACL в качестве адреса источника, чтобы трафик шёл, скажем, на первого провайдера? Очевидно, не локальную сеть 192.168.1.0/24, а, видимо, адрес интерфейса, смотрящего в сеть провайдера, то есть x.x.x.2/32, то есть сеть из одного единственного адреса, ведь решение о маршрутизации логично принимать после SNAT?
esr# configure
esr(config)# ip access-list extended provider1
esr(config-acl)# rule 1
esr(config-acl-rule)# match source-address x.x.x.2 255.255.255.255
esr(config-acl-rule)# match destination-address any
esr(config-acl-rule)# match protocol any
esr(config-acl-rule)# action permit
esr(config-acl-rule)# enable
esr(config-acl-rule)# exit
esr(config-acl)# exit
esr(config)# route-map provider1_gateway
esr(config-route-map)# rule 1
esr(config-route-map-rule)# match ip access-group provider1
esr(config-route-map-rule)# action set ip next-hop verify-availability x.x.x.1 10
esr(config-route-map-rule)# exit
esr(config-route-map)# exit
esr(config)# interface gi1/0/1
esr(config-if-gi)# ip firewall disable
esr(config-if-gi)# ip policy route-map provider1_gateway
настройки NAT
esr(config-snat)# ruleset SNAT
esr(config-snat-ruleset)# to interface gi1/0/1
esr(config-snat-ruleset)# rule 1
esr(config-snat-rule)# match source-address LOCAL_NET1
esr(config-snat-rule)# action source-nat interface
esr(config-snat-rule)# enable
esr(config-snat-rule)# exit
esr(config-snat-ruleset)# exit
интерфейсу присвоен адрес от провайдера x.x.x.2
Но это не работает, трафик не проходит, traceroute выше esr-20 ничего не показывает, почему?
дополнительные вопросы:
1) можно route-map с ACL делать только для одного из двух провайдеров, я для второго просто ip default-gateway y.y.y.1/LL и не использовать route-map? правильно ли роутер в этом случае обработает приоритет маршрутов - сначала использовать ACL, а для всего что останется - default-gateway?
2)в теории кроме nat+route-map+acl стоит задача поднять ещё и http(s)-proxy, сможет ли роутер правильно разобрать порядок преобразования пакетов и обработать эту связку?