FRR — Протоколы динамической маршрутизации.

Установка, настройка, эксплуатация.

Модератор: ROOT

FRR — Протоколы динамической маршрутизации.

Сообщение ROOT » 14 окт 2017, 18:23

Оглавление


Темы
 Протоколы динамической маршрутизации 
 Настройка 
 Список некоторых протоколов транспортирного уровня 
 Пример конфигурации 
Дополнительные материалы
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
WireGuard - VPN нового поколения
BIND — DNS-сервер
ISCSI — Транспортный протокол для SCSI
Dnscrypt — Проксирование dns-трафика


 Протоколы динамической маршрутизации 
FRR — пакет свободного программного обеспечения, поддерживающий протоколы динамической маршрутизации IP. Компьютер с установленным и сконфигурированным пакетом FRR становится способен использовать любые из нижеследующих протоколов динамической маршрутизации:
  • Routing Information Protocol (RIP): v1, v2, v3;
  • Open Shortest Path First (OSPF): v2, v3;
  • Border Gateway Protocol (BGP): v4;
  • Intermediate System to Intermediate System (IS-IS);
  • Protocol Independent Multicast (PIM, только PIM-SSM)
  • Labed Distribution Protocol (LDP)
  • Bidirectional Forwarding Detection (BFD)
  • Policy-based Routing (PBR)
  • Virtual Router Redundancy Protocol (VRRP)
  • OpenFabric — Протокол маршрутизации, созданный на основе IS-IS
  • Babel
Каждый протокол маршрутизации обслуживается отдельным демоном, с последующим формированием таблиц маршрутизации. Одновременно работать могут несколько разных демонов в сообществе с управляющим демоном zebra.
  1. ripd — демон обрабатывает протокол RIP для IPv4
  2. ripngd — демон обрабатывает протокол RIP для IPv6
  3. ospfd — демон, который поддерживает OSPF v2 для IPv4
  4. ospf6d — демон, который поддерживает OSPF v3 для IPv6
  5. isisd — демон, который поддерживает ISIS
  6. bgpd — поддерживает протокол BGP-4
  7. zebra — демон служащий для формирования таблицы маршрутизации и перераспределения маршрутов между различными протоколами.

1) Устанавливаем FRR
Код: выделить все
dnf install frr

2) Активируем автоматический запуск сервиса FRR, а так же нужных протоколов динамической маршрутизации
Код: выделить все
systemctl enable --now frr.service


2) Включаем политику SElinux
Код: выделить все
setsebool -P zebra_write_config 1

Для проверки установленного значения используем команду
Код: выделить все
getsebool zebra_write_config

При отключенной политики SElinux наблюдаются проблемы с доступом к файлам конфигурации из утилиты настройки vtysh
Код: выделить все
srv.google.loc# wr
Building Configuration...
Can't open configuration file /etc/frr/zebra.conf.I7FcD2.
Can't open configuration file /etc/frr/ospfd.conf.gTaOz2.
Can't open configuration file /etc/frr/bgpd.conf.nn5Cs2.

3) Для того чтобы сервис FRR поднимал нужные протоколы динамической маршрутизации их нужно выбрать. Отредактируйте файл /etc/frr/daemons, изменив значение "no" у нужных Вам сервисов на "yes"
На более новых версиях quagga для этой цели может использоваться файл /etc/frr/daemons
Код: выделить все
bgpd=yes
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
pim6d=no
nhrpd=no
eigrpd=no
sharpd=no
pbrd=no
bfdd=no
fabricd=no
vrrpd=no
pathd=no
...
vtysh_enable=yes
zebra_options="  -A 127.0.0.1 -s 90000000"
...
MAX_FDS=1024
...

4) Включаем IPv4 Unicast Forwarding:
Код: выделить все
echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.forwarding=1" >> /etc/sysctl.conf

Включаем IPv4 Multicast Forwarding:
Код: выделить все
echo "net.ipv4.conf.all.mc_forwarding=1" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.mc_forwarding=1" >> /etc/sysctl.conf
sysctl -p

