UPD: Cisco и 2 провайдера

Проблема стара как мир и сегодня мы ее решим :)
Дано: 2 провайдера (ISP1 и ISP2), внутренняя сеть и между ними маршрутизатор.
Задача: настроить один основной (ISP1) и один резервный канал (ISP2), при падении первого переключится на второй, при поднятии первого переключится обратно.

UPD: Обновил, дописал ip sla, пока без объяснений.

Будем исходить из того что коммутаторы у нас тоже фирмы Cisco :) и для начала настроим 3 Vlan'а:
Vlan 10 — внутренняя сеть
Vlan 12 — ISP1
Vlan 14 — ISP2

C2970#vlan data
C2970(vlan)#vlan 10 name OurNet
VLAN 10 added:
Name: OurNet
C2970(vlan)#vlan 12 name ISP1
VLAN 12 added:
Name: ISP1
C2970(vlan)#vlan 14 name ISP2
VLAN 13 added:
Name: ISP2
C2970-Servers(vlan)#exit
APPLY completed.
Exiting....
C2970#


Порт номер 1 принадлежит Vlan'у 12 -ISP1, порт 2 принадлежит Vlan'у 14 (ISP2), третий порт транковый — для рутера, остальные порты принадлежат Vlan'у 10 — наша внутренняя сеть.

interface FastEthernet0/1
description -=I=- ISP1 -=I=-
switchport access vlan 12
switchport mode access
no cdp enable

interface FastEthernet0/2
description -=I=- ISP2 -=I=-
switchport access vlan 14
switchport mode access
no cdp enable

interface FastEthernet0/3
description -=I=- RTR -=I=-
switchport mode trunk
no mdix auto

interface FastEthernet0/4
switchport access vlan 10
switchport mode access
no cdp enable
...
interface FastEthernet0/24
switchport access vlan 10
switchport mode access
no cdp enable


