По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В этой статье мы рассмотрим настройку BGP-оповещения для Network Layer Reachability Information (NLRI), а также конфигурацию политики маршрутизации BGP.
Предыдущие статьи цикла про BGP:
Основы протокола BGP
Построение маршрута протоколом BGP
Формирование соседства в BGP
Видео: Основы BGP за 7 минут
Оповещения NLRI
Прежде чем мы начнем настраивать оповещения NLRI, используя различные команды, давайте сначала обсудим старую функцию BGP, которую Cisco отключает по умолчанию. Эта функция называется синхронизацией BGP. Для проверки того, что Cisco отключила эту функцию на вашем устройстве, выполните команду show running-configuration на одном из устройств BGP, и в выводимой информации, под пунктом «процессы» BGP, вы увидите сообщение no synchronization. Если эта функция включена, функция синхронизации не позволяет спикеру BGP вводить префиксы в BGP, если нет коррелированной записи для префикса в базовом IGP (или статических маршрутах). Это помогает предотвратить ситуации типа "черная дыра" (black hole), когда устройства на маршруте не работают с BGP и не могут переадресовать префикс BGP, потому что у них нет маршрута к этому префиксу из их IGP. Эта функция отключена по умолчанию из-за создания множества различных механизмов масштабируемости, существующих в BGP, которые позволяют настроить топологию iBGP без требования полной сетки одноранговых узлов iBGP. Еще одна причина, по которой он отключен, заключается в том, что он поощряет перераспределение префиксов BGP в базовый IGP, и это не безопасно.
Существует причина, по которой Cisco уходит от использования команды network для настройки IGPs в CLI. Не очень хорошая идея в программировании, чтобы одна команда выполняла очень разные вещи, и когда она используется в разных областях. Это относится и к команде network. При использовании в IGP команда включает протокол на интерфейсе (а также влияете на то, какие префиксы объявляются), но в BGP у команды network другое назначение. Она не включает BGP на определенных интерфейсах, вместо этого она объявляет префикс, который существует (каким-то образом) на локальном устройстве, и вводит его в BGP.
Хотя префикс, который вы могли бы объявить в BGP, чаще всего встречается в вашем IGPs в таблице маршрутизации. Вы можете использовать другие методы для создания префикса для оповещения. Например, вы можете создать интерфейс обратной связи, который обладает префиксом сети, который вы хотите объявить. Или вы можете создать статический маршрут или даже статический маршрут, указывающий на Null0.
Одна маленькая хитрость, связанная с командой network в BGP, заключается в том, что, если ваша маска подсети для вашего префикса не находится на классовой границе IP- адреса (например, 10.0.0.0/8), то вам нужно не забыть использовать ключевое слово mask и указать правильную маску при использовании команды. Пример 1 показывает создание двух петлевых интерфейсов и объявление их префиксов в BGP. Обратите внимание, что этот пример также показывает проверку этих префиксных объявлений на маршрутизаторе ATL.
Пример 1: Использование команды Network в BGP
TPA1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
TPA1(config)#interface loopback 192
TPA1(config-if)#ip address 192.168.1.1 255.255.255.0
TPA1(config-if)#exit
TPA1(config)#interface loopback 172
TPA1(config-if)#ip address 172.16.10.1 255.255.255.0
TPA1(config-if)#exit
TPA1(config)router bgp 100
TPA1(config-router)#network 192.168.1.0
TPA1(config-router)#network 172.16.10.0 mask 255.255.255.0
TPA1(config-router)#end
TPA1#
ATL#
ATL#show ip bgp
Хотя команда network проста и удобна, она не была бы эффективной, если бы у вас было много префиксов для оповещения. Другой вариант- перераспределить префиксы в BGP из IGP или статических маршрутов. Пример 2 демонстрирует перераспределение префиксов, которые были получены через EIGRP, в BGP. Обратите внимание при проверке, что исходный код для этих префиксов отображается как (?) указывает на неизвестность.
Пример 2: перераспределение префиксов в BGP
TPA1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
TPA1(config)router bgp 100
TPA1(config-router)#redistribute eigrp 100
TPA1(config-router)#end
TPA1#
ATL#show ip bgp
Когда вы начинаете объявлять (оповещать) NLRI в BGP, вы можете столкнуться с префиксами в вашей таблице BGP (показанной с show ip bgp), которые имеют код состояния (r) вместо ожидаемого допустимого кода состояния (*). Код состояния (r) указывает на сбой RIB, означающий, что BGP попытался поместить префикс в таблицу BGP, но не смог из- за какой-то проблемы.
Наиболее распространенной причиной отказа RIB является административное расстояние (AD). Например, IBGP узнал префиксы несущие ужасные объявления AD из 200. Это означает, что если ваш маршрутизатор получил префикс через IGP (даже такой плохой, как RIP с AD 120), то он будет предпочтительнее префикса IBGP. В результате протокол BGP получивший это объявление AD, не отметит префикс как действующий. Обратите внимание, что это, как правило, не происходит с префиксами EBGP-learned, поскольку они имеют очень предпочтительное объявление 20 (по умолчанию).
Очень часто, если желательно иметь префикс в IGP и BGP, администраторы будут манипулировать значениями AD на своих маршрутизаторах, чтобы улучшить AD IBGP. Например, в случае RIP и BGP администратор мог бы установить AD изученных маршрутов IBGP на 119, чтобы сделать их предпочтительными по сравнению с используемым IGP.
В дополнение к выявлению сбоев RIB в результатах команды show ip bgp, вы можете использовать более прямую команду show ip bgp rib-failure, чтобы увидеть любые префиксы в этом состоянии. Это особенно полезно в случае массивных таблиц BGP.
Настройка политики маршрутизации BGP
Довольно часто встречаются топологии, в которых вы явно не хотите объявлять префиксы в своей таблице BGP, или вы не хотите получать определенные префиксы от узла BGP. К счастью, в вашем распоряжении есть много инструментов для этого. Например, вот только некоторые методы, которые вы могли бы использовать для фильтрации префиксов:
Distribute lists
Extended ACLs
Prefix lists
AS Path filters
Route maps
Пример 3 демонстрирует один из методов фильтрации. Выбран подход route map, потому что все (и это правильно) любят карты маршрутов.
Пример 3: Использование route map в качестве префиксного фильтра в BGP
ATL# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
ATL(config)#ip access-list standard MYPREFIX
ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255
ATL(config-std-nacl)#exit
ATL(config)#route-map MYMAP deny 10
ATL(config-route-map)#match ip address MYPREFIX
ATL(config-route-map)#exit
ATL(config)#route-map MYMAP permit 20
ATL(config-route-map)#exit
ATL(config)#router bqp 200
ATL(config-router)#neighbor 10.10.10.1 route-map MYMAP in
ATL(config-router)#end
ATL#
ATL# clear ip bqp * soft
ATL# show ip bqp
Обратите внимание, перед проверкой я запускаю команду clear ip bgp * soft. Это гарантирует, что устройство сразу же обновит информацию BGP для меня, так что мне не придется ждать истечения таймера, когда дело дойдет до конвергенции BGP на новых манипуляциях с политикой, которые мы сделали.
Помните, что BGP использует множество различных атрибутов пути вместо простой метрики, чтобы предоставить вам возможность легко настроить способ, по которому происходит маршрутизация. Ниже приведены некоторые из атрибутов пути, которыми вы могли бы манипулировать, чтобы настроить политику:
Weight
MED
Local Preference
AS Path
Можно спросить себя, как AS Path могут быть использованы в целях маршрутизации. Поскольку манипуляция AS Path часто выполняется с помощью AS Path Prepending. Вы отравляете префикс, добавляя свой собственный номер AS к пути, чтобы сделать более длинным (менее предпочтительным) AS Path. Как и большинство наших манипуляций с атрибутом пути, это легко сделать с помощью карты маршрута.
Давайте рассмотрим пример использования Local Preference для манипулирования политикой. Мы часто используем Local Preference, чтобы повлиять на то, как мы будем направлять исходящий трафик к префиксу BGP. Мы делаем это, устанавливая значения Local Preference, входящие по нескольким путям. Прежде чем мы начнем, поймите, что Local Preference - это значение, которое рассматривается довольно высоко в процессе принятия решения о наилучшем пути BGP, более высокое значение предпочтительно, и значения передаются только в обновлениях IBGP. Именно так имя LOCAL вошло в название Local Preference.
Для начала я объявил тот же префикс в AS 200 (ATL и ATL2) от маршрутизаторов TPA1 и TPA2 AS 100. Глядя на пример 4, Вы можете видеть, что этот префикс (192.168.1.0) может быть достигнут с помощью следующего прыжка 10.10.10.1 и что это предпочтительный путь. Альтернативный путь, который будет использоваться в случае неудачи этого пути, будет проходить через следующий переход 10.21.21.1.
Пример 4: Подготовка к использованию Local Preference
ATL# show ip bqp
Теперь пришло время поэкспериментировать и изменить данное поведение с помощью примера манипуляции атрибутом пути. Мой подход будет состоять в том, чтобы определить префикс, которым мы хотим манипулировать (192.168.1.0), и поднять значение локального предпочтения, чтобы оно было больше, чем значение по умолчанию 100 для пути к TPA2 на следующем прыжке 10.21.21.1. Я делаю это, манипулируя префиксом, когда он входит через путь 10.21.21.1 .
Пример 5 показывает эту конфигурацию.
ATL# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
ATL(config)#ip access-list standard OURPREFIX
ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255
ATL(config-std-nacl)#exit
ATL(config)#route-map SETLOCALPREF permit 10
ATL(config-route-map)#match ip address OURPREFIX
ATL(config-route-map)#set local-preference 110
ATL(config-route-map)#exit
ATL(config)#route-map SETLOCALPREF permit 20
ATL(config-route-map)#exit
ATL(config)#router bqp 200
ATL(config-router)#neighbor 10.21.21.1 route-map SETLOCALPREF in
ATL(config-router)#end ATL#
ATL# clear ip bqp * soft
ATL# show ip bqp
Обратите внимание, что предпочтительный путь теперь проходит через следующий переход 10.21.21.1, как мы и хотели. Для этого префикса также отображается значение Local Preference - 110. Это более высокое значение является предпочтительным и изменяет выбор, сделанный процессом выбора наилучшего пути BGP.
CURL это мощный инструмент командной строки, который позволяет тестировать различные API интерфейсы, отправлять данные на URL методом POST/GET и прочее. Как минимум для разработчика это необходимый инструмент.
Если вам нужно протестировать CURL, а вы не хотите устанавливать Postman, например, то из терминала (командной строки) на MacOS можно лего инициировать CURL.
В статье мы покажем несколько полезных примеров cURL и терминала.
Отправка POST запрос через cURL
Сделать POST легко: можно с данными, а можно и без них. Смотрите какой синтаксис использования:
CURL запрос без дополнительных данных
curl -X POST http://URL/test.php
CURL запрос с дополнительными параметрами
curl -d "data=test1data2=test2" http://URL/test.php
CURL с передаче полей
curl -X POST -F "name=diman" -F "password=test" http://URL/example.php
CURL с передачей файла
curl -X POST -F "image=@/path/pic.png" http://URL/testform.php
Отправка CURL с JSON
Ловите пример отправки JSON
curl -H "Content-Type: application/json" -X POST -d '{"user":"sanya","pass":"qwerty"}' http://test/myscript.php
Вам мало примеров?
Если так, то вы легко можете изучить все возможности CURL в консоли:
curl --help
curl --manual
Профит!
OpenNMS - бесплатный, расширяемый, легко масштабируемый продукт уровня предприятия с открытым исходным кодом. Он проверяет состояние удалённых устройств и собирает информацию об этих хостах при помощи SNMP и JMX (Java Management Extensions). Система основана на Java поэтому поддерживает все популярные операционные системы.
OpenNMS работает под управлением таких операционных систем, как Linux и Windows и поставляется с веб-консолью для упрощения добавления сетевых устройств и приложений в систему. Вся информация, введенная в систему, хранится в базе данных Postgres.
Системные требования OpenNMS
Debian 9.0 и выше, Ubuntu 16.04 LTS и выше;
Пакет OpenJDK 11 Development Kit;
2 CPU, 2 Гб RAM, 20 Гб жесткого диска.
В этом материале покажем, как устанавливать свежую версию системы мониторинга OpenNMS Horizont на Debian и Ubuntu.
Шаг 1. Развертывание Java-OpenJDK 11 на Ubuntu
Для начала скачает свежую версию OpenJDK Java 11 при помощи следующей команды:
$ sudo apt-get install openjdk-11-jdk
Затем убеждаемся, что установлена самая последняя версия Java
$ java -version
После этого устанавливаем переменную среду для всех пользователей при загрузке. Чтобы сделать это нужно добавить в файл /etc/profile следующие строки.
export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Сохраняем файл и выполняем следующую команду, чтобы система заново прочитала файл /etc/profile.
$ source /etc/profile
Шаг 2. Установка OpenNMS Horizon на Ubuntu
Чтобы развернуть OpenNMS Horizon, в файл /etc/apt/sources.list.d/opennms.list следует добавить репозиторий и GPG ключ, а затем обновить кеш apt командой ниже:
$ cat EOF | sudo tee /etc/apt/sources.list.d/opennms.list
deb https://debian.opennms.org stable main
deb-src https://debian.opennms.org stable main
EOF
$ wget -O - https://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add -
$ apt update
Далее скачиваем мета-пакеты OpenNMS (opennms-core и opennms-webapp-jetty) со всеми зависимостями (jicmp6 и jicmp, postgresql и postgresql-libs).
$ sudo apt install opennms
Затем с помощью утилиты tree, проверяем, что мета-пакеты OpenNMS установлены в директорию /usr/share/opennms
$ cd /usr/share/opennms
$ tree -L 1
На заметку: Чтобы предотвратить внеплановые обновления, после установки рекомендуется отключить репозиторий OpenNMS
$ sudo apt-mark hold libopennms-java libopennmsdeps-java opennms-common opennms-db
Шаг 3. Инициализация и установка PostgreSQL
В Debian и Ubuntu сразу после установки пакетов программа установки определяет базу данных Postgres, запускает службу и добавляет его в автозапуск при старте системы.
Чтобы проверить, работает ли служба, выполните указанную ниже команду:
$ sudo systemctl status postgresql
Далее делаем вход под пользователем postgre и создаём пользователя opennms и задаем пароль.
$ sudo su - postgres
$ createuser -P opennms
$ createdb -O opennms opennms
А теперь в целях безопасности назначим пользователю postgres пароль:
$ psql -c "ALTER USER postgres WITH PASSWORD 'YOUR-POSTGRES-PASSWORD';"
На данном этапе следует настроить доступ OpenNMS Horizon к базе данных. Для этого редактируем файл конфигурации.
$ sudo vim /usr/share/opennms/etc/opennms-datasources.xml
Найдите в данном файле указанные ниже разделы и введите учетные данные
jdbc-data-source name="opennms"
database-name="opennms"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/opennms"
user-name="opennms-db-username"
password="opennms-db-user-passwd" /
jdbc-data-source name="opennms-admin"
database-name="template1"
class-name="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/template1"
user-name="postgres"
password="postgres-super-user-passwd" /
Сохраните изменения и закройте файл.
Шаг 4. Инициализация и запуск OpenNMS Horizon
Чтобы инициализировать OpenNMS, необходимо интегрировать его с Java. Итак, для обнаружения среды Java и добавления её в файл конфигурации /usr/share/opennms/etc/java.conf выполните следующую команду:
$ sudo /usr/share/opennms/bin/runjava -s
Затем, следует проинициализировать базу данных и найти библиотеки, указанные в файле /opt/opennms/etc/libraries.properties, с помощью следующей команды:
$ sudo /usr/share/opennms/bin/install -dis
После этого запускаем службу OpenNMS используя systemd, затем добавляем её в автозапуск и проверяем статус следующими командами:
$ sudo systemctl start opennms
$ sudo systemctl enable opennms
$ sudo systemctl status opennms
Если в системе установлен межсетевой экран ufw, следует открыть порт 8980
$ sudo ufw allow 8980/tcp
$ sudo ufw reload
Шаг 5. Подключение к веб-консоли OpenNMS
Теперь запускаем любимый браузер и открываем страницу веб-консоли OpenNMS.
http://SERVER_IP:8980/opennms
или
http://FDQN-OF-YOUR-SERVER:8980/opennms
Далее для входа в систему вводим логин и пароль по умолчанию - admin/admin
После этого вы попадете в панели администратора
В целях безопасности следует поменять предустановленный пароль администратора. Для этого переходим на панели меню выбираем "admin → Change Password", в разделе "User account self-service" нажимаем "Change Password".
Вводим текущий пароль, новый пароль и подтверждаем его, затем нажимаем "Submit". После этого выходим из системы и заходим в нее с новым паролем.
А теперь, время изучать, детальные настройки системы и тонкости управления OpenNMS Horizon через веб-интерфейс, добавлять узлы и приложения, согласно Руководству Администратора OpenNMS.