Включаем IPv6 Unicast Forwarding:
?????
Код: выделить все
sed 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/g' /etc/sysctl.conf >> /etc/sysctl.conf
echo "net.ipv6.conf.default.forwarding=1" >> /etc/sysctl.conf
sysctl -p

Данная команда включает не маршрутизацию, а возможность принимать чужие пакеты (пакеты адресующиеся другому хосту) Сам механизм маршрутизации является неотъемлемой частью стека протокола TCP/IP и не может быть выключен.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 438
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 16:47



 Настройка 
Утилита управления интерфейсами и протоколами маршрутизации vtysh представляет собой аналогичную BASH командную оболочку. Применяемые команды для конфигурирования протоколов маршрутизации и интерфейсов аналогичны командам применяемым при настройке оборудования CISCO.



Протоколы динамической маршрутизации BGP, OSPF и RIP используют в качестве транспорта IP, и для них закреплены следующие порты и протоколы:
  • Для BGP используется порт 179/TCP.
  • Для RIP используется порт 520/UDP.
  • Для OSPF используется протокол 89 (не порт, а номер протокола в заголовке IP).
Пример разрешающего правила для протокола OSPF на iptables:
Код: выделить все
iptables -A INPUT -p ospf -j ACCEPT
или
iptables -A INPUT -p 89 -j ACCEPT

Пример разрешающего правила для протокола OSPF на firewalld:
Код: выделить все
firewall-cmd --add-protocol=89 --permanent
firewall-cmd --reload

Пример разрешающего правила для протокола BGP на iptables:
Код: выделить все
iptables -A INPUT -p tcp --dport 179 -j ACCEPT

Пример разрешающего правила для протокола BGP на firewalld:
Код: выделить все
firewall-cmd --add-port=179/tcp --permanent
firewall-cmd --reload


Для OSPF также может потребоваться разрешить multicast-трафик (адреса 224.0.0.5 и 224.0.0.6), если используется multicast-режим.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 438
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 09 апр 2022, 16:48



 Список некоторых протоколов транспортирного уровня 
№ ПротоколаСокращениеПротоколОписание
0HOPOPTIPv6 Hop-by-Hop Option
1ICMPInternet Control Message ProtocolПротокол управляющих сообщений, используется для передачи сообщений об ошибках и других исключительных ситуациях, возникших при передаче данных, а также выполняет некоторые сервисные функции.
2IGMPInternet Group Management ProtocolПротокол управления групповой передачей данных.
3GGPGateway-to-Gateway Protocol
4IPv4IPv4 (инкапсуляция)
6TCPTransmission Control ProtocolПротокол управления передачей, осуществляет надёжную, упорядоченную доставку данных.
8EGPExterior Gateway ProtocolПротокол обмена информации между маршрутизаторами нескольких автономных систем.
9IGPInterior Gateway ProtocolЛюбой частный протокол внутридоменной маршрутизации.
17UDPUser Datagram ProtocolПротокол пользовательских датаграмм, передача данных без установления соединения.
27RDPReliable Datagram ProtocolПротокол надежной передачи данных между пакетно-ориентированными приложениями.
41IPv6IPv6 (инкапсуляция)
43IPv6-RouteRouting Header for IPv6
44IPv6-FragFragment Header for IPv6
46RSVPResource Reservation ProtocolПротокол резервирования сетевых ресурсов. Сообщает маршрутизаторам сети потребностей конечных узлов по качеству обслуживания.
47GREGeneric Routing EncapsulationПротокол туннелирования сетевых пакетов. Инкапсулирует пакеты сетевого уровня в IP пакеты.
50ESPEncapsulating Security PayloadНабор протоколов IPsec, обеспечивающих защиту данных. Позволяет осуществлять подтверждение подлинности и/или шифрование IP-пакетов.
56TLSPTransport Layer Security Protocol (с использованием ключей Kryptonet)Криптографический протокол, обеспечивающий защищённую передачу данных.
57SKIPSimple Key-Management for Internet ProtocolПротокол обмена ключами шифрования.
58IPv6-ICMPICMP for IPv6Протокол управляющих сообщений для IPv6.
59IPv6-NoNxtNo Next Header for IPv6
60IPv6-OptsDestination Options for IPv6
75PVPPacket Video Protocol
80ISO-IPnternational Organization for Standardization Internet Protocol
81VMTPVersatile Message Transaction Protocol
82SECURE-VMTPSecure Versatile Message Transaction Protocol
88EIGRPEIGRPПротокол маршрутизации, разработанный фирмой Cisco.
89OSPFOpen Shortest Path FirstПротокол динамической маршрутизации, основанный на технологии отслеживания состояния канала и использующий для нахождения кратчайшего пути Алгоритм Дейкстры.
94IPIPIP-within-IP Encapsulation Protocol
97ETHERIPEthernet-within-IP Encapsulation
111IPX-in-IPIPX in IP
112VRRPVirtual Router Redundancy ProtocolПротокол объединения группы маршрутизаторов в один виртуальный маршрутизатор и назначения им общего IP-адреса.
124IS-IS over IPv4Протокол внутридоменной маршрутизации.
133FCFibre ChannelСемейство протоколов для высокоскоростной передачи данных.
137MPLS-in-IPПротокол многопротокольной коммутации по меткам, осуществляет высокопроизводительную передачу данных между узлами сети при помощи меток.
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 438
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Сообщение ROOT » 06 фев 2025, 22:14



 Пример конфигурации BGP 