С коммутацией разобрались переходим к нашему рутеру, у меня за пример взят Cisco 2811 с иосом c2800nm-adventerprisek9_ivs-mz.124-24.T1.bin (хотя будет работать и на другом рутере с другим ИОС'ом)

Настроим интерфейсы:

interface FastEthernet0/0
no ip address
duplex auto
speed auto
no cdp enable
!
interface FastEthernet0/0.12
description -=I=- Internet over ISP1 -=I=-
encapsulation dot1Q 12
ip address 164.122.12.9 255.255.255.248
ip access-group ACL_INET_OUT_ISP1 out
ip nat outside
ip virtual-reassembly
no cdp enable
!
interface FastEthernet0/0.14
description -=I=- Internet over ISP2 -=I=-
encapsulation dot1Q 14
ip address 122.164.8.17 255.255.255.248
ip access-group ACL_INET_OUT_ISP2 out
ip nat outside
ip virtual-reassembly
no cdp enable
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
!
interface FastEthernet0/1.10
description to -=I=- LAN -=I=-
encapsulation dot1Q 10
ip address 10.10.10.200 255.255.255.0
ip nat inside
ip virtual-reassembly
no cdp enable


Настроим пулы для NAT'а:
ip nat pool ISP1-PUBLIC-IP 164.122.12.9 164.122.12.9 netmask 255.255.255.248
ip nat pool ISP2-PUBLIC-IP 122.164.8.17 122.164.8.17 netmask 255.255.255.248


Акцесс-листы (ACL):
ACL'и для интерфейсов, чтобы никто не прорвался :)
ip access-list extended ACL_INET_OUT_ISP1
deny ip any 10.0.0.0 0.255.255.255 log-input
deny ip any 172.16.0.0 0.15.255.255 log-input
deny ip any 192.168.0.0 0.0.255.255 log-input
permit ip host 164.122.12.9 any
deny ip any any log-input

ip access-list extended ACL_INET_OUT_ISP2
deny ip any 10.0.0.0 0.255.255.255 log-input
deny ip any 172.16.0.0 0.15.255.255 log-input
deny ip any 192.168.0.0 0.0.255.255 log-input
permit ip host 122.164.8.17 any
deny ip any any log-input


ACL'и для тех кто в сети:
ip access-list extended ACL_NAT-INET_OUT_ISP1
remark /--------------------------------------
remark Black Hole RFC 1918
remark --------------------------------------/
deny ip any 10.0.0.0 0.255.255.255 log-input
deny ip any 172.16.0.0 0.15.255.255 log-input
deny ip any 192.168.0.0 0.0.255.255 log-input
remark /--------------------------------------
remark SMTP For Exchange
remark --------------------------------------/
permit tcp host 10.10.10.254 any eq smtp
deny tcp any any eq smtp log-input
remark /--------------------------------------
remark WSUS
remark --------------------------------------/
permit ip host 10.10.10.251 any
remark /--------------------------------------
remark Full Aceess for Odmins
remark --------------------------------------/
permit ip host 10.10.10.10 any
remark /--------------------------------------
remark Access for Exchange
remark --------------------------------------/
permit ip host 10.10.10.254 any
remark /--------------------------------------
remark Deny SMTP for TI (gate)
remark --------------------------------------/
deny tcp host 10.10.10.249 eq smtp any log-input
remark /--------------------------------------
remark Access to Internet for TI (gate)
remark --------------------------------------/
permit ip host 10.10.10.249 any
remark /--------------------------------------
remark Self
remark --------------------------------------/
permit ip host 164.122.12.9 any
remark /--------------------------------------
remark Deny All
remark --------------------------------------/
deny ip any any log-input

ip access-list extended ACL_NAT-INET_OUT_ISP2
remark /--------------------------------------
remark Black Hole RFC 1918
remark --------------------------------------/
deny ip any 10.0.0.0 0.255.255.255 log-input
deny ip any 172.16.0.0 0.15.255.255 log-input
deny ip any 192.168.0.0 0.0.255.255 log-input
remark /--------------------------------------
remark SMTP For Exchange
remark --------------------------------------/
permit tcp host 10.10.10.254 any eq smtp
deny tcp any any eq smtp log-input
remark /--------------------------------------
remark WSUS
remark --------------------------------------/
permit ip host 10.10.10.251 any
remark /--------------------------------------
remark Full Aceess for Odmins
remark --------------------------------------/
permit ip host 10.10.10.10 any
remark /--------------------------------------
remark Access for Exchange
remark --------------------------------------/
permit ip host 10.10.10.254 any
remark /--------------------------------------
remark Deny SMTP for TI (gate)
remark --------------------------------------/
deny tcp host 10.10.10.249 eq smtp any log-input
remark /--------------------------------------
remark Access to Internet for TI (gate)
remark --------------------------------------/
permit ip host 10.10.10.249 any
remark /--------------------------------------
remark Self
remark --------------------------------------/
permit ip host 122.164.8.17 any
remark /--------------------------------------
remark Deny All
remark --------------------------------------/
deny ip any any log-input


Route-map:
route-map NAT-TO-ISP1 permit 10
description -= Routing/NAT to ISP1, outgoing traffic =-
match ip address ACL_NAT-INET_OUT_ISP1
match interface FastEthernet0/0.12
!
route-map NAT-TO-ISP2 permit 10
description -= Routing/NAT to ISP2, outgoing traffic =-
match ip address ACL_NAT-INET_OUT_ISP2
match interface FastEthernet0/0.14


И вот теперь самое интересное — трекинг:

track 100 list boolean and
object 101
object 102
object 103

object 104
delay down 2 up 3
!
track 101 interface FastEthernet0/0.12 line-protocol
delay down 2 up 5
!
track 102 interface FastEthernet0/1 line-protocol
delay down 2 up 5
!
track 103 ip route 164.122.12.9 255.255.255.248 reachability
delay down 2 up 5
!

track 104 ip sla 104
delay down 2 up 5

!
track 200 list boolean and
object 201
object 202
object 203

object 204
delay down 2 up 3
!
track 201 interface FastEthernet0/0.14 line-protocol
delay down 2 up 5
!
track 202 interface FastEthernet0/1 line-protocol
delay down 2 up 5
!
track 203 ip route 122.164.8.17 255.255.255.248 reachability
delay down 2 up 5
!

track 204 ip sla 204
delay down 2 up 5


и маршруты:

ip route 0.0.0.0 0.0.0.0 164.122.12.9 10 tag 100 name -=[ISP1]=- track 100
ip route 0.0.0.0 0.0.0.0 122.164.8.17 20 tag 200 name -=[ISP2]=- track 200


а теперь собственно то, чем мы проверяем доступность наших шлюзов:

ip sla 104
icmp-echo 164.122.12.9 source-interface FastEthernet0/0.12
request-data-size 1
timeout 700
threshold 600
frequency 30
ip sla schedule 104 life forever start-time now
ip sla 204
icmp-echo 122.164.8.17 source-interface FastEthernet0/0.14
request-data-size 1
timeout 700
threshold 600
frequency 30
ip sla schedule 204 life forever start-time now
+13
28 сентября 2009, 08:38
18

комментарии (19)

0
navion #
Напишите подробнее, что делает track?
0
eevdokimov #
В данном примере track проверяет доступность шлюза для каждого провайдера.
0
navion #
А как роутер узнаёт о доступности шлюзов? На циско.ком есть пример с пингом, но тут сделано по другому.
0
eevdokimov #
Да, по другому :)
вот ключевые моменты:
track 201 interface FastEthernet0/0.14 line-protocol трекаем line protocol, говоря другими словами воткнут кабель или нет, на внутреннем интерфейсе
track 202 interface FastEthernet0/1 line-protocol — тоже, но на внешнем
track 203 ip route 122.164.8.17 255.255.255.248 reachability — доступность :)
и самой первой строкой у нас стоит:
track 200 list boolean and
object 201
object 202
object 203

