1AS 2Бордера 2аплинка

Статическая и динамическая, протоколы

1AS 2Бордера 2аплинка

Сообщение redrabbit » 23 июл 2010, 10:19

Приветствую.
Стоит задача организовать отказоустойчивую от падения интернета схему.
Задача тривиальная, но из-за нехватки опыта и знаний не знаю с какой стороны подступиться.

Имеется:
Два Linux-шлюза c quagga, в каждый идет по аплинку от разных провайдеров.
Что сделано:
shema.png


Подняты BGP c имеющимися провайдерами, поднят IBGP между шлюзами.
На локальных интерфейсах RouterA, RouterB, Comp1 подняты PI IP из анонсируемой ими сети 160.10.30.0/24.
На компьютере Comp1 шлюзом прописан локальный PI IP роутера RouterA 160.10.30.1.

Необходимо добиться того, чтобы трафик с Comp1 по дефолту шел через ISP1, а в случае падения ISP1 - переключался на ISP2.

RouterA bgpd.conf
Код: Выделить всё
router bgp 100
 bgp router-id 170.10.20.2
 network 160.10.30.0/24
 neighbor 170.10.20.1 remote-as 200
 neighbor 160.10.30.2 remote-as 100
 no synchronization



RouterB bgpd.conf
Код: Выделить всё
router bgp 100
bgp router-id 190.10.50.2
network 160.10.30.0/24
neighbor 190.10.50.1 remote-as 300
neighbor 160.10.30.1 remote-as 100
no synchronization
redrabbit
новичок
 
Сообщения: 10
Зарегистрирован: 23 июл 2010, 09:42

Re: 1AS 2Бордера 2аплинка

Сообщение root » 23 июл 2010, 10:41

redrabbit писал(а):чтобы трафик с Comp1 по дефолту шел через ISP1, а в случае падения ISP1 - переключался на ISP2.

тогда тебе нужно создать маршрутную карту (route-map) на ISP1 и на iBGP соседа и разрулить этот вопрос метриками, local-preference или weight
т.е. выставлять на приходящие маршруты от ISP1 метрику больше чем на маршруты от iBGP соседа

З.Ы. Если все что приведено в кач-ве конфигов bgp роутеров, то это жесть.....
а где же фильтрация хлама ? серых асок, серых сетей например ?
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: 1AS 2Бордера 2аплинка

Сообщение redrabbit » 23 июл 2010, 10:52

Так?:

Код: Выделить всё
router bgp 100
bgp router-id 170.10.20.2
network 160.10.30.0/24
neighbor 170.10.20.1 remote-as 200
neighbor 170.10.20.1 route-map ISP1 out
neighbor 160.10.30.2 remote-as 100
neighbor 160.10.30.2 route-map ISP2 out
no synchronization
!
ip as-path access-list 5 permit ^100$
!
route-map ISP1 permit 10
match as-path 5
set weight 2000
route-map ISP2 permit 20
set weight 1000


Да, это целиком все конфиги, настраивал по мануалам на OpenNet. По поводу фильтрации если поясните для чего это и\или покажете куда мне идти (что читать) - буду очень признателен.
redrabbit
новичок
 
Сообщения: 10
Зарегистрирован: 23 июл 2010, 09:42

Re: 1AS 2Бордера 2аплинка

Сообщение root » 23 июл 2010, 10:54

Так?

нет, не так

Вот твой полный копи-паст пример для роутера cisco, смотри как описаны соседи и маршрутные карты для них (на quagga ессно тоже будет работать):

RouterA
Код: Выделить всё
configure terminal
ip classless
ip routing
ip subnet-zero
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 bgp deterministic-med
 bgp router-id 170.10.20.2
 network 160.10.30.0/24
 neighbor 170.10.20.1 remote-as 200
 neighbor 170.10.20.1 description ISP-1
 neighbor 170.10.20.1 send-community
 neighbor 170.10.20.1 version 4
 neighbor 170.10.20.1 soft-reconfiguration inbound
 neighbor 170.10.20.1 route-map map-AS200-in in
 neighbor 170.10.20.1 route-map map-AS200-out out
 neighbor 160.10.30.2 remote-as 100
 neighbor 160.10.30.2 description iBGP
 neighbor 160.10.30.2 send-community
 neighbor 160.10.30.2 version 4
 neighbor 160.10.30.2 soft-reconfiguration inbound
 neighbor 160.10.30.2 route-map map-AS100-in in
 neighbor 160.10.30.2 route-map map-AS100-out out
