По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В статье поговорим о борьбе со спамом в мире телефонии. Существует множество различных программ для блокировки спама на мобильных телефонах, а вот найти что-то подобное для IP-АТС и IP-телефонов – уже сложнее.
В Telegram есть специальный бот для определения спам-звонков. Бот определяет спамеров, местоположение и оператора связи. Предназначен для IP-АТС (Asterisk, FreePBX, FreeSWITCH), IP-телефонов и CRM. Если фиксируется спам-звонок, то сервис присылает уведомление в Telegram с соответствующей пометкой и названием оператора связи. API ссылка так же возвращает текст с названием оператора.
Таким образом если указать эту ссылку в Asterisk, то сообщение с пометкой спам и оператором связи отобразится в Telegram и на экране IP-телефона, а в статистике CDR всегда можно будет фильтровать выдачу по операторам связи.
Помечая звонок как “спам”, все пользователи вносят свой вклад в расширение спам-базы. Возможности сервиса:
Определение номеров по спам-базам;
Персональный спам список;
Определение страны/города;
Определение оператора связи;
Добавление комментариев к звонку.
Подключение API
Телеграм бот:
telegram.org/phone_info_bot
t.me/phone_info_bot
Альтернативная ссылка:
tele.gg/phone_info_bot
Ссылка:
http://rustyle.tmweb.ru/bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php?in_num=ВХОДЯЩИЙ_НОМЕР&dst_num=НОМЕР_НАЗНАЧЕНИЯ&user_id=ВАШ_USER_ID
Получить user ID можно обратившись к боту по одной из ссылок выше.
Подключение FreePBX
Перейдите в Web-интерфейс, в меню Admin → CallerID Lookup Sources → Add CID Lookup Source и заполните следующие поля:
В поле Source type выберите HTTP;
В поле Host укажите rustyle.tmweb.ru;
В поле Path введите bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php;
И наконец – в поле Query введите следующее: in_num=[NUMBER]&dst_num=${FROM_DID}&user_id=ВАШ_USER_ID;
В поле Query не забудьте заменить ВАШ_USER_ID. Параметры [NUMBER] и ${FROM_DID} менять не нужно - оставьте без изменений.
Далее переходим в меню Connectivity → Inbound Routes, выбираем или создаем маршрут, переходим на вкладку Other → CID Lookup Source и выбираем источник из предыдущего шага.
ВХОДЯЩИЙ_НОМЕР - Код страны и телефон. Пример: 74991234567;
НОМЕР_НАЗНАЧЕНИЯ - Код страны и телефон. Пример: 74991234567;
ВАШ_USER_ID = Выдается при запуске бота;
Готово. Есть вопрос – пиши в комментариях :)
RPM (Red Hat Package Manager) - это наиболее популярная утилита управления пакетами для Linux систем на базе Red Hat, таких как (RHEL, CentOS и Fedora). Она используется для установки, удаления, обновления, запроса и проверки пакетов программного обеспечения. Пакет состоит из архива файлов и информации о пакете, включая имя, версию и описание. Формат файлов также называется RPM.
Есть несколько способов откуда можно взять пакеты RPM: CD/DVD с программным обеспечением, CentOS Mirror, RedHat (нужен аккаунт) или любые открытые сайты репозитория.
В RPM используется несколько основных режимов команд: Install (используется для установки любого пакета RPM), Remove (используется для удаления, стирания или деинсталляции пакета), Upgrade (используется для обновления существующего пакета), Query (используется для запроса пакета) и Verify (используется для проверки пакетов RPM).
Рассмотрим это на примере. У нас есть пакет, и теперь посмотрим, что мы можем с ним делать.
Установка
Как узнать информацию о пакете RPM без установки?
После того, как мы скачали пакет мы хотим узнать информацию о пакете перед установкой. Мы можем использовать -qipoption (запрос информации о пакете), чтобы вывести информацию о пакете.
$ sudo rpm -qip GeoIP-1.5.0-11.el7.x86_64.rpm
Вывод:
Name : GeoIP
Version : 1.5.0
Release : 11.el7
Architecture: x86_64
Install Date: (not installed)
Group : Development/Libraries
Size : 2905020
License : LGPLv2+ and GPLv2+ and CC-BY-SA
Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5
Source RPM : GeoIP-1.5.0-11.el7.src.rpm
Build Date : Sat 05 Nov 2016 08:29:17 PM UTC
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem
Vendor : CentOS
URL : http://www.maxmind.com/app/c
Summary : Library for country/city/organization to IP address or hostname mapping
Description :
GeoIP is a C library that enables the user to find the country that any IP
address or hostname originates from. It uses a file based database that is
accurate as of June 2007 and can optionally be updated on a weekly
basis by installing the GeoIP-update package. This database simply contains IP
blocks as keys, and countries as values. This database should be more complete
and accurate than using reverse DNS lookups.
This package includes GeoLite data created by MaxMind, available from
http://www.maxmind.com/
Как установить RPM пакет?
Мы можем использовать параметр -ivh для установки определенного пакета, как показано ниже.
$ sudo rpm -ivh GeoIP-1.5.0-11.el7.x86_64.rpm
Вывод:
Preparing... ################################# [100%]
package GeoIP-1.5.0-11.el7.x86_64 is already installed
Как проверить установленный пакет RPM?
Мы можем использовать параметр -q с именем пакета, и он покажет, установлен ли пакет или нет.
$ sudo rpm -q GeoIP
Вывод:
GeoIP-1.5.0-11.el7.x86_64
Как вывести список всех файлов для определенного установленного пакета RPM?
Мы можем перечислить все файлы установленных пакетов rpm, используя опцию -ql с командой rpm.
$ sudo rpm -ql GeoIP
Вывод:
/etc/GeoIP.conf
/etc/GeoIP.conf.default
/usr/bin/geoiplookup
/usr/bin/geoiplookup6
/usr/bin/geoipupdate
/usr/lib64/libGeoIP.so.1
/usr/lib64/libGeoIP.so.1.5.0
/usr/lib64/libGeoIPUpdate.so.0
/usr/lib64/libGeoIPUpdate.so.0.0.0
/usr/share/GeoIP
/usr/share/GeoIP/GeoIP-initial.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIPASNum.dat
/usr/share/GeoIP/GeoIPASNumv6.dat
/usr/share/GeoIP/GeoIPCity.dat
/usr/share/GeoIP/GeoIPCityv6.dat
/usr/share/GeoIP/GeoIPCountry.dat
/usr/share/GeoIP/GeoIPCountryv6.dat
/usr/share/GeoIP/GeoIPv6-initial.dat
...
Как вывести список недавно установленных пакетов RPM?
Мы можем использовать параметр -qa с параметром --last, в котором будут перечислены все недавно установленные пакеты rpm.
$ sudo rpm -qa --last
Вывод
GeoIP-1.5.0-11.el7.x86_64 Sat 01 Sep 2019 11:34:09 AM UTC
wget-1.14-15.el7_4.1.x86_64 Sun 26 Aug 2019 03:21:02 PM UTC
iwl7265-firmware-22.0.7.0-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:18 PM UTC
libgomp-4.8.5-28.el7_5.1.x86_64 Thu 16 Aug 2019 02:10:15 PM UTC
iwl2030-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:15 PM UTC
iptables-1.4.21-24.1.el7_5.x86_64 Thu 16 Aug 2019 02:10:15 PM UTC
yum-plugin-fastestmirror-1.1.31-46.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC
iwl6000-firmware-9.221.4.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC
iwl4965-firmware-228.61.2.24-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC
iwl105-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC
iwl100-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC
iwl1000-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC
ca-certificates-2018.2.22-70.0.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC
iwl6000g2b-firmware-17.168.5.2-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:12 PM UTC
...
Как установить RPM пакет без зависимостей?
Мы можем использовать параметры -ivh с параметром --nodeps для проверки отсутствия зависимостей, чтобы установить конкретный пакет без зависимостей, как показано ниже.
$ sudo rpm -ivh --nodeps GeoIP-1.5.0-11.el7.x86_64.rpm
Вывод
Preparing... ################################# [100%]
Как заменить установленный пакет RPM?
Мы можем использовать параметры -ivh –replacepkgs для замены установленного пакета.
$ sudo rpm -ivh --replacepkgs GeoIP-1.5.0-11.el7.x86_64.rpm
Вывод
Preparing... ################################# [100%]
Updating / installing...
1:GeoIP-1.5.0-11.el7 ################################# [100%]
Удаление
Как удалить пакет RPM?
Мы можем использовать параметр -e для удаления определенного пакета, установленного без зависимостей. Обратите внимание, что удаление определенного пакета может нарушить работу других приложений.
$ sudo rpm -e --nodeps GeoIP
Обновление
Как обновить установленный пакет RPM?
Для обновления пакета мы используем параметры -Uvh
$ sudo rpm -Uvh GeoIP-1.5.0-11.el7.x86_64.rpm
Запрос
Как запросить все установленные пакеты?
Мы можем использовать параметры -a вместе с q для запроса всех установленных пакетов на сервере.
$ sudo rpm -qa
Вывод
python-firewall-0.4.4.4-14.el7.noarch
ncurses-base-5.9-14.20130511.el7_4.noarch
plymouth-0.8.9-0.31.20140113.el7.centos.x86_64
kbd-misc-1.15.5-13.el7.noarch
vim-common-7.4.160-4.el7.x86_64
bash-4.2.46-30.el7.x86_64
dmidecode-3.0-5.el7.x86_64
filesystem-3.2-25.el7.x86_64
kbd-1.15.5-13.el7.x86_64
vim-enhanced-7.4.160-4.el7.x86_64
firewalld-0.4.4.4-14.el7.noarch
....
Как запросить конкретный пакет?
Мы можем использовать команду grep, чтобы узнать, установлен ли конкретный пакет или нет.
$ sudo rpm -qa | grep GeoIP
Вывод
GeoIP-1.5.0-11.el7.x86_64
Как запросить файл, который принадлежит пакету RPM?
Чтобы узнать к какому пакету RPM относится файл /usr/lib64/libGeoIP.so.1.5.0. используем следующую команду.
$ sudo rpm -qf /usr/lib64/libGeoIP.so.1.5.0
Вывод
GeoIP-1.5.0-11.el7.x86_64
Проверка
Как получить информацию для конкретного пакета?
Мы можем использовать параметры -i вместе с q, чтобы получить информацию для конкретного пакета, как показано ниже.
$ sudo rpm -qi GeoIP
Вывод
Name : GeoIP
Version : 1.5.0
Release : 11.el7
Architecture: x86_64
Install Date: Thu 16 Aug 2018 02:04:09 PM UTC
Group : Development/Libraries
Size : 2905020
License : LGPLv2+ and GPLv2+ and CC-BY-SA
Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5
Source RPM : GeoIP-1.5.0-11.el7.src.rpm
Build Date : Sat 05 Nov 2016 08:29:17 PM UTC
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem
Vendor : CentOS
URL : http://www.maxmind.com/app/c
Summary : Library for country/city/organization to IP address or hostname mapping
Description :
GeoIP is a C library that enables the user to find the country that any IP
address or hostname originates from. It uses a file based database that is
accurate as of June 2007 and can optionally be updated on a weekly
basis by installing the GeoIP-update package. This database simply contains IP
blocks as keys, and countries as values. This database should be more complete
and accurate than using reverse DNS lookups.
This package includes GeoLite data created by MaxMind, available from http://www.maxmind.com/
Как проверить RPM пакет?
Мы можем проверить пакет, сравнив информацию об установленных файлах пакета с базой данных rpm, используя опцию -Vp.
$ sudo rpm -Vp GeoIP-1.5.0-11.el7.x86_64.rpm
Как проверить все пакеты RPM?
Мы можем проверить все установленные пакеты rpm, используя опцию -Va
$ sudo rpm -Va
Вывод
S.5....T. c /etc/sysconfig/authconfig
S.5....T. c /etc/yum.repos.d/CentOS-Base.repo
.M....... c /etc/machine-id
.M....... g /etc/udev/hwdb.bin
.M....... g /var/lib/systemd/random-seed
.M....... c /etc/shadow
S.5....T. c /etc/ssh/sshd_config
.M....... c /etc/audit/rules.d/audit.rules
S.5....T. c /etc/NetworkManager/NetworkManager.conf
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
В этой статье мы рассмотрим механизмы масштабируемости BGP и связанные с ними концепции.
Предыдущие статьи цикла про BGP:
Основы протокола BGP
Построение маршрута протоколом BGP
Формирование соседства в BGP
Оповещения NLRI и политики маршрутизации BGP
Видео: Основы BGP за 7 минут
Механизмы масштабируемости BGP
Истощение доступных автономных системных номеров явилось проблемой точно так же, как было проблемой для интернета истощение IP-адресов. Чтобы решить эту проблему, инженеры обратились к знакомому решению. Они обозначили диапазон номеров AS только для частного использования. Это позволяет вам экспериментировать с AS конструкцией и политикой, например, в лаборатории и использовать числа, которые гарантированно не конфликтуют с интернет-системами.
Помните, что число AS-это 16-разрядное число, допускающее до 65 536 чисел AS. Диапазон для частного использования: 64512-65535.
Еще одним решением проблемы дефицита, стало расширение адресного пространства имен. Было утверждено пространство, представляющее собой 32-разрядное число.
В течение длительного времени, с точки зрения масштабируемости, одноранговые группы Border Gateway Protocol считались абсолютной необходимостью. Мы настраивали одноранговые группы для уменьшения конфигурационных файлов. Так же мы настраивали одноранговые группы для повышения производительности.
Преимущества производительности были нивелированы с помощью значительно улучшенных механизмов, сейчас. Несмотря на это, многие организации все еще используют одноранговые группы, поскольку они поняты и легки в настройке.
Появились в BGP одноранговые группы для решения нелепой проблемы избыточности в BGP конфигурации. Рассмотрим простой (и очень маленький) пример 1. Даже этот простой пример отображает большое количество избыточной конфигурации.
Пример 1: типичная конфигурация BGP без одноранговых групп
ATL1(config)#router bgp 200
ATL1( config-router)#neiqhbor 10.30.30.5 remote-as 200
ATL1( config-router)#neiqhbor 10.30.30.5 update- source lo0
ATL1( config= router)#neiqhbor 10.30 .30.5 password S34Dfr112s1WP
ATL1(config-router)#neiqhbor 10.40.40.4 remote-as 200
ATL1( config-router)#neiqhbor 10.40.40 .4 update- source lo0
ATL1(config-router)#neiqhbor 10.40.40.4 password S34Dfr112s1WP
Очевидно, что все команды настройки относятся к конкретному соседу. И многие из ваших соседей будут иметь те же самые характеристики. Имеет смысл сгруппировать их настройки в одноранговую группу. Пример 2 показывает, как можно настроить и использовать одноранговую группу BGP.
Пример 2: одноранговые группы BGP
ATL2 (config)#router bgp 200
ATL2 (config-router)#neighbor MYPEERGR1 peer-group
ATL2 (config-router)#neighbor MYPEERGR1 remote-as 200
ATL2 (config-router)#neighbor MYPEERG1l update-source lo0
ATL2(config-router)#neighbor MYPEERGRl next-hop-self
ATL2 (config-router)#neighbor 10.40.40 .4 peer-group MYPEERGR1
ATL2 (config-router)#neighbor 10.50.50 .5 peer-group MYPEERGR1
Имейте в виду, что, если у вас есть определенные настройки для конкретного соседа, вы все равно можете ввести их в конфигурацию, и они будут применяться в дополнение к настройкам одноранговой группы.
Почему же так часто использовались одноранговые группы? Они улучшали производительность. Собственно говоря, это и было первоначальной причиной их создания.
Более современный (и более эффективный) подход заключается в использовании шаблонов сеансов для сокращения конфигураций. А с точки зрения повышения производительности теперь у нас есть (начиная с iOS 12 и более поздних версий) динамические группы обновлений. Они обеспечивают повышение производительности без необходимости настраивать что-либо в отношении одноранговых групп или шаблонов.
Когда вы изучаете одноранговую группу, вы понимаете, что все это похоже на шаблон для настроек. И это позволит вам использовать параметры сеанса, а также параметры политики. Что ж, новая и усовершенствованная методология разделяет эти функциональные возможности на шаблоны сессий и шаблоны политики.
Благодаря шаблонам сеансов и шаблонам политик мы настраиваем параметры, необходимые для правильной установки сеанса, и помещаем эти параметры в шаблон сеанса. Те параметры, которые связаны с действиями политик, мы помещаем в шаблон политики.
Одна из замечательных вещей в использовании этих шаблонов сеансов или политик, а также того и другого, заключается в том, что они следуют модели наследования. У вас может быть шаблон сеанса, который выполняет определенные действия с сеансом. Затем вы можете настроить прямое наследование так, чтобы при создании другого наследования оно включало в себя вещи, созданные ранее. Эта модель наследования дает нам большую гибкость, и мы можем создать действительно хорошие масштабируемые проекты для реализаций BGP.
Вы можете использовать шаблоны или одноранговые группы, но это будет взаимоисключающий выбор. Так что определитесь со своим подходом заранее. Вы должны заранее определиться, что использовать: использовать ли устаревший подход одноранговых групп или же использовать подход шаблонов сеанса и политики. После выбора подхода придерживайтесь его, так как, использовать оба подхода одновременно нельзя.
Теперь можно предположить, что конфигурация для шаблонов сеансов будет довольно простой, и это так. Помните, прежде всего, все что мы делаем здесь и сейчас, относится к конкретной сессии. Поэтому, если мы хотим установить timers, нам нужно установить remote-as – и это будет считается параметром сеанса.
Например, мы делаем update source. Мы настраиваем eBGP multihop. Все это имеет отношение к текущему сеансу, и именно это мы будем прописывать в шаблоне сеанса. Обратите внимание, что мы начинаем с создания шаблона. Поэтому используем команду template peer-session, а затем зададим ему имя. И тогда в режиме конфигурации шаблона можем настроить наследование, которое позволит наследовать настройки от другого однорангового сеанса. Можем установить наш remote-as как и/или update source. После завершения, мы используем команду exit-peer-session, чтобы выйти из режима конфигурации для этого сеанса. Пример 3 показывает конфигурацию шаблона сеанса.
Пример 3: Шаблоны сеансов BGP
ATL2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ATL2 (config)#router bgp 200
ATL2 (config-router)#template peer- session MYNAME
ATL2 (config-router-stmp)#inherit peer- session MYOTHERNAME
ATL2 (config- router-stmp )#remote-as 200
ATL2(config-router-stmp )#password MySecrectPass123
ATL2 (config-router-stmp )#exit-peer-session
ATL2 (config-router)#neiqhbor 10.30.30 .10 inherit peer-session MYNAME
ATL2 (config-router)#end
ATL2#
Это простой пример настройки соседства с помощью оператора neighbor и использования наследования однорангового сеанса. Затем присваивается имя однорангового сеанса, созданного нами для нашего шаблона сеанса. Это соседство наследует параметры сеанса.
Помните, что, если вы хотите сделать дополнительную настройку соседства, можно просто присвоить соседу IP-адрес, а затем выполнить любые настройки вне шаблона однорангового сеанса, которые вы хотите дать этому соседу. Таким образом, у вас есть та же гибкость, которую мы видели с одноранговыми группами, где вы можете настроить индивидуальные параметры для этого конкретного соседа вне шаблонного подхода этого соседства.
Вы можете подумать, что шаблоны политик будут иметь сходную конструкцию и использование с шаблонами сеансов, и вы будете правы. Помните, что если ваши шаблоны сеансов находятся там, где мы собираемся настроить параметры, которые будут относиться к сеансу BGP, то, конечно, шаблоны политик будут храниться там, где мы храним параметры, которые будут применяться к политике.
Пример 4 показывает настройку и использование шаблона политики BGP.
Пример 4: Шаблоны политики BGP
ATL2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ATL2 (config)#router bgp 200
ATL2(config-router)#template peer-policy MYPOLICYNAME
ATL2 (config-router-ptmp )#next-hop-self
ATL2 (config-router-ptmp )#route-map MYMAP out
ATL2 (config-router-ptmp )#allowas-in
ATL2 (config-router-ptmp )#exit-peer-policy
ATL2 (config-router)#neighbor 10.40.40.10 remote-as 200
ATL2 (config-router)#neighbor 10.40.40.10 inherit peer-policy MYNAME
ATL2 (config-router)#end
ATL2#
Да, все эти параметры, которые мы обсуждали при изучении манипуляций с политикой, будут тем, что мы будем делать внутри шаблона политики. Однако одним из ключевых отличий между нашим шаблоном политики и шаблоном сеанса является тот факт, что наследование здесь будет еще более гибким.
Например, мы можем перейти к семи различным шаблонам, от которых мы можем непосредственно наследовать политику. Это дает нам еще более мощные возможности наследования с помощью шаблонов политик по сравнению с шаблонами сеансов.
Опять же, если мы хотим сделать независимые индивидуальные настройки политики для конкретного соседа, мы можем сделать это, добавив соответствующие команды соседства.
Благодаря предотвращению циклов и правилу разделения горизонта (split-horizon rule) IBGP, среди прочих факторов, нам нужно придумать определенные решения масштабируемости для пирингов IBGP. Одним из таких решений является router reflector.
Рис. 1: Пример топологии router reflector
Конфигурация router reflector удивительно проста, поскольку все это обрабатывается на самом router reflector (R3). Клиенты route reflector – это R4, R5 и R6. Они совершенно не знают о конфигурации и настроены для пиринга IBGP с R3 как обычно. Пример 5 показывает пример конфигурации router reflector. Обратите внимание, что это происходит через простую спецификацию клиента router reflector.
Пример 5: BGP ROUTE REFLECTOR
R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R3 (config)#router bgp 200
R3 (config-router)#neighbor 10.50.50.10 remote -as 200
R3 (config-router)#neighbor 10.50.50.10 route-reflector-client
R3 (config-router)#end
R3#
Route reflector автоматически создает значение идентификатора (ID) кластера для кластера, и это устройство и эти клиенты будут частью того, что мы называем кластером route reflector. Cisco рекомендует разрешить автоматическое назначение идентификатора кластера для идентификации клиента. Это 32-разрядный идентификатор, который BGP извлекает из route reflector.
Магия Route reflector заключается в том, как меняются правила IBGP. Например, если обновление поступает от клиента Route reflector (скажем, R4), то устройство R3 «отражает» это обновление своим другим клиентам (R5 и R6), а также своим неклиентам (R1 и R2). Это обновление происходит даже при том, что конфигурация для IBGP значительно короче полной сетки пирингов, которая обычно требуется.
А теперь что будет, если обновление поступит от не клиента Route reflector (R1)? Route reflector отправит это обновление всем своим клиентам Route reflector (R4, R5 и R6). Но тогда R3 будет следовать правилам IBGP, и в этом случае он не будет отправлять обновление через IBGP другому не клиенту Route reflector (R2).
Чтобы решить эту проблему, необходимо будет создать пиринг от R1 к устройству R2 с помощью IBGP. Или, можно добавить R2 в качестве клиента Route reflector R3.
Есть еще один способ, которым мы могли бы решить проблему с масштабируемостью IBGP- это манипулирование поведением EBGP. Мы делаем это с конфедерациями. Вы просто не замечаете, что конфедерации используются так же часто, как Route reflector. И причина состоит в том, что они усложняют нашу топологию, и делают поиск неисправностей более сложным. На рис. 2 показан пример топологии конфедерации.
Рисунок 2: Пример топологии конфедерации
Мы имеем наш AS 100. Для создания конфедерации необходимо создать небольшие субавтономные системы внутри нашей основной автономной системы. Мы их пронумеруем с помощью, номеров автономных систем только для частного использования.
Что мы имеем, когда манипулируем поведением eBGP, что бы имеет конфедерацию EBGP пирингов? Это позволяет нам установить пиринги между соответствующими устройствами, которые хотим использовать в этих автономных системах. Как вы можете догадаться, они не будут следовать тем же правилам, что и наши стандартные пиринги EBGP. Еще один важный момент заключается в том, что все это для внешнего неконфедеративного мира выглядит просто как единый AS 100.
Внутри мы видим реальные AS, и конфедеративные отношения EBGP между ними. Помимо устранения проблемы разделения горизонта IBGP, что же меняется с пирингами конфедерации EBGP? В следующем прыжке поведение должно измениться. Следующий прыжок не меняется тогда, когда мы переходим от одной из этих небольших конфедераций внутри нашей АС к другой конфедерации.
Вновь добавленные атрибуты обеспечивают защиту от цикла из-за конфедерации. Атрибут AS_confed_sequence и AS_confed_set используются в качестве механизмов предотвращения циклов.
Пример 6 показывает пример частичной настройки конфедерации BGP.
R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R3 (config)#router bgp 65501
R3(config-router)#bgp confederation identifier 100
R3 (config-router)#bgp confederation peers 65502
R3 (config-router)#neighbor 10 .20.20.1 remote-as 65502
R3 (config-router)#end
R3#
Иногда возникает необходимость применения общих политик к большой группе префиксов. Это делается легко, если вы помечаете префиксы специальным значением атрибута, называемым сообществом (community). Обратите внимание, что сами по себе атрибуты сообщества ничего не делают с префиксами, кроме как прикрепляют значение идентификатора. Это 32-разрядные значения (по умолчанию), которые мы можем именовать, чтобы использовать дополнительное значение.
Вы можете настроить значения сообщества таким образом, чтобы они были значимы только для вас или значимы для набора AS. Вы также можете иметь префикс, который содержит несколько значений атрибутов сообщества. Кроме того, можно легко добавлять, изменять или удалять значения сообщества по мере необходимости в вашей топологии BGP.
Атрибуты сообщества могут быть представлены в нескольких форматах. Более старый формат выглядит следующим образом:
Decimal - 0 to 4294967200 (в десятичном)
Hexadecimal – 0x0 to 0xffffffa0 (в шестнадцатеричном)
Более новый формат:
AA:NN
AA - это 16-битное число, которое представляет ваш номер AS, а затем идет 16-битное число, используемое для задания значимости своей политике AS. Таким образом, вы можете задать для AS 100 100:101, где 101- это номер внутренней политики, которую вы хотите применить к префиксам.
Есть также хорошо известные общественные значения. Это:
No-export - префиксы не объявляются за пределами AS. Вы можете установить это значение, когда отправляете префикс в соседний AS. чтобы заставить его (соседний AS) не объявлять префикс за собственные границы.
Local-AS - префиксы с этим атрибутом сообщества никогда не объявляются за пределами локального AS
No-advertise - префиксы с этим атрибутом сообщества не объявляются ни на одном устройстве
Эти хорошо известные атрибуты сообщества просто идентифицируются по их зарезервированным именам.
Есть также расширенные сообщества, которые также можно использовать. Они предлагают 64-битную версию для идентификации сообществ! Задание параметров осуществляется настройкой TYPE:VALUE. Выглядит оно следующим образом:
65535:4294967295
Как вы можете догадаться, мы устанавливаем значения сообщества, используя route maps. Пример 7 показывает пример настроек. Обратите внимание, что в этом примере также используется список префиксов. Они часто используются в BGP для гибкой идентификации многих префиксов. Они гораздо более гибки, чем списки доступа для этой цели.
Пример 7: Установка значений сообщества в BGP
R3#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R3(config)#ip prefix-list MYLIST permit 172.16.0.0/16 le 32
R3(config)#route-map SETCOMM permit 10
R3(config-route-map)#match ip address prefix-list MYLIST
R3(config-route-map)#set community no-export
R3(config-route-map)#route-map SETCOMM permit 20
R3(config)#router bgp 100
R3(config-router)#neighbor 10.20.20.1 route-map SETCOMM out
R3 (config-router)#neighbor 10.20.20.1 send-community
R3(config-router)#end
R3#