Два провайдера.

Часто бывает так, что локальная сеть имеет два выхода в Internet, то есть двух провайдеров. Пусть это будут ISP1 и ISP2. эти два канала можно использовать следующим образом:

  • одновременно использовать два канала для load-balancing
  • один канал основной, второй backup’ный

второй канал можно использовать также двумя способами

  • использовать его при падении основного
  • при загрузке основного канала на Х% подключать backup’ный

Если рассматривать вырожденный случай, когда провайдер один и два канала, то тут всё просто. Надо прописать два маршрута по умолчанию одинаковыми метриками

ip route 0.0.0.0 0.0.0.0 195.0.1.2
ip route 0.0.0.0 0.0.0.0 195.0.1.6

И соответственно если мы хотим сделать per-packet load-balancing, то на всех интерфейсах, которые соединяют нас с провайдером, ставим no ip route-cache, если же нужно per-destination, то на всех — ip route-cache. Заметьте, что если хотя бы на одном выходном интерфейсе используется NAT, то нельзя использовать per-packet, так как это приведёт к пропаданию пакетов. Также применение policy routing выключает fast switching.

Если ваша циска поддерживает cef (cisco express forwarding), то тогда для per-packet

ip route-cache cef
ip cef per-packet

для per-destination

ip route-cache cef
ip cef per-destination

можно также договорится с провайдером, и объединить два канала в один логический, используя ppp multilink.

Если провайдеров — два, то они оба а общем случае, предоставляют вам по блоку адресов. Как их использовать? Разместить их за NAT’ом и скрыть топологию сети или использовать реальные адреса? Первое более просто реализовать и к томуже не будет потерян fast switching. Если рассматривать второе, то устройства, имеющие ip адреса первого провайдера, должны ходить через ISP1, а второго — через ISP2. Если упал канал второго провайдера, то устройства с ip адресами из блока второго провайдера не смогут выйти в Internet. Хорошо бы использовать первый канал, но ip адреса — не те. Надо использовать NAT. Если же выйдет из строя первый, то аналогично занатим и пустим через второго.

Так как имеем в сети два блока адресов, то надо применять source-routing. Так как нам нужно определить source ip-адрес пакета, и в зависимости от этого, отправить его либо ISP1 либо ISP два.

Если циска старая ли ios ip only, то есть не поддерживает VLAN’ы на интерфейсе будет что-то типа

!
interface Ethernet0
 ip address 195.0.1.1 255.255.255.0
 ip address 195.0.2.1 255.255.255.0 secondary
 ip nat inside
 ip policy route-map ISP 
!

если поддерживает ip plus и выше

!
interface Ethernet0/0.1
 encapsulation dot1Q 1
 ip address 195.0.1.1 255.255.255.0
 ip nat inside
 ip policy route-map ISP1
!
interface Ethernet0/0.2
 encapsulation dot1Q 2
 ip address 195.0.2.1 255.255.255.0
 ip nat inside
 ip policy route-map ISP
!

теперь разберёмся с route-map’ами

если вы решили разместить их за NAT’ом и скрыть топологию сети, то эту часть можно пропустить. Надо только обязательно включить fast switching, иначе работать не будет. В случае же когда используются реальные адреса, то если внутренний интерфейс не поддерживает VLAN, пишем следующее

! если это пакет локальный пакет, то пусть циска сама роутит... 
route-map ISP deny Local
 match ip address 100
! если пакет с адресом из первого провайдера и канал up 
! то отправляем его первому провайдеру
route-map ISP permit 20
 match ip address ISP1
 set ip next-hop 194.16.0.5
! если пакет с адресом из второго провайдера и канал up 
! то отправляем его второму провайдеру
route-map ISP permit 30
 match ip address ISP2
 set ip next-hop 194.16.0.9
!

если внутренний интерфейс поддерживает VLAN или внутренних интерфейсов два, то

!
[skip]
!
route-map ISP1 permit 20
 match ip address ISP1
 set ip next-hop 194.16.0.5
!
[skip]
!
route-map ISP2 permit 20
 match ip address ISP2
 set ip next-hop 194.16.0.9
!

Local — это ACL, который ловит пакеты, source и destination адреса которых из блоков, предоставленных первым или вторым провайдером.
ISP1 — это ACL, который ловит пакеты с source-адресами из блока, предоставленного ISP1
ISP2 — это ACL, который ловит пакеты с source-адресами из блока, предоставленного ISP2
ISP — это ACL, который ловит пакеты с source-адресами из блоков, предоставленных ISP1 и ISP2

и так… разобрались. Пакеты будут посланы на нужные интерфейсы. Теперь разбираемся с NAT’ом.

Для NAT’а также нужно написать route-map.

!
route-map ISP2-NAT permit 10
 match ip address ISP1
 match interface Serial0/1
!
route-map ISP1-NAT permit 10
 match ip address ISP2
 match interface Serial0/0
!
! ISP1-pool - это пул ip-адресов, которые будут 
! использованы при падении второго канала
ip nat inside source route-map ISP1-NAT pool ISP1-pool overload
!
! ISP2-pool - это пул ip-адресов, которые будут 
! использованы при падении первого канала
ip nat inside source route-map ISP2-NAT pool ISP2-pool overload

Оригинал: cisco.far.ru/2isp.html

Запись опубликована в рубрике *CentOS, *Lan&Wan, *Unix,*Linux, *Windows, *Сети, FreeBSD, Hyper-V. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91