distance bgp 180 200 200
 no auto-summary
exit
ip route 160.10.30.0 255.255.255.0 Null0 254
ip bgp-community new-format
ip as-path access-list 1 permit _6451[2-9]_
ip as-path access-list 1 permit _645[2-9][0-9]_
ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
ip as-path access-list 1 permit _65[0-9][0-9][0-9]_
ip prefix-list bogons description bogus nets
ip prefix-list bogons seq 15 permit 0.0.0.0/8 le 32
ip prefix-list bogons seq 20 permit 127.0.0.0/8 le 32
ip prefix-list bogons seq 25 permit 192.0.2.0/24 le 32
ip prefix-list bogons seq 30 permit 10.0.0.0/8 le 32
ip prefix-list bogons seq 35 permit 172.16.0.0/12 le 32
ip prefix-list bogons seq 40 permit 192.168.0.0/16 le 32
ip prefix-list bogons seq 45 permit 169.254.0.0/16 le 32
ip prefix-list bogons seq 50 permit 192.42.172.0/24 le 32
ip prefix-list bogons seq 55 permit 198.18.0.0/15 le 32
ip prefix-list bogons seq 60 permit 192.88.99.0/24 le 32
ip prefix-list bogons seq 65 permit 224.0.0.0/4 le 32
ip prefix-list bogons seq 70 permit 240.0.0.0/4 le 32
ip prefix-list our-pref permit 160.10.30.0/24
route-map map-AS200-in deny 100
description -- filter private ASs
match as-path 1
exit
route-map map-AS200-in deny 110
description -- -- filter bogons
match ip address prefix-list bogons
exit
route-map map-AS200-in permit 200
description -- permit any else, set default loc-pref, set community
set local-preference 100
set community 100:200
exit
route-map map-AS200-out permit 100
description -- permit our prefixes
match ip address prefix-list our-pref
exit
route-map map-AS100-in permit 200
description -- permit any else, set default loc-pref, set community
set local-preference 50
set community 100:100
exit
route-map map-AS100-out permit 100
description -- permit full-view
exit

exit


на маршруты от ISP-1 выставляется local-preference 100, а на маршруты iBGP соседа set local-preference 50
таким образом пока ISP-1 жив приоритнее для исх. трафика будет канал ISP1, а если он упадет, то трафик побежит на iBGP соседа
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: 1AS 2Бордера 2аплинка

Сообщение redrabbit » 23 июл 2010, 11:41

Подправил конфиг под quagga:
Ничего не забыл?
убрал строчки

Код: Выделить всё
configure terminal
ip classless
ip routing
ip subnet-zero
ip route 160.10.30.0 255.255.255.0 Null0 254

exit-ы все тоже убрал, квага вроде как в них не нуждается

Код: Выделить всё
router bgp 100
no synchronization
bgp log-neighbor-changes
bgp deterministic-med
bgp router-id 170.10.20.2
network 160.10.30.0/24
neighbor 170.10.20.1 remote-as 200
neighbor 170.10.20.1 description ISP-1
neighbor 170.10.20.1 send-community
neighbor 170.10.20.1 version 4
neighbor 170.10.20.1 soft-reconfiguration inbound
neighbor 170.10.20.1 route-map map-AS200-in in
neighbor 170.10.20.1 route-map map-AS200-out out
neighbor 160.10.30.2 remote-as 100
neighbor 160.10.30.2 description iBGP
neighbor 160.10.30.2 send-community
neighbor 160.10.30.2 version 4
neighbor 160.10.30.2 soft-reconfiguration inbound
neighbor 160.10.30.2 route-map map-AS100-in in
neighbor 160.10.30.2 route-map map-AS100-out out
distance bgp 180 200 200
no auto-summary
!
ip bgp-community new-format
ip as-path access-list 1 permit _6451[2-9]_
ip as-path access-list 1 permit _645[2-9][0-9]_
ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
ip as-path access-list 1 permit _65[0-9][0-9][0-9]_
ip prefix-list bogons description bogus nets
ip prefix-list bogons seq 15 permit 0.0.0.0/8 le 32
ip prefix-list bogons seq 20 permit 127.0.0.0/8 le 32
ip prefix-list bogons seq 25 permit 192.0.2.0/24 le 32
ip prefix-list bogons seq 30 permit 10.0.0.0/8 le 32
ip prefix-list bogons seq 35 permit 172.16.0.0/12 le 32
ip prefix-list bogons seq 40 permit 192.168.0.0/16 le 32
ip prefix-list bogons seq 45 permit 169.254.0.0/16 le 32
ip prefix-list bogons seq 50 permit 192.42.172.0/24 le 32
ip prefix-list bogons seq 55 permit 198.18.0.0/15 le 32
ip prefix-list bogons seq 60 permit 192.88.99.0/24 le 32
ip prefix-list bogons seq 65 permit 224.0.0.0/4 le 32
ip prefix-list bogons seq 70 permit 240.0.0.0/4 le 32
ip prefix-list our-pref permit 160.10.30.0/24
route-map map-AS200-in deny 100
description -- filter private ASs
match as-path 1
!
route-map map-AS200-in deny 110
description -- -- filter bogons
match ip address prefix-list bogons
!
route-map map-AS200-in permit 200
description -- permit any else, set default loc-pref, set community
set local-preference 100
set community 100:200
!
route-map map-AS200-out permit 100
description -- permit our prefixes
match ip address prefix-list our-pref
!
route-map map-AS100-in permit 200
description -- permit any else, set default loc-pref, set community
set local-preference 50
set community 100:100
!
route-map map-AS100-out permit 100
description -- permit full-view
!

