В сети много раз описывались варианты настройки маршрутизаторов Cisco для работы с двумя каналами (2 Провайдера - один основной + запасной), встречались даже реализации с использование VRF'ов! Здесь я постараюсь описать оптимальный, на мой взгляд, конфиг и встреченные в процессе настройки грабли (с решениями). Итак базовая настройка рутера 2851 со свичевым модулем.
Так как модуль - L2, то интерфейсы к провайдерам реализуются через SVI.
interface GigabitEthernet0/0
description Внутренняя Сеть
ip address 172.20.1.1 255.255.0.0 secondary
ip address 172.20.1.2 255.255.0.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
no mop enabled
interface Vlan12
description To_ISP1
ip address ***1
no ip redirects
no ip unreachables
no ip proxy-arp
ip dns view-group ISP1
ip nat outside
ip virtual-reassembly
interface Vlan13
description To_ISP2
ip address ***2
no ip redirects
no ip unreachables
no ip proxy-arp
ip dns view-group ISP2
ip nat outside
ip virtual-reassembly
# Вяжем SVI с физикой
interface FastEthernet0/0/0
switchport access vlan 11
spanning-tree portfast
interface FastEthernet0/0/1
switchport access vlan 12
spanning-tree portfast
# добавляем список доступа для NAT
ip access-list extended NAT
permit ip 172.20.0.0 0.0.255.255 any
# теперь нужно "занатить" внутреннюю сеть на двух провов, это сделаем через route-map'ы
route-map DMZ-ISP2 permit 10
match ip address DMZ-ISP2
set ip next-hop verify-availability *** 1 track 2
route-map DMZ-ISP2 permit 20
match ip address DMZ-ISP1
set ip next-hop verify-availability *** 1 track 1
ip nat inside source route-map ISP1 interface Vlan12 overload
ip nat inside source route-map ISP2 interface Vlan13 overload
# отдельно нужно описать треки (отслеживание состояния какого либо параметра - в нашем случае трек опирается на доступность определенных сетевых сервисов через механизм sla)
ip sla 20
icmp-echo 93.158.134.8 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 20 life forever start-time now
ip sla 30
icmp-echo 217.69.128.42 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 30 life forever start-time now
ip sla 40
icmp-echo 194.87.0.50 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 40 life forever start-time now
ip sla 120
icmp-echo 93.158.134.8 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 20 life forever start-time now
ip sla 130
icmp-echo 217.69.128.42 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 30 life forever start-time now
ip sla 140
icmp-echo 194.87.0.50 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 40 life forever start-time now
# в качестве критерия доступности выступают ответы на пинги от крупных сетевых сервисов (Яндекс, Мейл.ру и пр.)
track 20 ip sla 20
track 30 ip sla 30
track 40 ip sla 40
track 120 ip sla 120
track 130 ip sla 130
track 140 ip sla 140
track 2 list boolean or
object 120
object 130
object 140
track 1 list boolean or
object 20
object 30
object 40
# Группируем треки для карт маршрутизации, так что они считаются доступными, если хоть один из пингуемых сервисов "жив" (логическое "или").
ip route 0.0.0.0 0.0.0.0 *** track 1
ip route 0.0.0.0 0.0.0.0 *** 2 track 2
# также вешаем треки на дефолтные маршруты (маршрут ко второму провайдеру имеет AD 2)
Полученная в результате конфигурация может считаться работоспособной, но есть два вопроса:
1. при переключении каналов уже установленные сессии находятся в таблице NAT трансляций, их нужно оперативно убрать.
2. на втором канале могут возникнуть сложности с разрешением имен.
Для решения первого вопроса добавляем механизм реакции на события (event manager):
event manager applet CHANGE_ISP
event track 1 state any
action 1.0 cli command "enable"
action 2.0 cli command "clear ip nat trans forced"
# при переходе трека 1 из состояния Up -> Down или обратно принудительно выполняется очистка таблицы трансляций.
Для второй проблемы настраиваем DNS фичу - DNS View:
ip dns view ISP1-OBIT
domain name-server ***
domain name-server ***
ip dns view ISP2-PTRST
domain name-server ***
domain name-server ***
ip dns view-list ISP2
view ISP2-PTRST 1
ip dns view-list ISP1
view ISP1-OBIT 1
ip dns server
# Далее эти вьюсы навешиваются на SVI внешних каналов (см. настройки Vlan 12 / 13).
Звездочками *** обозначены различные внешние адреса (выданные провами, гейтвеи и ДНСы).
UPD: В последних версиях IOS были внесены некоторые изменения в синтаксисе команд трекинга и убраны некоторые шаблоны отслеживания track'ов. В новой интерпретации получится примерно такое:
изменения в ip sla
ip sla monitor 20
type echo protocol ipIcmpEcho 8.8.8.8 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 20 life forever start-time now
ip sla monitor 30
type echo protocol ipIcmpEcho 4.2.2.2 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 30 life forever start-time now
ip sla monitor 40
type echo protocol ipIcmpEcho 62.76.76.62 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 40 life forever start-time now
ip sla monitor 120
type echo protocol ipIcmpEcho 8.8.8.8 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 120 life forever start-time now
ip sla monitor 130
type echo protocol ipIcmpEcho 4.2.2.2 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 130 life forever start-time now
ip sla monitor 140
type echo protocol ipIcmpEcho 62.76.76.62 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 140 life forever start-time now
!
track 1 list boolean or
object 20
object 30
object 40
!
track 2 list boolean or
object 120
object 130
object 140
!
track 20 rtr 20 reachability
!
track 30 rtr 30 reachability
!
track 40 rtr 40 reachability
!
track 120 rtr 120 reachability
!
track 130 rtr 130 reachability
!
track 140 rtr 140 reachability
Реакция при наступлении события будет на основании записи в логе:
event manager applet CLEAR_NAT
event syslog pattern "%TRACKING-5-STATE: 1 list boolean or"
action 1.0 cli command "enable"
action 2.0 cli command "clear ip nat trans forced"
Так как модуль - L2, то интерфейсы к провайдерам реализуются через SVI.
interface GigabitEthernet0/0
description Внутренняя Сеть
ip address 172.20.1.1 255.255.0.0 secondary
ip address 172.20.1.2 255.255.0.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
no mop enabled
interface Vlan12
description To_ISP1
ip address ***1
no ip redirects
no ip unreachables
no ip proxy-arp
ip dns view-group ISP1
ip nat outside
ip virtual-reassembly
interface Vlan13
description To_ISP2
ip address ***2
no ip redirects
no ip unreachables
no ip proxy-arp
ip dns view-group ISP2
ip nat outside
ip virtual-reassembly
# Вяжем SVI с физикой
interface FastEthernet0/0/0
switchport access vlan 11
spanning-tree portfast
interface FastEthernet0/0/1
switchport access vlan 12
spanning-tree portfast
# добавляем список доступа для NAT
ip access-list extended NAT
permit ip 172.20.0.0 0.0.255.255 any
# теперь нужно "занатить" внутреннюю сеть на двух провов, это сделаем через route-map'ы
route-map DMZ-ISP2 permit 10
match ip address DMZ-ISP2
set ip next-hop verify-availability *** 1 track 2
route-map DMZ-ISP2 permit 20
match ip address DMZ-ISP1
set ip next-hop verify-availability *** 1 track 1
ip nat inside source route-map ISP1 interface Vlan12 overload
ip nat inside source route-map ISP2 interface Vlan13 overload
# отдельно нужно описать треки (отслеживание состояния какого либо параметра - в нашем случае трек опирается на доступность определенных сетевых сервисов через механизм sla)
ip sla 20
icmp-echo 93.158.134.8 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 20 life forever start-time now
ip sla 30
icmp-echo 217.69.128.42 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 30 life forever start-time now
ip sla 40
icmp-echo 194.87.0.50 source-interface Vlan12
timeout 2000
frequency 3
ip sla schedule 40 life forever start-time now
ip sla 120
icmp-echo 93.158.134.8 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 20 life forever start-time now
ip sla 130
icmp-echo 217.69.128.42 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 30 life forever start-time now
ip sla 140
icmp-echo 194.87.0.50 source-interface Vlan13
timeout 2000
frequency 3
ip sla schedule 40 life forever start-time now
# в качестве критерия доступности выступают ответы на пинги от крупных сетевых сервисов (Яндекс, Мейл.ру и пр.)
track 20 ip sla 20
track 30 ip sla 30
track 40 ip sla 40
track 120 ip sla 120
track 130 ip sla 130
track 140 ip sla 140
track 2 list boolean or
object 120
object 130
object 140
track 1 list boolean or
object 20
object 30
object 40
# Группируем треки для карт маршрутизации, так что они считаются доступными, если хоть один из пингуемых сервисов "жив" (логическое "или").
ip route 0.0.0.0 0.0.0.0 *** track 1
ip route 0.0.0.0 0.0.0.0 *** 2 track 2
# также вешаем треки на дефолтные маршруты (маршрут ко второму провайдеру имеет AD 2)
Полученная в результате конфигурация может считаться работоспособной, но есть два вопроса:
1. при переключении каналов уже установленные сессии находятся в таблице NAT трансляций, их нужно оперативно убрать.
2. на втором канале могут возникнуть сложности с разрешением имен.
Для решения первого вопроса добавляем механизм реакции на события (event manager):
event manager applet CHANGE_ISP
event track 1 state any
action 1.0 cli command "enable"
action 2.0 cli command "clear ip nat trans forced"
# при переходе трека 1 из состояния Up -> Down или обратно принудительно выполняется очистка таблицы трансляций.
Для второй проблемы настраиваем DNS фичу - DNS View:
ip dns view ISP1-OBIT
domain name-server ***
domain name-server ***
ip dns view ISP2-PTRST
domain name-server ***
domain name-server ***
ip dns view-list ISP2
view ISP2-PTRST 1
ip dns view-list ISP1
view ISP1-OBIT 1
ip dns server
# Далее эти вьюсы навешиваются на SVI внешних каналов (см. настройки Vlan 12 / 13).
Звездочками *** обозначены различные внешние адреса (выданные провами, гейтвеи и ДНСы).
UPD: В последних версиях IOS были внесены некоторые изменения в синтаксисе команд трекинга и убраны некоторые шаблоны отслеживания track'ов. В новой интерпретации получится примерно такое:
изменения в ip sla
ip sla monitor 20
type echo protocol ipIcmpEcho 8.8.8.8 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 20 life forever start-time now
ip sla monitor 30
type echo protocol ipIcmpEcho 4.2.2.2 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 30 life forever start-time now
ip sla monitor 40
type echo protocol ipIcmpEcho 62.76.76.62 source-interface FastEthernet0/0
frequency 5
ip sla monitor schedule 40 life forever start-time now
ip sla monitor 120
type echo protocol ipIcmpEcho 8.8.8.8 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 120 life forever start-time now
ip sla monitor 130
type echo protocol ipIcmpEcho 4.2.2.2 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 130 life forever start-time now
ip sla monitor 140
type echo protocol ipIcmpEcho 62.76.76.62 source-interface FastEthernet0/1
frequency 5
ip sla monitor schedule 140 life forever start-time now
!
track 1 list boolean or
object 20
object 30
object 40
!
track 2 list boolean or
object 120
object 130
object 140
!
track 20 rtr 20 reachability
!
track 30 rtr 30 reachability
!
track 40 rtr 40 reachability
!
track 120 rtr 120 reachability
!
track 130 rtr 130 reachability
!
track 140 rtr 140 reachability
Реакция при наступлении события будет на основании записи в логе:
event manager applet CLEAR_NAT
event syslog pattern "%TRACKING-5-STATE: 1 list boolean or"
action 1.0 cli command "enable"
action 2.0 cli command "clear ip nat trans forced"
Спасибо огромное!
ОтветитьУдалитьСпасибо! прекрасная статья! А если 4 или 5 ISP? и у 4-х из 5-ти ISP неизвестные, меняющиеся ip-сети (Satellite, 3G, Wi-Fi hotspots, провод со статикой и DHCP)?
ОтветитьУдалитьЕсли есть один провайдер, выдающий сетевые параметры по DHCP, можно в route-map и маршруте сделать небольшие изменения:
Удалитьroute-map ISP3 permit 30
match ip address ...
set ip next-hop dynamic dhcp
--
ip route 0.0.0.0 0.0.0.0 vlan N track 3
в остальном принципы создания track'ов, NAT трансляций сохраняются.
К сожалению, не уверен, что аналогичная конструкция сработает для PPP соединений.
По нескольким провайдерам с DHCP есть еще один момент - если будут выдаваться адреса из одинаковых подсетей на разные интерфейсы - будет конфликт (в частности, в локальной сети такая ситуация приводила к исчерпанию DHCP пула).
В целом, рекомендация - если у вас провайдеров больше 2х - старайтесь уходить от NAT'а и смотрите в сторону автономок и BGP, а также IPv6.
Добрый день. пытаюсь настроить DNSы и какая то странная ситуация получается...
ОтветитьУдалитьСделал такой конфиг:
ip dns view ISP1-Gold
domain name-server *.106.68.2
domain name-server *.106.71.254
ip dns view ISP2-MTS
domain name-server *.242.139.10
domain name-server *.242.140.10
ip dns view-list ISP1
view ISP1-Gold 1
ip dns view-list ISP2
view ISP2-MTS 1
interface GigabitEthernet0/1
description EXT1_Gold
ip dns view-group ISP1
interface GigabitEthernet0/2
description EXT2_MTS
ip dns view-group ISP2
Если сделать так, то Роутер каким то образом узнает о внутренних серврах, внутри сети. например выдает mail.corp.ru 192.168.1.2, вместо внешнего ip который он должен получать на внешних DNS серврах.
Если дописать:
ip name-server *.106.68.2
ip name-server *.242.139.10
ip name-server *.106.71.254
ip name-server *.242.140.10
Все работает как надо, но чувствую что тогда нет ни какого смысла в DNS view группах...
Может будут идеи куда копать...?
Приветствую, с момента публикации основного поста прошло уже достаточно времени, поэтому сейчас я придерживаюсь мнения, что заставлять пограничный маршрутизатор заниматься ресолвом не правильно. Помимо возрастания нагрузки (причем, весьма ощутимого!) в некоторых версиях IOS в логах периодически появлялись записи ошибки CEF.
УдалитьПредполагаю, что в вашем случае речь идет о компании, где DNS сервис присутствует как минимум в качестве роли на первичном контроллере домена. Рекомендую именно его и использовать в качестве ДНС сервера для хостов, указав внешние провайдерские ДНС сервера в качестве серверов пересылки. Если вы не содержите собственный зарегистрированный домен и у вас не требуется ДНС пиринг с регистратором (tcp 53), а также вы не пользуетесь какими-то внутренними ресурсами провадеров, то необходимости в провайдерских ДНСах, на мой взгляд, нет. Можно пользоваться открытыми ДНСами, например, Гугловые 8.8.8.8 и 8.8.4.4, еще открытый 4.2.2.2, для России ДНС от MSK IX 62.76.76.62