Приведу пример настройки eBGP на Juniper MX204 с несколькими аплинками и балансировкой трафик между ними.
Перейдем в режим конфигурирования:
configure
Заранее подготовим необходимые политики, чтобы потом применять их к BGP соседям.
edit policy-options
Например принимать только маршрут по умолчанию IPv4/IPv6:
set policy-statement DEFAULT-IPv4 term ACCEPT from route-filter 0.0.0.0/0 exact
set policy-statement DEFAULT-IPv4 term ACCEPT then accept
set policy-statement DEFAULT-IPv4 term REJECT then reject
set policy-statement DEFAULT-IPv6 term ACCEPT from route-filter ::/0 exact
set policy-statement DEFAULT-IPv6 term ACCEPT then accept
set policy-statement DEFAULT-IPv6 term REJECT then reject
Принимать только маршрут по умолчанию IPv4 и увеличить as-path-prepend (так можно балансировать исходящий трафик):
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 from route-filter 0.0.0.0/0 exact
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 then as-path-prepend "MYAS MYAS"
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 1 then accept
set policy-statement DEFAULT-IPv4-IXNFO1-IN term 2 then reject
Пример с as-path-prepend чтобы балансировать входящий трафик:
set policy-statement IXNFO1-OUT term my-prefix from protocol aggregate policy MY-NET-Aggregated
set policy-statement IXNFO1-OUT term my-prefix then as-path-prepend "MYAS MYAS"
set policy-statement IXNFO1-OUT term my-prefix then accept
set policy-statement IXNFO1-OUT term reject-other then reject
Вместо as-path-prepend можно использовать as-path-expand, пример:
then as-path-expand last-as count 2
Пример просмотра AS path:
run show route protocol bgp
run show bgp neighbor 192.168.5.5
Не принимать маршрут по умолчанию:
set policy-statement default-route-reject from route-filter 0.0.0.0/0 exact
set policy-statement default-route-reject then reject
Не принимать серые сети:
set policy-statement bogus-reject from route-filter 127.0.0.0/8 orlonger
set policy-statement bogus-reject from route-filter 10.0.0.0/8 orlonger
set policy-statement bogus-reject from route-filter 172.16.0.0/12 orlonger
set policy-statement bogus-reject from route-filter 192.168.0.0/16 orlonger
set policy-statement bogus-reject from route-filter 169.254.0.0/16 orlonger
set policy-statement bogus-reject from route-filter 224.0.0.0/4 orlonger
set policy-statement bogus-reject from route-filter 240.0.0.0/4 orlonger
set policy-statement bogus-reject then reject
Чтобы анонсировать свою сеть аплинкам, создадим для нее агрегированный маршрут (если ни одного маршрута в этой сети не будет активно, то агрегированный маршрут тоже будет неактивен):
set policy-statement IXNFO-COM1-OUT term my-prefix from protocol aggregate
set policy-statement IXNFO-COM1-OUT term my-prefix from policy MY-NET-Aggregated
set policy-statement IXNFO-COM1-OUT term my-prefix then accept
set policy-statement IXNFO-COM1-OUT term reject-other then reject
set policy-statement MY-NET-Aggregated term MYAS-prefix from route-filter x.x.x.0/23 exact
set policy-statement MY-NET-Aggregated term MYAS-prefix then accept
set routing-options aggregate route x.x.x.0/23
Сеть /23 также можно разделить на две сети /24, например для балансировки, но можно балансировать и без этого:
set policy-statement MY-NET-Aggregated term MYAS-prefix from route-filter x.x.x.0/23 orlonger
set policy-statement MY-NET-Aggregated term MYAS-prefix then accept
set routing-options aggregate route x.x.1.0/24
set routing-options aggregate route x.x.2.0/24
Не принимать серые AS:
set policy-statement bogus-ases from as-path grey-as
set policy-statement bogus-ases then reject
set as-path grey-as 64512-65535
Перейдем к настройке протокола BGP, укажем свою AS, логирование обрыва сессий с соседями:
edit protocols bgp
set local-as 201
set log-updown
Все логи лучше отправлять на syslog сервер и просматривать их через web интерфейс, так удобнее и встроенная память устройств больше прослужит.
Установка Rsyslog + Loganalyzer + MySQL
Пример указания соседей (в закомментированных строках я показал дополнительные параметры):
edit group IXNFO_COM_1
set type external
set hold-time 30
set log-updown
set description TEXT
set peer-as 200
set local-as 201
set export IXNFO-COM1-OUT
; no-advertise-peer-as
; set advertise-inactive
; set damping
; set multipath multiple-as
set neighbor 192.168.5.5 description TEXT
set neighbor 192.168.5.5 local-address 192.168.5.4
set neighbor 192.168.5.5 import [ bogus-reject bogus-ases IXNFO1-IN ]
set neighbor 192.168.6.5 description TEXT
set neighbor 192.168.6.5 local-address 192.168.6.4
set neighbor 192.168.6.5 import [ bogus-reject bogus-ases default-route-reject IXNFO1-IN ]
show
exit
set policy-statement IXNFO1-IN term accept-other then accept
Укажем свою AS и router-id (любой IP адрес из сети соей AS который назначен на устройстве, заодно и агрегированный маршрут постоянно будет активен):
set routing-options router-id 1.2.3.4
set routing-options autonomous-system 201
Настроим балансировку, например когда необходимо принимать маршрут по умолчанию (0.0.0.0/0) от все аплинков:
set policy-options policy-statement load-balancing-policy term balance then load-balance per-packet
set routing-options forwarding-table export load-balancing-policy
Пример изменения local-preference (значение по умолчанию 100), например если определенные маршруты принадлежат AS вашего соседа, анонсируются вам и от других соседей, и чтобы исходящий трафик предпочтительнее шел напрямую к нему, а не через других соседей, увеличим local-preference для всех маршрутов указанной AS, если принимаются только маршруты этой AS или через prefix-list укажем сети и поднимем для них local-preference):
set policy-statement IXNFO-COM1-IN term 1 from as-path prov-1-as
set policy-statement IXNFO-COM1-IN term 1 then local-preference 200
set policy-statement IXNFO-COM1-IN term 1 then accept
set policy-statement IXNFO-COM1-IN term accept-other then accept
set policy-statement IXNFO-COM1-IN term accept-other then local-preference 100
set as-path prov-1-as «.*555»
run show bgp neighbor | match preference
set prefix-list LIST1 100.100.100.0/23
set policy-statement IXNFO-COM1-IN term 1 from prefix-list-filter LIST1 exact
set policy-statement IXNFO-COM1-IN term 1 then local-preference 200
set policy-statement IXNFO-COM1-IN term reject-other then reject
Аплинки желательно подключить напрямую в L3 порты Juniper MX, чтобы не гонять L3 трафик через L2 коммутаторы и потом можно еще на L3 порты аплинков повесить фильтры, например для фильтрации мелких UDP пакетов к NTP и прочие для защиты устройства и сети.
Пример включения отладочных логов (не забываем потом отключить):
set protocols bgp traceoptions file bgp.log
set protocols bgp traceoptions file size 1m
set protocols bgp traceoptions file files 3
set protocols bgp log-updown
Если нет маршрута по умолчанию, а есть серые сети которые нужно отправить на NAT сервер, то смотрите мою статью:
Juniper MX. Как отправить трафик клиентов на NAT сервер
Проверим конфигурацию и применим с указанием комментария:
commit check
commit comment «ixnfo.com»
Пример просмотра маршрутов по номеру AS:
show route aspath-regex ".*65000" | count
Просмотр различной информации:
show route table
run show bgp summary
show route summary
BGP порт должен быть открыт только для соседей, а не публично, поэтому нужно ограничить доступ например как я описывал в статье:
Ограничение доступа к управлению на Juniper MX
Или например так:
edit policy-options prefix-list bgp-neighbors
set apply-path "protocols bgp group <*> neighbor <*>"
edit firewall family inet filter bgp-protect
set term accept-bgp from source-prefix-list bgp-neighbors
set term accept-bgp from protocol tcp
set term accept-bgp from port bgp
set term accept-bgp then accept
set term deny-bgp from protocol tcp
set term deny-bgp from port bgp
set term deny-bgp then reject
set interfaces lo0 unit 0 family inet filter input-list [ bgp-protect limit-mgmt-access ]
Пример обрыва сессии с BGP соседом:
clear bgp neighbor 192.168.5.5
clear bgp neighbor all
Просмотр принятых и анонсируемых маршрутов:
run show route receive-protocol bgp 192.168.5.5
run show route advertising-protocol bgp 192.168.5.5
Смотрите также мои статьи:
Настройка iBGP на Juniper MX
Настройка BGP prefix-limit
добрый день! вопрос, а почему в настройках две политики одна на прием маршркта по умолчанию другая на запрет? Они не буду конфликтовать?
Добрый день! Это примеры, вы настраивайте только то что вам нужно.