Маршрутизатор OpenBGPD BGP¶
Вступ¶
Протокол Border Gateway Protocol (BGP) - це протокол маршрутизації, який об’єднує Інтернет. Таким чином ви можете переглядати цей документ незалежно від того, хто є вашим постачальником послуг Інтернету.
OpenBGPD — це кросплатформна реалізація BGP OpenBSD. Автор використовує його особисто у своїй мережі.
Передумови¶
- Сервер, віртуальна машина або лабораторна мережа з підключенням BGP
- Номер AS із вашого Регіонального Інтернет-реєстру
- Власний або орендований блок IPv4 або IPv6
- Знання мережевого адміністрування
Встановлення пакетів¶
Оскільки OpenBGPD немає в репозиторіях за замовчуванням, спочатку встановіть репозиторій EPEL (додаткові пакети для Enterprise Linux):
dnf install -y epel-release
Потім інсталюйте OpenBGPD
dnf install -y openbgpd
Налаштування OpenBGPD¶
Почнемо зі свіжої конфігурації OpenBGPD:
rm /etc/bgpd.conf
touch /etc/bgpd.conf
chmod 0600 /etc/bgpd.conf
Далі додайте наступне до /etc/bgpd.conf
:
AS YOUR_ASN
router-id YOUR_IPV4
listen on 127.0.0.1
listen on YOUR_IPV4
listen on ::1
listen on YOUR_IPV6
log updates
network IPV4_TO_ADVERTISE/MASK
network IPV6_TO_ADVERTISE/MASK
allow to ebgp prefix { IPV4_TO_ADVERTISE/MASK IPV6_TO_ADVERTISE/MASK }
neighbor PEER_IPV4 {
remote-as PEER_ASN
announce IPv4 unicast
announce IPv6 none
local-address YOUR_IPV4
}
neighbor PEER_IPV6 {
remote-as PEER_ASN
announce IPv4 none
announce IPv6 unicast
local-address YOUR_IPV6
}
Замініть наступну інформацію:
- YOUR_ASN з вашим номером AS.
- YOUR_IPV4 з адресою IPv4 вашого сервера.
- YOUR_IPV6 з адресою IPv6 вашого сервера.
- PEER_ASN із номером AS вашого провайдера.
- PEER_IPV4 з IPv4-адресою вашого провайдера.
- PEER_IPV6 з IPv6-адресою вашого провайдера.
Рядки вище означають наступне:
- Рядок
AS
містить ваш номер BGP AS. - Рядок
router-id
містить ідентифікатор вашого маршрутизатора BGP. Це адреса IPv4, але може бути фіктивним значенням, якщо ви використовуєте BGP лише для IPv6. - Рядок «listen on» вказує, які інтерфейси слухати. Ми повинні слухати всі інтерфейси, що розмовляють BGP.
- Рядки «network» додають мережі, які ми хочемо рекламувати.
- Рядок «allow to ebgp prefix» додає RFC8212 сумісність для безпеки маршрутизації. Деякі хостингові компанії, такі як BuyVM, вимагають цього.
- Блоки
neighbor
визначають кожен вузол IPv4 та IPv6. - Рядок
remote-as
вказує номер AS верхнього потоку. - Рядок
announce IPv4
визначає, чи маємо ми оголошувати маршрутиunicast
IPv4 абоnone
. Це має бутиnone
для висхідного каналу IPv6. - Рядок
announce IPv6
визначає, чи маємо ми оголошувати маршрутиunicast
IPv6 абоnone
. Це має бутиnone
для висхідного каналу IPv4. - Рядок
local-address
— це адреса IPv4 або IPv6 вихідного каналу.
Деякі висхідні потоки можуть використовувати пароль MD5 або BGP multihop. Якщо це так, ваші «сусідні» блоки виглядатимуть так:
neighbor PEER_IPV4 {
remote-as PEER_ASN
announce IPv4 unicast
announce IPv6 none
local-address YOUR_IPV4
multihop 2
local-address 203.0.113.123
}
neighbor PEER_IPV6 {
remote-as PEER_ASN
announce IPv4 none
announce IPv6 unicast
local-address YOUR_IPV6
multihop 2
local-address 2001:DB8:1000::1
}
Вам потрібно буде ввімкнути IP-переадресацію, встановивши ці значення sysctl
:
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Тепер ми повинні включити OpenBGPD і переадресацію:
sysctl -p /etc/sysctl.conf
systemctl enable --now bgpd
Перевірка статусу BGP¶
Після ввімкнення OpenBGPD ви можете побачити статус BGP:
bgpctl show
Ви побачите результат:
Neighbor AS MsgRcvd MsgSent OutQ Up/Down State/PrfRcvd
BGP_PEER PEER_ASN 164 68 0 00:32:04 0
Ви також можете переглянути оголошені маршрути BGP:
bgpctl show rib
Якщо працює правильно, ви повинні побачити таблицю маршрутизації BGP:
flags: * = Valid, > = Selected, I = via IBGP, A = Announced,
S = Stale, E = Error
origin validation state: N = not-found, V = valid, ! = invalid
aspa validation state: ? = unknown, V = valid, ! = invalid
origin: i = IGP, e = EGP, ? = Incomplete
flags vs destination gateway lpref med aspath origin
AI*> N-? YOUR_IPV4/24 0.0.0.0 100 0 i
AI*> N-? YOUR_IPV6::/48 :: 100 0 i
Висновок¶
Хоча спочатку BGP може здатися складним, як тільки ви його опануєте, ви зможете отримати свою частину таблиці маршрутизації Інтернету. Завдяки простоті OpenBGPD мати програмний маршрутизатор або сервер anycast ще простіше. Насолоджуйтесь!
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova