Лабораторная работа №5: BGP Community (массовое управление политиками)
Отредактирована 07.10.2026
1. Теория: Что такое Community?
community [kəˈmjuːnɪtɪ] сообщество
| Свойство | Описание |
|---|---|
| Формат | AS:значение (например, 65005:100 ) или просто число |
| Передача | По умолчанию не передаётся между eBGP-соседями, если не настроено send-community |
| Область действия | Может передаваться по iBGP и eBGP (при настройке) |
| Приоритет | Не влияет на выбор маршрута напрямую, только через политики |
🎯 Зачем нужны Community?
- К одной сети применять Local Preference 150 (приоритетная).
- К другой — Local Preference 120 (средняя).
- К третьей — Local Preference 100 (стандартная).
📋 Известные (well-known) Community
| Community | Значение |
|---|---|
| no-export | Не передавать маршрут за пределы AS |
| no-advertise | Не анонсировать маршрут никому (даже внутри AS) |
| local-as | Не передавать маршрут за пределы AS (но передавать внутри) |
| internet | Маршрут доступен в Интернете (по умолчанию) |
| Маршрутизатор | AS | Описание |
|---|---|---|
| R1 | 65001 | Вы — пограничный роутер, применяете политики |
| R2 | 65002 | ISP1 — внешний провайдер №1 |
| R3 | 65004 | ISP2 — внешний провайдер №2 |
| R4 | 65001 | Ваш внутренний роутер (iBGP) |
| R5 | 65005 | Внешняя организация — подключается к вам, анонсирует свои сети |
- R5 имеет собственную автономную систему (AS 65005), свою сетевую инфраструктуру и свои маршруты.
- Юридически или организационно R5 может быть отдельной структурой (дочерняя компания, партнёр, присоединённая организация), которая взаимодействует с вашей компанией через eBGP.
- Это классический сценарий для изучения BGP Community : когда внешняя организация передаёт свои маршруты, помеченные метками, а вы применяете к ним политики.
- R1 — пограничный маршрутизатор (border router) вашей сети. Именно он обеспечивает связь с внешним миром (провайдерами R2 и R4).
- R3 — внутренний роутер, он не предназначен для подключения внешних организаций.
- Подключение R5 к R1 — это стандартная архитектурная практика: внешние AS подключаются к пограничным роутерам.
| Вариант | Можно? | ЛР №5 работает? | Почему |
|---|---|---|---|
| Убрать R5 полностью | ✅ Да | ❌ Нет | Некуда применять Community. |
| Заменить R5 на R3 | ✅ Да | ❌ Нет | R3 — часть вашей AS, Community не нужны (используйте LocPrf). |
| Использовать R2/R4 как источник | ✅ Да | ❌ Нет | R2/R4 — провайдеры, вы не управляете их политикой. |
| Оставить R5 | ✅ Да | ✅ Да | R5 — внешняя AS, Community работают по назначению. |
- Он бы подключался к R1 или R3 через iBGP.
- Вместо Community вы бы использовали Local Preference напрямую (так как это внутренний атрибут AS).
- Но тогда терялся бы весь смысл лабораторной работы — изучение Community для управления политикой внешней AS.
R5(config)#interface Ethernet 1/0 R5(config-if)#ip address 10.0.0.17 255.255.255.252 R5(config-if)#no shutdown R5(config-if)#exit R5(config)#interface loopback 0 R5(config-if)#ip address 5.5.5.5 255.255.255.255 R5(config-if)#exit R5(config)#interface loopback 1 R5(config-if)#ip address 5.5.5.1 255.255.255.0 R5(config-if)#exit R5(config)#interface loopback 2 R5(config-if)#ip address 5.5.6.1 255.255.255.0 R5(config-if)#exit R5(config)#interface loopback 3 R5(config-if)#ip address 5.5.7.1 255.255.255.0 R5(config-if)#exit
| Интерфейс | IP-адрес | Назначение |
|---|---|---|
| Loopback 0 | 5.5.5.5/32 | Router ID для BGP. Стандартная практика: Router ID должен быть стабильным. |
| Loopback 1 | 5.5.5.1/24 | Сеть №1 — анонсируется с Community 65005:100 . |
| Loopback 2 | 5.5.6.1/24 | Сеть №2 — анонсируется с Community 65005:200 . |
| Loopback 3 | 5.5.7.1/24 | Сеть №3 — анонсируется с Community 65005:300 . |
- Одна сеть — не будет видно разницы между политиками.
- Secondary IP на одном loopback — менее наглядно для начинающих сетевых администраторов.
- Статические маршруты вместо loopback — сложнее для восприятия.
R5(config)#router bgp 65005 R5(config-router)#bgp router-id 5.5.5.5 R5(config-router)#neighbor 10.0.0.18 remote-as 65001 R5(config-router)#neighbor 10.0.0.18 description Provider_AS65001 R5(config-router)#network 5.5.5.0 mask 255.255.255.0 R5(config-router)#network 5.5.6.0 mask 255.255.255.0 R5(config-router)#network 5.5.7.0 mask 255.255.255.0 R5(config-router)#end R5#copy running-config startup-config
R1(config)#interface Ethernet 1/4 R1(config-if)#ip address 10.0.0.18 255.255.255.252 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#router bgp 65001 R1(config-router)#neighbor 10.0.0.17 remote-as 65005 R1(config-router)#neighbor 10.0.0.17 description External_Org_AS65005 R1(config-router)#end R1#copy running-config startup-config
R1#show ip bgp
5.5.5.0/24 , 5.5.6.0/24 , 5.5.7.0/24 с AS_PATH = 65005 .R5(config)#ip prefix-list NET_5_5_5 permit 5.5.5.0/24 R5(config)#ip prefix-list NET_5_5_6 permit 5.5.6.0/24 R5(config)#ip prefix-list NET_5_5_7 permit 5.5.7.0/24 R5(config)#route-map SET_COMMUNITY permit 10 R5(config-route-map)#match ip address prefix-list NET_5_5_5 R5(config-route-map)#set community 65005:100 R5(config-route-map)#exit R5(config)#route-map SET_COMMUNITY permit 20 R5(config-route-map)#match ip address prefix-list NET_5_5_6 R5(config-route-map)#set community 65005:200 R5(config-route-map)#exit R5(config)#route-map SET_COMMUNITY permit 30 R5(config-route-map)#match ip address prefix-list NET_5_5_7 R5(config-route-map)#set community 65005:300 R5(config-route-map)#exit R5(config)#router bgp 65005 R5(config-router)#neighbor 10.0.0.18 send-community R5(config-router)#neighbor 10.0.0.18 route-map SET_COMMUNITY out R5(config-router)#end R5#clear ip bgp 10.0.0.18
- Создали Route-Map, который назначает разные Community для разных сетей.
- Включили send-community — без этой команды метки не передаются eBGP-соседу!
- Применили Route-Map на исходящие маршруты ( out ).
R1#show ip bgp 5.5.5.0
BGP routing table entry for 5.5.5.0/24, version 4 Paths: (1 available, best #1) 65005 10.0.0.17 from 10.0.0.17 (5.5.5.5) Origin IGP, metric 0, localpref 100, valid, external, best Community: 65005:100
R1(config)#ip community-list standard ORG_HIGH permit 65005:100 R1(config)#ip community-list standard ORG_MED permit 65005:200 R1(config)#ip community-list standard ORG_LOW permit 65005:300 R1(config)#route-map SET_LOCAL_PREF permit 10 R1(config-route-map)#match community ORG_HIGH R1(config-route-map)# et local-preference 150 R1(config-route-map)#exit R1(config)#route-map SET_LOCAL_PREF permit 20 R1(config-route-map)#match community ORG_MED R1(config-route-map)#set local-preference 120 R1(config-route-map)#exit R1(config)#route-map SET_LOCAL_PREF permit 30 R1(config-route-map)#match community ORG_LOW R1(config-route-map)#set local-preference 100 R1(config-route-map)#exit R1(config)#router bgp 65001 R1(config-router)#neighbor 10.0.0.17 route-map SET_LOCAL_PREF in R1(config-router)#end R1#clear ip bgp 10.0.0.17
- Создали community-list — списки разрешённых Community.
- Создали Route-Map, который сопоставляет Community с действиями.
- Применили Route-Map на входящие маршруты ( in ).
R1#show ip bgp
Network Next Hop Metric LocPrf Weight Path *> 5.5.5.0/24 10.0.0.17 0 150 0 65005 i *> 5.5.6.0/24 10.0.0.17 0 120 0 65005 i *> 5.5.7.0/24 10.0.0.17 0 100 0 65005 i
- 5.5.5.0/24 (Community 65005:100 ) → LocPrf = 150 (высокий приоритет).
- 5.5.6.0/24 (Community 65005:200 ) → LocPrf = 120 (средний приоритет).
- 5.5.7.0/24 (Community 65005:300 ) → LocPrf = 100 (стандартный приоритет).
R1(config)#route-map NO_EXPORT permit 10 R1(config-route-map)#match community ORG_LOW R1(config-route-map)#set community no-export R1(config-route-map)#exit R1(config)#router bgp 65001 R1(config-router)#neighbor 10.0.0.5 route-map NO_EXPORT out R1(config-router)#end R1#clear ip bgp 10.0.0.5
5.5.7.0/24 меткой no-export . Когда R1 передаёт его R3 (внутреннему роутеру), R3 не будет анонсировать его дальше за пределы AS 65001.| Проблема | Вероятная причина | Решение |
|---|---|---|
| R1 не видит Community. | На R5 не настроен send-community . | Добавьте neighbor 10.0.0.18 send-community на R5. |
| Community не применяется. | Не сброшена BGP-сессия. | Выполните clear ip bgp 10.0.0.18 на R5 и clear ip bgp 10.0.0.17 на R1. |
| Route-Map не срабатывает. | Неправильный порядок строк (permit 10, 20, 30). | Убедитесь, что номера строк идут по возрастанию. |
| LocPrf не меняется. | Route-Map применён не в ту сторону ( out вместо in ). | Проверьте neighbor 10.0.0.17 route-map SET_LOCAL_PREF in |
| no-export не работает. | R3 не получает Community. | Убедитесь, что send-community настроен на R1 для соседа R3. |
| R5 не видит маршруты от R1. | Не настроен network на R5. | Добавьте network 5.5.5.0 mask 255.255.255.0 и т.д. |
| Вопрос | Ответ |
|---|---|
| 1. В каком формате записывается Community? | AS:значение (например, 65005:100 ). |
| 2. Передаётся ли Community по умолчанию между eBGP-соседями? | Нет, нужно явно настроить send-community . |
| 3. Влияет ли Community на выбор маршрута напрямую? | Нет, Community используется только для применения политик. |
| 4. Что делает well-known Community no-export ? | Запрещает анонс маршрута за пределы текущей AS. |
| 5. Почему Community удобнее, чем перечисление префиксов? | Позволяет одной политикой управлять группой маршрутов без необходимости перечислять их вручную. |
| Атрибут | Приоритет | Область действия | Направление | Влияет на выбор? |
|---|---|---|---|---|
| Weight | 1 (высший) | Локальный маршрутизатор | in | ✅ Да |
| Local Preference | 2 | Вся AS | in | ✅ Да |
| AS_PATH Prepending | 3 | Внешние соседи | out | ✅ Да |
| MED | 4 | Соседняя AS | out | ✅ Да |
| Community | — | Передаётся между AS | in/out | ❌ Нет (только для политик) |