Настройка iBGP на Juniper MX

Для примера выполню настройку Internal BGP на Juniper MX204. Так как в сети имеются сервера с Accel-ppp (ipoe) и нужно балансировать пользователей между этими серверами и Juniper, то iBGP будет передавать маршруты пользователей с маской /32 cо всех устройств на основной маршрутизатор/маршрутизаторы. iBGP также нужен когда к Uplink провайдерам есть несколько линков которые подключены в разные маршрутизаторы, тогда между этими маршрутизаторами необходимо настроить iBGP.

Перейдем в режим конфигурации:

configure

Обязательно укажем router-id:

set routing-options router-id 192.168.5.5

Укажем номер AS:

set routing-options autonomous-system 65000

Приступим к настройке протокола BGP:

edit protocols bgp
set local-as 65000

Можно логировать состояние соседей:

set log-updown

Тут же создадим группу со списком локальных соседей:

edit group iBGP
set type internal
set neighbor 192.168.5.6
set neighbor 192.168.5.7
set peer-as 65000
set description "ixnfo.com"
exit
exit

Теперь необходимо создать политику в которой определим какие маршруты необходимо анонсировать соседям, например direct — для анонсирования маршрутов которые есть на loopback, access-internal — маршруты подключенных пользователей, а также укажем что разрешены маршруты только с маской /32:

edit policy-options policy-statement ixnfo-export
set term 1 from route-filter 0.0.0.0/0 prefix-length-range /32-/32
set term 1 from protocol [ access-internal direct ]
set term 1 then accept
set term 2 from protocol [ bgp ospf ]
set term 2 then reject
set then reject
exit

Применим эту политику к BGP:

edit protocols bgp
set export ixnfo-export
exit

Применим конфигурацию:

commit check
commit comment "iBGP"

В качестве соседей у меня были Linux сервера с Bird, в котором я также указал фильтр который позволял принимать только маршруты с маской /32, а также настроил route reflector.

В настройках протокола BGP можно также включить отладочные логи (и позже их отключить, чтобы не испортить внутреннюю память устройства):

edit protocols bgp
set traceoptions file bgp.log size 1m files 2
set traceoptions flag ?
set traceoptions flag all
commit
run show log bgp.log | last 100
delete traceoptions
commit
exit

Приведу еще пример политики исключающей серые сети:

edit policy-options
set policy-statement bogons-reject from route-filter 127.0.0.0/8 orlonger
set policy-statement bogons-reject from route-filter 10.0.0.0/8 orlonger
set policy-statement bogons-reject from route-filter 172.16.0.0/12 orlonger
set policy-statement bogons-reject from route-filter 192.168.0.0/16 orlonger
set policy-statement bogons-reject from route-filter 169.254.0.0/16 orlonger
set policy-statement bogons-reject from route-filter 224.0.0.0/4 orlonger
set policy-statement bogons-reject from route-filter 240.0.0.0/4 orlonger
set policy-statement bogons-reject then reject

set policy-statement bogons-as from as-path grey-as
set policy-statement bogons-as then reject
set policy-statement as-path grey-as 64512-65534

Политика запрещающая принимать маршрут по умолчанию:

edit policy-options
set policy-statement default-route-reject from route-filter 0.0.0.0/0 exact
set policy-statement default-route-reject then reject

Можно применить сразу несколько политик:

edit protocols bgp
set import [ bogons-reject bogons-as xxx1 xxx2 ]

Проверим какие маршруты из указанной сети и политики экспортировались:

test policy ixnfo-export 172.16.0.0/12

Выйдем из режим конфигурации и посмотрим какие маршруты импортированы и экспортированы от указанного соседа:

exit
show route receive-protocol bgp 192.168.5.6
show route advertising-protocol bgp 192.168.5.6

Пример просмотра маршрутов в Linux, а также можно мониторить их количество через Zabbix:

 ip route | grep "via 192.168.5.5"
 ip route | grep "via 192.168.5.5" | wc -l

Посмотрим информацию и статистику о соседях:

show bgp neighbor
show bgp summary
show bgp group
show route protocol bgp
show bgp group iBGP

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 ]

Применим конфигурацию и убедимся что все работает (цифра 1 означает количество минут через которое конфигурации вернется в предыдущее состояние если например вы что-то не так настроили и потеряли связь с устройством):

commit confirmed 1

Если все отлично, то окончательно применим конфигурацию:

commit

Со стороннего Linux сервера убедимся что порт закрыт:

nmap 192.168.5.5

Если iBGP планируется настраивать только между двумя устройствами, то может оно и вовсе не нужно, достаточно на маршрутизаторе указать статические маршруты, например:

route add -host 172.16.0.1 gw 192.168.5.5
route del -host 172.16.0.1 gw 192.168.5.5
route add -net 10.10.0.0/20 gw 192.168.5.5

Смотрите также мои статьи:

Оставьте комментарий

Добавить комментарий