Динамическая маршрутизация настраивается через консоль сервиса FRR (аналог Quagga).
1. Добавьте сервис FRR в автозагрузку и запустите его:
root@hub1:~# systemctl enable frr.service
Synchronizing state of frr.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable frr
root@hub1:~# systemctl start frr.service
При старте в файле /var/log/error.log могут возникать следующие сообщения:
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] zebra state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] bgpd state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] ripd state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] ospfd state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] pbrd state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 268435457] staticd state -> down : initial connection attempt failed
Apr 15 23:28:49 Hub1-n1 watchfrr[2705]: [EC 100663303] Forked background command [pid 2706]: /usr/lib/frr/watchfrr.sh restart all
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop zebra: pid file not found
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop ospfd: pid file not found
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop bgpd: pid file not found
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop ripd: pid file not found
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop pbrd: pid file not found
Apr 15 23:28:49 Hub1-n1 watchfrr.sh: Cannot stop staticd: pid file not found
Данные сообщения не являются ошибкой при старте сервиса.
2. Войдите в консоль сервиса FRR, для этого нужно из linux bash набрать следующую команду:
root@Hub1-n1:~# vtysh
Hello, this is FRRouting (version 7.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
Hub1-n1#
3. Настройте BGP (см. описание http://docs.frrouting.org):
3.1. Перейдите в режим конфигурации:
Hub1-n1# configure terminal
3.2. Добавьте правила фильтрации для маршрутов, распространяемых при помощи протокола BGP:
Hub1-n1(config)# access-list ROUTE_FILTER_OUT seq 10 permit 192.168.255.0/25
Hub1-n1(config)# access-list ROUTE_FILTER_OUT seq 5 permit 192.168.1.0/24
Данные правила позволяют фильтровать маршруты, распространяемые при помощи команды redistribute kernel (см. пункт 3.7). В данном случае позволяется распространять только маршруты до защищаемых подсетей 192.168.255.0/25 и 192.168.1.0/24.
3.3. Перейдите в режим конфигурирования работы протокола BGP (команда router bgp <номер автономной системы (AS)>):
Hub1-n1(config)# router bgp 64512
3.4. Настройте router-id:
Hub1-n1(config-router)# bgp router-id 192.168.200.10
3.5. Добавьте адрес и номер AS соседа. В данном случае нужно, чтобы информация о маршрутах передавалась только маршрутизатору Router1:
Hub1-n1(config-router)# neighbor 192.168.200.1 remote-as 64512
3.6. Перейдите в режим настройки address family:
Hub1-n1(config-router)# address-family ipv4 unicast
3.7. Включите редистрибуцию kernel маршрутов в BGP (в дальнейшем эти маршруты будут отфильтрованы при помощи правил фильтрации (ROUTE_FILTER_OUT)):
Hub1-n1(config-router-af)# redistribute kernel
3.8. Укажите, что при передаче маршрута маршрутизатору Router1 следует менять next-hop на адрес интерфейса, с которого был анонсирован маршрут (по умолчанию iBGP не делает этого):
Hub1-n1(config-router-af)# neighbor 192.168.200.1 next-hop-self
3.9. Примените созданные ранее (см. пункт 3.2) правила фильтрации к взаимодействию с Router1. Таким образом можно сделать так, чтобы на Router1 отправлялись только необходимые маршруты, а не все kernel маршруты:
Hub1-n1(config-router-af)# neighbor 192.168.200.1 distribute-list ROUTE_FILTER_OUT out
Фильтровать то, что поступает от Router1 не имеет смысла, так как iBGP работает таким образом, что маршруты, полученные от внутренних соседей, не передаются другим внутренним соседям.
3.10. Настройка FRR завершена. При помощи команд представленных ниже выйдите из режима конфигурирования и сохраните получившуюся конфигурацию (команда write):
Hub1-n1(config-router-af)# exit-address-family
Hub1-n1(config-router)# end
Hub1-n1# write
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
Выйти из vtysh можно при помощи команды exit.
В Приложении представлены тексты конфигураций для криптошлюза Hub1-n1:
· текст конфигураций Cisco-like;
· текст конфигураций LSP;
· текст конфигураций vtysh.