!



единственно мне не совсем понятны строчки:
Код: Выделить всё
ip as-path access-list 1 permit _6451[2-9]_
ip as-path access-list 1 permit _645[2-9][0-9]_
ip as-path access-list 1 permit _64[6-9][0-9][0-9]_
ip as-path access-list 1 permit _65[0-9][0-9][0-9]_


- это что-то типа зарезервированных под локальные нужды номеров AS-ок? Что-то вроде сетей 192.168.0.0/24 10.0.0.0/16 ?

Еще одна неприятность - quagga не принимает конструкцию
ip bgp-community new-format
Если строчку удаляю - конфиг применяется, и bgpd стартует нормально. Вопрос - а оно вообще в конфиге quagga нужно?
redrabbit
новичок
 
Сообщения: 10
Зарегистрирован: 23 июл 2010, 09:42

Re: 1AS 2Бордера 2аплинка

Сообщение root » 23 июл 2010, 17:23

redrabbit писал(а):exit-ы все тоже убрал, квага вроде как в них не нуждается

дык я ж написал, что это копи-паст конфиг :D
есть у нас на сайте такая штука как Генерация полного конфига для BGP, вот я сгенерил и немного подправил конфиг под тя, т.к. генератору нужны реальные номера ASсок, т.к. он подтягивает данные из БД RIPE
т.е. зашел в консоль, скопировал то что я выложил и вставил в консоль, потому и exit`ы написаны и первой строкой идет вход в решим конфигурирования (configure terminal) :)
а не всмысле того что взял и запихал прям так в bgpd.conf
зайди телнетом:
Код: Выделить всё
telnet QUAGGA_IP 2605

зайди в режим enable и копи-пасть туда то что я выложил
что ему не понравится он ругнется и не выполнит, а остальное добавит
после чего тебе останется тока дать команду на сохранение конфига ;)

redrabbit писал(а):это что-то типа зарезервированных под локальные нужды номеров AS-ок? Что-то вроде сетей 192.168.0.0/24 10.0.0.0/16 ?

именно, как есть диапазоны серых сетей, которые не ходят в Инете, так же есть диапазон серых ASок, которые так же не ходят в инете и юзаются тока локально.

redrabbit писал(а):Еще одна неприятность - quagga не принимает конструкцию
ip bgp-community new-format

redrabbit писал(а):Вопрос - а оно вообще в конфиге quagga нужно?

нет, можно её убрать
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: 1AS 2Бордера 2аплинка

Сообщение redrabbit » 23 июл 2010, 19:39

Попробовал потестировать - выдернул из RouterA интернет ISP1. При этом переключения не произошло: снаружи пакеты по-прежнему шли через ISP1, кроме того - почему-то упал интерфес RouterA 160.10.30.1. Т.е. я не мог пинговать его с RouterB.
Может эта проблема возникла из-за того что я в конфиге RouterA указал
Код: Выделить всё
bgp router-id 170.10.20.2

а надо было настраивать на loopback-ах?
redrabbit
новичок
 
Сообщения: 10
Зарегистрирован: 23 июл 2010, 09:42

Re: 1AS 2Бордера 2аплинка

Сообщение root » 25 июл 2010, 09:49

redrabbit писал(а):выдернул из RouterA интернет ISP1

зачем же так жестко
чтобы потестить достаточно убрать или анонсы своего блока адресов (подправить route-map на out) в сторону ISP1 или просто выключить сессию с соседом
Код: Выделить всё
neighbor 170.10.20.1 shutdown


redrabbit писал(а):При этом переключения не произошло: снаружи пакеты по-прежнему шли через ISP1

ну они могут идти через ISP1, но уже через RouterB, т.к. он же продолжает анонсировать твой блок адресов через ISP2 и ISP1 может видеть этот маршрут

redrabbit писал(а):кроме того - почему-то упал интерфес RouterA 160.10.30.1.

разбирайся с этим, погляди в логи, м.б. там чего полезного на эту тему написано

redrabbit писал(а):Т.е. я не мог пинговать его с RouterB.

160.10.30.0 - для твоих роутеров является directly connected сеткой на интерфейсе, а значит падение BGP никак не влияет на связность RouterA с RouterB
если связность была потеряна, то причина явно не в BGP протоколе

redrabbit писал(а):bgp router-id 170.10.20.2

router-id необязательный параметр, от него зависит только одно, это один из критериев выбора лучшего маршрута в алгоритме bgp best path selection, а точнее последний критерий если остальные не совпали
10. Выбирается путь с наименьшим IP адресом из тех, которые указываются by the BGP router ID.

обычно в кач-ве router-id используют наименьший IP (находящийся на этом роутере) из своего диапазона адресов
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: 1AS 2Бордера 2аплинка

Сообщение redrabbit » 28 июл 2010, 15:09

Конфиги переделал, маршрут выбираю с помощью весовых коэффициентов, вот таким образом:

RouterA
Код: Выделить всё
router bgp 100
no synchronization
bgp router-id 170.10.20.2
network 160.10.30.0
neighbor 172.10.20.1 remote-as 200
neighbor 172.10.20.1 route-map ISP1 in
neighbor 160.10.30.2 remote-as 100
neighbor 160.10.30.2 route-map ISP2 in
!
ip as-path access-list 5 permit ^200$
!
route-map ISP1 permit 10
match as-path 5
set weight 2000
route-map ISP2 permit 20



RouterB
Код: Выделить всё
router bgp 100
bgp router-id 190.10.50.2
network 160.10.30.0
neighbor 190.10.50.1 remote-as 300
neighbor 160.10.30.1 remote-as 100
no synchronization



При падении основного канала в таблице маршрутов на RouterA дефолтный маршрут меняется с 170.10.20.1 на 190.10.50.1, интернет на RouterA - работает через резервный канал, как и полагается. Однако на Comp1 при попытке пропинговать внешний хост получаю ответ от 160.10.30.1 (Redirect next hop 160.10.30.2).
redrabbit
новичок
 
Сообщения: 10
Зарегистрирован: 23 июл 2010, 09:42

Re: 1AS 2Бордера 2аплинка

Сообщение root » 28 июл 2010, 17:04

redrabbit писал(а):Конфиги переделал, маршрут выбираю с помощью весовых коэффициентов, вот таким образом:

Код: Выделить всё
ip as-path access-list 5 permit ^200$

как я вижу ты не совсем понимаешь что именно ты написал и о чем именно ты попросил роутер
расскажи своими словами как ты думаешь что это по твоему должно сделать, а потом глянь сюда:

а где фильтрация хлама ? зачем её то ты убрал из роут мапы ?

redrabbit писал(а):Однако на Comp1 при попытке пропинговать внешний хост получаю ответ от 160.10.30.1 (Redirect next hop 160.10.30.2).

а ты попробуй на обоих своих роутерах добавить команду:
RouterA
Код: Выделить всё
neighbor 160.10.30.2 next-hop-self

RouterB
Код: Выделить всё
neighbor 160.10.30.1 next-hop-self


iBGP sessions preserve the next hop attribute learned from eBGP peers. This is why it is important to have an internal route to the next hop. The BGP route is otherwise unreachable. In order to make sure you can reach the eBGP next hop, include the network that the next hop belongs to in the IGP or issue the next-hop-self neighbor command to force the router to advertise itself, rather than the external peer, as the next hop. Refer to the BGP Next Hop Attribute section of BGP Case Studies for a more detailed explanation.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

След.

Вернуться в Маршрутизация / Routing

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

cron