BGP имеет два режима работы — eBGP (External BGP) и iBGP (Internal BGP), которые используются для обмена маршрутной информацией между автономными системами (AS) и внутри одной AS. Выбор логики работы между eBGP и iBGP происходит путём сравнения номера AS соседа со своим. Если номера AS совпадают, то используется iBGP, в противном случае используется eBGP.
eBGP (External BGP)
  • Назначение: Обмен маршрутами между разными автономными системами (AS).
  • Особенности:
    • Работает между маршрутизаторами из разных AS.
    • По умолчанию TTL=1 (только для непосредственно подключенных соседей).
    • Маршруты, полученные через eBGP, анонсируются всем соседям (eBGP и iBGP).
    • AS_PATH увеличивается на 1 при каждом переходе через AS.
  • Применение: Подключение к интернет-провайдерам, обмен маршрутами между разными организациями.
iBGP (Internal BGP)
  • Назначение: Обмен маршрутами внутри одной автономной системы (AS).
  • Особенности:
    • Работает между маршрутизаторами внутри одной AS.
    • По умолчанию TTL=64 (может работать через несколько прыжков).
    • Маршруты, полученные через iBGP, не анонсируются другим iBGP-соседям (правило split-horizon).
    • AS_PATH не изменяется.
    • Требуется полносвязная топология или использование Route Reflector/Confederation.
  • Применение: Внутренняя маршрутизация в крупных сетях, дата-центрах, корпоративных сетях.
Итог:
  • eBGP — для обмена маршрутами между разными AS.
  • iBGP — для обмена маршрутами внутри одной AS.
  • Оба режима критически важны для построения масштабируемых и отказоустойчивых сетей.


Код: выделить все
Building configuration...

Current configuration:
!
frr version 10.2
frr defaults traditional
hostname srv.test.ru
no ipv6 forwarding
!
# prefix-list, разрешающего маршруты для перечисленных сетей
ip prefix-list ALLOW-ALL seq 10 permit 0.0.0.0/0 ge 29 le 29
ip prefix-list ALLOW-ALL seq 20 permit 195.1.1.0/24
ip prefix-list ALLOW-ALL seq 30 permit 195.0.1.0/24
ip prefix-list ALLOW-ALL seq 40 deny 0.0.0.0/0 le 32
! prefix-list для маршрута по умолчанию
ip prefix-list DEFAULT-ROUTE seq 10 permit 0.0.0.0/0
!
! Настройка интерфейса ens3 (внешний интерфейс)
interface ens3
 description To INET
 ip address 195.1.1.1/24