т.е. должны выполняться все три условия (булево «И»), а в маршрутах у нас стоит
ip route 0.0.0.0 0.0.0.0 122.164.8.17 20 tag 200 name -=[ISP2]=- track 200 — установить маршрутом при достижении значения.
0
navion #
Спасибо за подробное описание, но самое главное вы так и не объяснили, как происходит проверка
0
navion #
Черт, раньше отправилось.
track 203 ip route 122.164.8.17 255.255.255.248 reachability — как проверяется доступность шлюза? пинг или берётся какая-то внутренняя статистика?
+1
eevdokimov #
если трек в апе то маршрут работает, если в дауне, то нет
если оба в апе, то работает маршрут с лучшей метрикой
если оба в дауне, то 0.0.0.0/0 будет отсутствовать вообще
в настройках есть избыточность с тем, что проверяется сеть и указан source интерфейс
я обязательно расскажу продолжение темы трекинга — ip sla
там будет этот же конфиг но с добавленной строкой
track 100 list boolean and
object 101
object 102
object 103
object 104
не будем забегать вперед :)
0
vatezlo #
interface FastEthernet0/0.14
description -=I=- Internet over ISP2 -=I=-
encapsulation dot1Q 12
ip address 122.164.8.17 255.255.255.248
ip access-group ACL_INET_OUT_ISP2 out
ip nat outside
ip virtual-reassembly
no cdp enable

Я так понимаю, опечатка?

Кстати, сталкивался только с коммутаторами от циско…
Вопрос такой, ходит слух, что использование IEEE 802.1q то есть этих самых вланов сильно нагружает роутер. Типа как на коммутаторах это дело аппаратно обрабатывается, а на роутерах програмно.
Брешут?

0
eevdokimov #
да, в примере опечатка, исправил, спасибо.
это не слух, а так и есть, но что делать :) да и не сильно-то нагружает :)
по уму, конечно же ставить L3 коммутатор и радоваться жизни, но дорогое это удовольствие :(
0
vatezlo #
Угу. Спасибо.
0
kaasnake #
господа, а эту же задачу исключительно средствами Win2003 реально решить?
0
eevdokimov #
В принципе можно:
route ADD 10.10.10.0 MASK 255.255.255.0  157.55.80.1 METRIC 5
route ADD 10.10.10.0 MASK 255.255.255.0  175.80.55.1 METRIC 10

в случае падения линка на 157.55.80.1, все пакеты полетят в 175.80.55.1
0
kaasnake #
а можно ли в Win2003 с двумя подключениями сделать что-то типа DNAT? Т.е. например есть два провайдера. один используется для выхода в интернет а второй для обеспечения HTTP, SMTP, POP сервера и нужно чтобы пакет отправлялся по тому маршруту откуда он пришел.
0
eevdokimov #
Чего не знаю, того не знаю, но есть подозрение что стандартными средствами никак. В ISA есть реализация failover'а, но насколько она гибкая?
0
eucariot #
Наверно я уже опоздал, но есть вопрос.
У вас на интерфейсах адреса те же, что в ip route. Опечатка или это работает?
0
eevdokimov #
Опечатка :)
исправил, спасибо
0
eevdokimov #
Не исправил, какая-то засада с редактированием… не дает выбрать блог :(
0
eucariot #
С праздником!
Послушайте, у меня есть ещё вопрос. У меня есть циска 2801 и на команду ip sla она выдаёт следующее:

#ip sla ?
key-chain Use MD5 authentication for IP SLAs Control Messages
responder Enable IP SLAs Responder

ios не поддерживает?
Причём есть ещё 3925 — аналогично, 3725 вообще такой команды не знает. 2811 кажет ip sla monitor.
В общем такая команда есть только на 3550
0
eevdokimov #
И Вас с праздником.
Скорее всего дело в ИОСе, т.к. и 2801 и 2811 умеют ip sla.
Сходите вот сюда и проверьте возможность IP SLA на Ваших железках и ИОСах: tools.cisco.com/ITDIT/CFN/jsp/index.jsp
Вот что говорит у меня:

RTR003#sho ver | inc 2801
Cisco IOS Software, 2801 Software (C2801-SPSERVICESK9-M), Version 12.4(24)T4, RELEASE SOFTWARE (fc2)
System image file is "flash:c2801-spservicesk9-mz.124-24.T4.bin"
Cisco 2801 (revision 7.0) with 149504K/14336K bytes of memory.
RTR003#conf t
Enter configuration commands, one per line. End with CNTL/Z.
RTR003(config)#ip sla?
sla

RTR003(config)#ip sla ?
<1-2147483647> Entry Number
enable Enable Event Notifications
ethernet-monitor IP SLAs Auto Ethernet configuration
group Group Configuration or Group Scheduling
key-chain Use MD5 authentication for IP SLAs Control Messages
logging Enable Syslog
low-memory Configure Low Water Memory Mark
reaction-configuration IP SLAs Reaction-Configuration
reaction-trigger IP SLAs Trigger Assignment
reset IP SLAs Reset
responder Enable IP SLAs Responder
restart Restart An Active Entry
schedule IP SLAs Entry Scheduling

RTR003(config)#ip sla responder ?
auto-register Setup auto-register to hub
tcp-connect Setup tcp-connect responder
udp-echo Setup udp-echo responder
RTR003(config)#ip sla responder

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.