Vyatta 6.0 Beta доступна для загрузки. Там же, где и обычно: http://www.vyatta.org/downloads. Тестируем и ждем финального релиза.
Полный текст сообщения
Vyatta 6.0 Beta доступна для загрузки. Там же, где и обычно: http://www.vyatta.org/downloads. Тестируем и ждем финального релиза.
Не так давно один хороший человек попросил помочь с настройкой BGP во Vyatta 5.0.2. Этот маршрутизатор используется как граница сети провайдера VoIP. Почти все адреса и номера автономных систем заменены на абстрактные, на всякий случай. Входные данные следующие:
Обозначим нашу сеть x.x.x.0/24; маршрутизатор Cogent, отдающий анонсы y.y.y.y; принимающий анонсы z.z.z.z; адрес источника для принимаемых нами маршрутов t.t.t.t; адрес второго соседа w.w.w.w. Номер нашей автономной системы обозначим 65501, второго соседа за 65502, Cogent оставим как он есть — 174.
Активируем процесс BGP, указываем соседей и анонсируемые сети.
edit protocols bgp 65501 set neighbor y.y.y.y remote-as 174 # Отдает нам маршруты из Cogent set neighbor z.z.z.z remote-as 174 # Принимает наши маршруты в Cogent set neighbor w.w.w.w remote-as 65502 # Второй сосед set network x.x.x.0/24 # Наша сеть set network t.t.t.t/32 # Адрес источника маршрутов из Cogent exit commit
Теперь надо что-то сделать с адресом источника маршрутов. Учитывая, что ни для чего больше он не используется, его обычно вешают на петлевой интерфейс (в Cisco это было бы единственным способом, поскольку в качестве источника анонсов там указывался интерфейс, а не адрес).
set interfaces loopback lo address t.t.t.t/32 commit
Учитывая, что соседи хотят видеть в наших анонсах только нашу сеть, а один из соседей вовсе не должен ничего получать, нам нужно настроить политики маршрутизации. Мы сделаем это с помощью «карт маршрутов» (route-map).
Сначала нужно определить списки сетей (prefix-list), которые будут использованы. Вот список наших сетей:
edit policy prefix-list AdvertisedRoutes set rule 1 action permit set rule 1 prefix t.t.t.t/32 set rule 2 action permit set rule 2 pefix x.x.x.0/24 exit commit
И соответствующая карта маршрутов: анонсируем сети из списка AdvertisedRoutes, не анонсируем ничего другого.
edit policy route-map Advertise set rule 1 action permit set rule 1 match ip address prefix-list AdvertisedRoutes set rule 2 action deny exit commit
Карта маршрутов, запрещающая анонсирование чего бы то ни было:
edit policy route-map NoAdvertise set rule 1 action deny exit commit
Теперь создадим карту, которая будет увеличивать вес маршрутам из Digiport, чтобы при наличии в анонсах обоих маршрут через него считался приоритетным.
edit policy route-map DigiportPrioritize set rule 1 action permit set rule 1 set weight 10 # Устанавливаем вес 10, по умолчанию он 0 exit commit
Теперь мы закончили с политикой, и можно настроить самих соседей. Начнем с того, который отдает нам маршруты Cogent.
edit protocols bgp 65501 set neighbor y.y.y.y ebgp-multihop 5 set neighbor y.y.y.y route-map export NoAdvertise set neighbor y.y.y.y update-source t.t.t.t exit commit
Параметр ebgp-multihop отвечает за максимальное расстояние до маршрутизатора, если он не является соединенным напрямую. Параметр update-source определяет, какой адрес будет указан источником анонсов. Опция route-map export указывает карту маршрутов, которая будет применена к исходящим анонсам (для входящих нужно заменить там export на import).
Теперь переходим к тому, который принимает анонсы.
edit protocols bgp 65501 set neighbor z.z.z.z route-map export Advertise exit commit
И закончим это все вторым соседом.
edit protocols bgp 65501 set neighbor w.w.w.w route-map export Advertise set neighbor w.w.w.w route-map import DigiportPrioritize exit commit
Настроим маршрут по умолчанию через Cogent, чтобы ходить через него в те сети, которые он не анонсирует, хотя они через него доступны транзитом. (пусть адрес маршрутизатора будет q.q.q.q)
set protocols static route 0.0.0.0/0 next-hop q.q.q.q
Теперь можно полюбоваться на проделанную работу.
policy { prefix-list AdvertisedRoutes { rule 1 { action permit prefix t.t.t.t/32 } rule 2 { action permit prefix x.x.x.0/24 } } route-map Advertise { rule 1 { action permit match { ip { address { prefix-list Advertised } } } } rule 2 { action deny } } route-map DigiportPrioritize { rule 1 { action permit set { weight 10 } } } route-map NoAdvertise { rule 1 { action deny } } } protocols { bgp 65501 { neighbor y.y.y.y { ebgp-multihop 5 remote-as 174 route-map { export NoAdvertise } update-source t.t.t.t } neighbor z.z.z.z { remote-as 174 route-map { export Advertise } } neighbor w.w.w.w { remote-as 65502 route-map { export Advertise import DigiportPrioritize } } network t.t.t.t/32 { } network x.x.x.0/24 { } } static { route 0.0.0.0/0 { next-hop q.q.q.q { } } } }
Vyatta имеет ряд полезных команд операционного режима, позволяющих посмотреть на происходящее.
vyatta@vyatta:~$ show ip bgp neighbors y.y.y.y advertised-routes vyatta@vyatta:~$ show ip bgp neighbors z.z.z.z advertised-routes BGP table version is 0, local router ID is t.t.t.t Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> t.t.t.t/32 xx.xxx.xx.xx 1 32768 i *> x.x.x.x.0/24 xx.xxx.xx.xx 1 32768 i Total number of prefixes 2 vyatta@vyatta:~$ show ip bgp neighbors w.w.w.w advertised-routes BGP table version is 0, local router ID is t.t.t.t Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> t.t.t.t/32 zzz.zz.z.zzz 1 32768 35978 35978 35978 35978 i *> x.x.x.0/24 zzz.zz.z.zzz 1 32768 35978 35978 35978 35978 i Total number of prefixes 2
Как мы убедились с помощью команды show ip bgp neighbor <адрес> advertised-routes, первому не анонсируется ничего, а остальным наша подсеть и адрес источника. Всех соседей можно увидеть с помощью show ip bgp neighbors.
Список всех полученных маршрутов можно увидеть в show ip bgp. Посмотрим небольшой фрагмент.
BGP table version is 0, local router ID is t.t.t.t Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 www.ww.w.www 10 31846 ? *> 4.23.112.0/24 xx.xxx.xx.xxx 5010 0 174 21889 i *> 4.23.113.0/24 xx.xxx.xx.xxx 5010 0 174 21889 i *> 4.23.114.0/24 xx.xxx.xx.xxx 5010 0 174 21889 i *> 4.36.118.0/24 xx.xxx.xx.xxx 5010 0 174 21889 i *> 4.59.23.0/24 xx.xxx.xx.xxx 36990 0 174 33042 i *> 4.79.98.8/30 www.ww.w.www 10 31846 i *> 4.79.248.0/24 xx.xxx.xx.xxx 1000 0 174 12180 12180 12180 12180 12180 i
Как видно, вес у маршрутов от второго соседа действительно поменялся.
С помощью show ip bgp summary можно узнать некоторую общую статистику.
vyatta@vyatta:~$ show ip bgp summary BGP router identifier t.t.t.t, local AS number 65501 RIB entries 73927, using 4620 KiB of memory Peers 3, using 7560 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd y.y.y.y 4 174 331654 30759 0 0 0 01w1d03h 38882 z.z.z.z 4 174 30540 30764 0 0 0 01w1d03h 1 w.w.w.w 4 65502 61550 61503 0 0 0 4d07h43m 159 Total number of neighbors 3
С помощью show ip route можно убедиться, что наши маршруты действительно попали в FIB. Там они имеют префикс B.
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route B 0.0.0.0/0 [20/0] via www.ww.w.www, 4d07h49m S>* 0.0.0.0/0 [1/0] via yy.yyy.yy.yyy, eth1 B>* 4.23.112.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h B>* 4.23.113.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h B>* 4.23.114.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h B>* 4.36.118.0/24 [20/5010] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h B>* 4.59.23.0/24 [20/36990] via xx.xxx.xx.xxx, eth1 (recursive via yy.yyy.yy.yyy), 01w1d03h
Настроенный маршрутизатор уже несколько недель отлично выполняет свои задачи (хотя в организационном плане мы с этими провайдерами утомились общаться). Владелец заметил огромный прирост производительности в сравнении с Cisco 2621, который раньше стоял на этом месте.
Надеюсь, этот пример настройки окажется кому-то полезным.
Блог посвящен различным техническим вопросам, преимущественно сетям передачи данных, UNIX-подобным системам, информационной безопасности и разработке веб-приложений.
Крайне приветствуется конструктивная критика и обсуждения по теме статей.
По всем вопросам обращайтесь на почту daniil@baturin.org. Jabber UID (вернее, Google Talk) совпадает с почтой.
В виду отсутствия у русскоязычных пользователей Vyatta единой точки обмена опытом, я зарегистрировал jabber-конференцию с адресом vyatta@conference.jabber.ru
Желающие пообщаться по этой теме в реальном времени — добро пожаловать!
Вы можете использовать все материалы блога на условиях лицензии Creative Commons Attribution-Share Alike 3.0 Unported License, если иное не указано явно.
Это значит, что вы можете использовать их, распространять и создавать производные работы, пока вы указываете авторство и сохраняете те же условия (указание лицензии обязательно).
Для использования на других условиях требуется явное разрешение автора.