exit
!
! Настройка интерфейса ens4 (внутренний интерфейс)
interface ens4
 description To LAN
 ip address 10.10.10.6/29
exit
!
! Настройка BGP
router bgp 65000
 ! Включение логирования изменений соседей
 bgp log-neighbor-changes
 ! Включение плавного перезапуска BGP
 bgp graceful-restart
 ! Разрешение multipath для маршрутов с одинаковой длиной AS_PATH
 bgp bestpath as-path multipath-relax
 ! Настройка таймеров BGP (keepalive=5s, hold-time=20s)
 timers bgp 5 20
 ! Настройка соседа 10.10.10.1 (AS 65040)
 neighbor 10.10.10.1 remote-as 65040
 ! Описание соседа
 neighbor 10.10.10.1 description BGP Peer with 65040
 ! Пароль для аутентификации соседа
 neighbor 10.10.10.1 password DRhb5623$!
 ! Указание интерфейса для установки соединения
 neighbor 10.10.10.1 update-source 10.10.10.6
 ! Настройка соседа 195.1.1.3 (AS 65030)
 neighbor 195.1.1.3 remote-as 65030
 neighbor 195.1.1.3 description BGP Peer with 65030
 neighbor 195.1.1.3 password DRhb5623$!
 neighbor 195.1.1.3 update-source 195.1.1.1
 !
 address-family ipv4 unicast
  ! Анонсирование сетей в BGP
  network 10.10.10.0/29
  network 195.1.1.0/24
  ! Анонсирование маршрута по умолчанию
  neighbor 10.10.10.1 default-originate route-map DEFAULT-ORIGINATE
  ! Без soft-reconfiguration продает маршрута по умолчанию
  neighbor 10.10.10.1 soft-reconfiguration inbound
  ! Разрешение AS 65040 в пути до 1 раза
  neighbor 10.10.10.1 allowas-in 1
  ! Применение route-map для входящих маршрутов
  neighbor 10.10.10.1 route-map ALLOW-NET in
  ! Применение route-map для исходящих маршрутов
  neighbor 10.10.10.1 route-map ALLOW-NET out
  neighbor 195.1.1.3 soft-reconfiguration inbound
  neighbor 195.1.1.3 allowas-in 1
  neighbor 195.1.1.3 route-map ALLOW-NET in
  neighbor 195.1.1.3 route-map ALLOW-NET out
 exit-address-family
exit
!
! Разрешаем принимать маршрут по умолчанию
route-map ALLOW-NET permit 5
 description "Allow Default Route"
 match ip address prefix-list DEFAULT-ROUTE
exit
! Привязываем второй prefix-list к route-map для разрешения сетей
route-map ALLOW-NET permit 10
 description "Allow All NetWork"
 match ip address prefix-list ALLOW-ALL
exit
! отдельным route-map привязываем prefix-list DEFAULT-ROUTE для отдачи соседу
route-map DEFAULT-ORIGINATE permit 10
 match ip address prefix-list DEFAULT-ROUTE
exit
!
end

Пояснения к ключевым блокам
  1. Prefix-List
    • DEFAULT-ROUTE: Разрешает передачу только маршрут по умолчанию (0.0.0.0/0).
    • ALLOW-NET: Разрешает маршруты всех перечисленных сетей (0.0.0.0/0, 10.10.10.0/24 le 29, 195.1.1.0/24, 195.0.1.0/24).
  2. Route-Map
    • ALLOW-DEFAULT: Применяет prefix-list DEFAULT-ROUTE для фильтрации маршрутов. Используется для управления маршрутом по умолчанию.
    • ALLOW-NET: Применяет prefix-list ALLOW-ALL для фильтрации маршрутов согласно списку сетей.
  3. BGP
    • bgp log-neighbor-changes: Включает логирование изменений состояния соседей.
    • bgp graceful-restart: Включает поддержку Graceful Restart для плавного перезапуска BGP.
    • bgp bestpath as-path multipath-relax: Разрешает multipath для маршрутов с одинаковой длиной AS_PATH.
    • timers bgp 5 20: Настраивает таймеры BGP (keepalive=5s, hold-time=20s).
    • neighbor: Настройка соседей BGP с указанием пароля, описания и других параметров.
    • address-family ipv4 unicast: Настройка адресного семейства IPv4, включая анонсирование сетей и применение route-map.
Операторы для фильтрации масок
В prefix-list доступны следующие операторы для работы с масками:
  • ge (greater than or equal): Маска должна быть длиннее или равна указанному значению.
  • le (less than or equal): Маска должна быть короче или равна указанному значению.
  • eq (equal): Маска должна быть ровно указанного значения (этот оператор используется неявно, если не указаны ge или le).


Правила для Route-Map и Prefix-List
  1. Для простых конфигураций достаточно если имена Prefix-List и Route-Map будут совпадать (это не запрещено)
  2. На вход и выход можно назначить разные Route-Map, но только один
  3. На один Route-Map можно привязать несколько Prefix-List. Это делается в отдельной секции одноимённого Route-Map но с увеличенным значением последовательности (seq)
  4. Многострочный Prefix-List пишется под одним именем но с увеличением номера последовательности. Нумерация правил должна быть уникальной в рамках одного имени Prefix-List или Route-Map
    Код: выделить все
    ip prefix-list ALLOW-ALL seq 20 permit 0.0.0.0/0 ge 29 le 29
    ip prefix-list ALLOW-ALL seq 30 permit 195.1.1.0/24
    ip prefix-list ALLOW-ALL seq 40 permit 195.0.1.0/24
    ip prefix-list ALLOW-ALL seq 70 deny 0.0.0.0/0 le 32
  5. Если маршрут не соответствует ни одному правилу в prefix-list, он отклоняется. Однако, если вы хотите явно указать запрещающее правило, это можно сделать:
    Код: выделить все
    ip prefix-list ALLOW-LAN seq 30 deny 0.0.0.0/0 le 32
  6. Нумеровать правила в Prefix-List и Route-Map желательно с шагом (например 10), чтобы иметь возможность добавить правило не переписывая весь Prefix-List
  7. Сначала создавайте prefix-list, затем route-map, и только потом привязывайте их.
  8. Изменения в prefix-list и route-map применяются автоматически, без необходимости отвязывать и перепривязывать.


Диагностика BGP
  1. отображает все маршруты, полученные от указанного BGP-соседа
    Код: выделить все
    show ip bgp neighbors 195.1.1.1 received-routes
  2. отображает все маршруты, которые были анонсированы указанному BGP-соседу
    Код: выделить все
    show ip bgp neighbors 195.1.1.1 advertised-routes
  3. Эта команда отображает все маршруты, связанные с указанным BGP-соседом, как полученные, так и анонсированные маршруты.
    Код: выделить все
    show ip bgp neighbors 195.1.1.1 routes
  4. Эта команда отображает информацию о всех BGP-соседях, включая их состояние, IP-адреса, AS номера и другую статистику.
    Код: выделить все
    show ip bgp neighbors
  5. Эта команда отображает краткую сводку по всем BGP-сессиям, включая количество полученных префиксов, состояние сессий и другую статистику.
    Код: выделить все
    show ip bgp summary
  6. Эта команда отображает подробную информацию о всех BGP-маршрутах, включая атрибуты маршрутов (например, AS_PATH, NEXT_HOP, LOCAL_PREF и другие).
    Код: выделить все
    show ip bgp detail
  7. Эта команда отображает все маршруты, полученные через BGP и добавленные в таблицу маршрутизации.
    Код: выделить все
    show ip route bgp
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 438
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный


Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron