Настройка BGP в BIRD2 на Linux VPS

12 мин чтения·Matthieu|

Установка BIRD2 на Debian 12 или Ubuntu 24.04 и настройка BGP-сессии для анонса собственных IP-префиксов. Dual-stack, фильтры экспорта, persistent dummy-интерфейсы, правила nftables и проверка через birdc.

BIRD — демон маршрутизации, который поддерживает CZ.NIC. Версия 2 объединила IPv4 и IPv6 в один процесс, заменила разделенную архитектуру BIRD/BIRD6 из 1.x и добавила мощный язык фильтров. В этом руководстве рассматривается установка BIRD2 на Linux VPS, настройка BGP-сессии с вышестоящим провайдером, анонс ваших IP-префиксов и проверка работоспособности.

Все примеры dual-stack (IPv4 + IPv6). Подставляйте свои ASN, IP-адреса и префиксы вместо плейсхолдеров.

Что нужно перед настройкой BIRD2 для BGP?

Прежде чем редактировать bird.conf, вам нужен ASN, выделенное IP-пространство и провайдер, который предоставляет BGP-сессии на VPS. Без всех трех составляющих BIRD2 нечего анонсировать и некому пировать.

Соберите эти данные у провайдера или из аллокации RIR:

Параметр Пример Где взять
Ваш ASN AS65400 RIPE NCC, ARIN или ваш LIR
Ваш IPv4-префикс 203.0.113.0/24 Аллокация RIR или PA-назначение от провайдера
Ваш IPv6-префикс 2001:db8:1000::/48 Аллокация RIR или PA-назначение от провайдера
ASN аплинка AS64496 Данные BGP-сессии от провайдера
IPv4 пира аплинка 198.51.100.1 Данные BGP-сессии от провайдера
IPv6 пира аплинка 2001:db8::1 Данные BGP-сессии от провайдера
Ваш IPv4 для пиринга 198.51.100.2 Данные BGP-сессии от провайдера
Ваш IPv6 для пиринга 2001:db8::2 Данные BGP-сессии от провайдера
MD5-пароль (общий секрет) Согласовывается с провайдером

Также нужны ROA-записи для ваших префиксов, иначе маршруты не пройдут RPKI-валидацию на downstream-сетях. Настройка описана тут: .

Убедитесь, что провайдер добавил ваши префиксы в свои IRR-фильтры. Без этого анонсы будут отфильтрованы, даже если BGP-сессия поднялась.

VPS с 1 ГБ RAM достаточно для BIRD2 с полной таблицей (больше 1 миллиона IPv4-маршрутов). Если вы принимаете от аплинка только default route, потребление памяти не превысит 100 МБ.

Как установить BIRD2 на Debian 12 и Ubuntu 24.04?

BIRD2 доступен в стандартных репозиториях обоих дистрибутивов. Debian 12 содержит версию 2.0.12, Ubuntu 24.04 — версию 2.14. Обе подходят для базового BGP, но официальный репозиторий CZ.NIC предоставляет BIRD 2.18 (релиз январь 2026) с поддержкой BGP dynamic unnumbered, улучшенной производительностью и последними исправлениями. Для продакшена используйте репозиторий CZ.NIC.

Примечание: CZ.NIC публикует пакеты BIRD2 под именем проекта bird2. Не путайте с проектом bird (только для Debian) или bird3 (BIRD 3.x).

Установка из репозитория CZ.NIC (рекомендуется)

Добавьте официальный репозиторий, затем установите:

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates wget

Импортируйте GPG-ключ CZ.NIC:

sudo wget -O /usr/share/keyrings/cznic-labs-pkg.gpg https://pkg.labs.nic.cz/gpg

Добавьте репозиторий. На Debian 12:

echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 bookworm main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list

На Ubuntu 24.04:

echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 noble main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list

Установите BIRD2:

sudo apt-get update
sudo apt-get -y install bird2

Установка из стандартных репозиториев

Если предпочитаете пакет из дистрибутива:

sudo apt-get update
sudo apt-get -y install bird2

Проверка установки

bird --version

Ожидаемый вывод (репозиторий CZ.NIC):

BIRD version 2.18

Проверьте, что сервис запущен:

sudo systemctl status bird

BIRD стартует автоматически после установки. Стандартный конфиг в /etc/bird/bird.conf — это заготовка. В следующем разделе вы замените его полностью.

Как устроен bird.conf для BGP?

BGP-ready bird.conf состоит из пяти блоков: глобальные настройки и четыре секции протоколов (device, direct, kernel, bgp). Каждый протокол работает независимо и обменивается данными через таблицы маршрутизации.

Ниже полный bird.conf для dual-stack BGP. Сначала прочитайте его целиком, затем разделы ниже объяснят каждый блок.

sudo cp /etc/bird/bird.conf /etc/bird/bird.conf.bak
sudo tee /etc/bird/bird.conf > /dev/null << 'BIRDCONF'
# /etc/bird/bird.conf - BIRD2 BGP configuration
# Replace all placeholder values with your own

log syslog all;

router id 198.51.100.2;

# Watch interface state changes
protocol device {
    scan time 10;
}

# Import connected routes (needed for next-hop resolution)
protocol direct {
    ipv4;
    ipv6;
    interface "dummy0";
    interface "eth0";
}

# Sync BIRD routes to kernel routing table
protocol kernel {
    ipv4 {
        export all;
        import all;
    };
    learn;
    scan time 15;
    merge paths on;
}

protocol kernel {
    ipv6 {
        export all;
        import all;
    };
    learn;
    scan time 15;
    merge paths on;
}

# Define your prefixes
define OWN_V4_PREFIX = 203.0.113.0/24;
define OWN_V6_PREFIX = 2001:db8:1000::/48;

# Export filter: only announce your own prefixes
filter export_bgp_v4 {
    if net = OWN_V4_PREFIX then accept;
    reject;
}

filter export_bgp_v6 {
    if net = OWN_V6_PREFIX then accept;
    reject;
}

# Static routes for prefix origination (point to dummy0)
protocol static static_v4 {
    ipv4;
    route 203.0.113.0/24 via "dummy0";
}

protocol static static_v6 {
    ipv6;
    route 2001:db8:1000::/48 via "dummy0";
}

# BGP session with upstream provider
protocol bgp upstream1 {
    description "Upstream Provider";
    local 198.51.100.2 as 65400;
    neighbor 198.51.100.1 as 64496;
    source address 198.51.100.2;
    hold time 90;
    keepalive time 30;
    password "your-md5-secret";

    ipv4 {
        import all;
        export filter export_bgp_v4;
        next hop self;
    };

    ipv6 {
        import all;
        export filter export_bgp_v6;
        next hop self;
    };
}
BIRDCONF

Установите права на конфигурационный файл. Доступ нужен только root и пользователю bird:

sudo chown root:bird /etc/bird/bird.conf
sudo chmod 640 /etc/bird/bird.conf

Проверьте права:

ls -la /etc/bird/bird.conf

Ожидаемый вывод:

-rw-r----- 1 root bird 1247 Mar 19 12:00 /etc/bird/bird.conf

Глобальные настройки

log syslog all;
router id 198.51.100.2;

router id должен быть глобально уникальным IPv4-адресом. Используйте один из назначенных вам IP. BIRD может определить его автоматически по интерфейсам, но явное указание надежнее.

log syslog all отправляет все логи в системный журнал. Читайте их через journalctl -u bird -f. Если нужен подробный вывод при отладке конкретного протокола, временно добавьте debug protocols all;. Уберите после того, как сессия заработает. Debug-логирование генерирует большой объем и может заполнить хранилище журнала.

Protocol device

protocol device {
    scan time 10;
}

Отслеживает изменения состояния интерфейсов каждые 10 секунд. Обязателен. Без него BIRD не знает, когда интерфейсы поднимаются или падают.

Protocol direct

protocol direct {
    ipv4;
    ipv6;
    interface "dummy0";
    interface "eth0";
}

Импортирует connected-маршруты с перечисленных интерфейсов. BIRD нуждается в них для разрешения next-hop. Указывайте только интерфейсы, задействованные в BGP.

Protocol kernel

Нужны два блока kernel protocol: один для IPv4, другой для IPv6. Каждый синхронизирует свое адресное семейство между таблицей маршрутизации BIRD и таблицей ядра Linux.

merge paths on включает ECMP при наличии нескольких аплинков. learn импортирует существующие маршруты ядра в BIRD.

Что делает блок protocol BGP?

Блок protocol bgp определяет пиринг-сессию с одним соседом. Он указывает, кто вы (local ... as), с кем пирите (neighbor ... as), аутентификацию (password) и какие маршруты обмениваются (блоки каналов).

Основные директивы:

Директива Назначение
local <ip> as <ASN> Ваш IP для пиринга и ASN
neighbor <ip> as <ASN> IP и ASN аплинка
source address <ip> Source IP для TCP-соединения
hold time 90 Секунды до объявления пира мертвым (3x keepalive)
keepalive time 30 Интервал между keepalive-сообщениями
password "..." MD5-аутентификация (RFC 2385)

MD5-аутентификация защищает BGP-сессию от поддельных TCP RST и инъекционных атак. Обе стороны должны настроить одинаковый пароль. Запросите общий секрет у провайдера.

Как настроить dual-stack каналы IPv4 и IPv6?

BIRD2 обрабатывает IPv4 и IPv6 как отдельные каналы внутри одного блока протокола. У каждого канала своя политика import/export:

ipv4 {
    import all;
    export filter export_bgp_v4;
    next hop self;
};

ipv6 {
    import all;
    export filter export_bgp_v6;
    next hop self;
};

import all принимает все маршруты от аплинка. В продакшене стоит фильтровать и входящие маршруты тоже. Примеры импортных фильтров описаны тут: .

next hop self перезаписывает атрибут next-hop на ваш пиринговый IP. Требуется, когда аплинк ожидает, что трафик пойдет через ваш адрес — стандартная схема на VPS.

Если провайдер использует отдельные BGP-сессии для IPv4 и IPv6 (разные IP соседа для каждого адресного семейства), разнесите их в два отдельных блока protocol bgp.

Как написать фильтры экспорта для анонса только своих префиксов?

Фильтры экспорта контролируют, какие маршруты BIRD отправляет аплинку. Неправильно настроенный фильтр может утечь чужие маршруты, что приведет к отключению сессии и, возможно, звонку из NOC вашего аплинка.

Фильтр из конфига выше использует простое совпадение по префиксу:

define OWN_V4_PREFIX = 203.0.113.0/24;

filter export_bgp_v4 {
    if net = OWN_V4_PREFIX then accept;
    reject;
}

Это принимает только точный /24. Все остальное отклоняется. reject в конце — это default deny.

Для нескольких префиксов используйте set:

define OWN_V4_PREFIXES = [ 203.0.113.0/24, 198.51.100.0/24 ];

filter export_bgp_v4 {
    if net ~ OWN_V4_PREFIXES then accept;
    reject;
}

Оператор ~ выполняет совпадение по набору префиксов. Также поддерживается нотация диапазонов:

define OWN_V4_PREFIXES = [ 203.0.113.0/24{24,24} ];

{24,24} ограничивает совпадение ровно /24. Используйте {24,28}, если нужно анонсировать more-specific до /28 для traffic engineering.

Для IPv6 применяется тот же шаблон:

define OWN_V6_PREFIXES = [ 2001:db8:1000::/48{48,48} ];

filter export_bgp_v6 {
    if net ~ OWN_V6_PREFIXES then accept;
    reject;
}

Всегда делайте фильтры экспорта максимально строгими. Анонсируйте только то, что принадлежит вам, с точными длинами префиксов. Отсутствующий reject в конце фильтра заставит BIRD использовать действие по умолчанию для канала, которое может быть accept. Всегда завершайте явным reject.

Можно протестировать фильтр без применения:

sudo birdc eval '203.0.113.0/24 ~ [ 203.0.113.0/24 ]'

Вернет TRUE или FALSE и поможет отладить логику фильтра до перезагрузки конфига.

Как создать persistent dummy-интерфейс для origination префикса?

BGP анонсирует префиксы, которые присутствуют в таблице маршрутизации. Нужен интерфейс с назначенным префиксом, чтобы BIRD мог originate маршрут. Dummy-интерфейс для этого подходит: он всегда поднят, не имеет физического линка и переживает перезагрузку при настройке через systemd-networkd.

Команды ip link add через командную строку теряются при перезагрузке. Используйте systemd-networkd.

Создание .netdev-файла

sudo tee /etc/systemd/network/10-dummy0.netdev > /dev/null << 'EOF'
[NetDev]
Name=dummy0
Kind=dummy
EOF

Создание .network-файла

sudo tee /etc/systemd/network/10-dummy0.network > /dev/null << 'EOF'
[Match]
Name=dummy0

[Network]
Address=203.0.113.1/32
Address=2001:db8:1000::1/128
EOF

Назначьте один /32 (или /128 для IPv6) из вашего выделенного префикса на dummy-интерфейс. Этот адрес не должен быть доступен извне. Он нужен только для того, чтобы у BIRD был connected-маршрут для префикса.

Применение и проверка

sudo systemctl restart systemd-networkd

Подождите несколько секунд, затем проверьте:

ip addr show dummy0

Ожидаемый вывод:

3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.1/32 scope global dummy0
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1000::1/128 scope global
       valid_lft forever preferred_lft forever

state UNKNOWN для dummy-интерфейса — это нормально. Это означает, что на канальном уровне нет физического носителя для отслеживания, но интерфейс UP и пересылает трафик. MAC-адрес генерируется случайно systemd-networkd и будет отличаться на вашей системе.

Если вы используете ifupdown вместо systemd-networkd (проверьте через networkctl status), может потребоваться сначала включить systemd-networkd:

sudo systemctl enable --now systemd-networkd

Убедитесь, что файлы на месте для следующей перезагрузки:

ls -la /etc/systemd/network/10-dummy0.*
-rw-r--r-- 1 root root  42 Mar 19 12:00 /etc/systemd/network/10-dummy0.netdev
-rw-r--r-- 1 root root  89 Mar 19 12:00 /etc/systemd/network/10-dummy0.network

Как защитить BGP правилами файрвола nftables?

BGP работает на TCP-порту 179. Без правил файрвола любой хост в интернете может попытаться открыть BGP-сессию с вашим роутером. Автоматические сканеры находят открытый порт 179 в течение нескольких часов после запуска VPS. Ограничьте порт 179 только IP-адресами пиров.

nftables может не быть установлен по умолчанию на Ubuntu 24.04. Сначала установите:

sudo apt-get -y install nftables

Создание набора правил nftables

sudo tee /etc/nftables.d/bgp.conf > /dev/null << 'EOF'
table inet bgp_filter {
    set bgp_peers_v4 {
        type ipv4_addr
        elements = { 198.51.100.1 }
    }

    set bgp_peers_v6 {
        type ipv6_addr
        elements = { 2001:db8::1 }
    }

    chain input {
        type filter hook input priority 0; policy accept;

        # Allow BGP from known peers only
        tcp dport 179 ip saddr @bgp_peers_v4 accept
        tcp dport 179 ip6 saddr @bgp_peers_v6 accept

        # Drop BGP from everyone else
        tcp dport 179 drop
    }
}
EOF

Добавляйте IP пиров в наборы по мере добавления аплинков. Именованные наборы позволяют обновлять списки пиров без переписывания правил.

Интеграция с существующей конфигурацией nftables

Если у вас уже есть /etc/nftables.conf, включите правила BGP:

echo 'include "/etc/nftables.d/bgp.conf"' | sudo tee -a /etc/nftables.conf

Если nftables еще не настроен, создайте директорию и загрузите конфигурацию:

sudo mkdir -p /etc/nftables.d
sudo systemctl enable --now nftables

enable --now запускает nftables немедленно и гарантирует загрузку при каждой перезагрузке.

Примените правила:

sudo nft -f /etc/nftables.d/bgp.conf

Проверка правил

sudo nft list table inet bgp_filter

Ожидаемый вывод:

table inet bgp_filter {
	set bgp_peers_v4 {
		type ipv4_addr
		elements = { 198.51.100.1 }
	}

	set bgp_peers_v6 {
		type ipv6_addr
		elements = { 2001:db8::1 }
	}

	chain input {
		type filter hook input priority filter; policy accept;
		tcp dport 179 ip saddr @bgp_peers_v4 accept
		tcp dport 179 ip6 saddr @bgp_peers_v6 accept
		tcp dport 179 drop
	}
}

nft list нормализует priority 0 в priority filter и убирает комментарии. Это ожидаемое поведение.

Проверьте работоспособность правила. С VPS:

sudo nft list ruleset | grep -c "179"

Должно вернуть число, совпадающее с количеством созданных правил для порта 179.

Также убедитесь, что BGP-трафик не блокируется между вами и пиром. Приведенные правила влияют только на входящие соединения. BIRD инициирует исходящие соединения к пиру, которые обрабатываются через established/related conntrack. Если у вас ограничительная политика для исходящего трафика, добавьте:

sudo nft add rule inet bgp_filter input ct state established,related accept

Это должно быть в вашем базовом наборе правил файрвола. Если нет — добавьте перед правилами BGP.

Как применить конфигурацию BIRD2?

Перед загрузкой нового конфига проверьте его:

sudo birdc configure check

Ожидаемый вывод:

BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Configuration OK

При синтаксических ошибках BIRD сообщит номер строки и проблему. Исправьте и проверьте снова.

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

sudo birdc configure
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Reconfigured

Вместо Reconfigured вы можете увидеть Reconfiguration in progress, если BIRD еще обрабатывает изменения протоколов (например, устанавливает новую BGP-сессию). Оба варианта нормальны.

BIRD применяет новый конфиг без перезапуска. Существующие сессии выполняют soft reconfiguration, когда это возможно. Если вы изменили IP соседа или локальный AS, BIRD автоматически перезапустит затронутый протокол.

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

sudo birdc reload upstream1

Это повторно применяет фильтры import/export к существующим маршрутам без разрыва TCP-сессии.

Как проверить BGP-сессию и анонсы маршрутов?

После применения конфига используйте birdc для проверки состояния сессии и анонса маршрутов. Эти команды — ваши основные инструменты отладки.

Команда Что показывает Когда использовать
show protocols Сводка состояния протоколов (Established, Active и т.д.) Первая проверка после изменения конфига
show protocols all upstream1 Полные детали сессии, счетчики, таймеры Отладка конкретной сессии
show route Все маршруты в таблице BIRD Проверка полученных и статических маршрутов
show route export upstream1 Маршруты, отправляемые аплинку Подтверждение анонса ваших префиксов
show route for 203.0.113.0/24 Лучший маршрут для конкретного префикса Отслеживание выбора пути
show route protocol static_v4 Маршруты от конкретного протокола Проверка загрузки статических маршрутов

Проверка состояния сессии

sudo birdc show protocols

Ожидаемый вывод при нормальной работе:

BIRD 2.18 ready.
Name       Proto      Table      State  Since         Info
device1    Device     ---        up     12:00:00.000
direct1    Direct     ---        up     12:00:00.000
kernel1    Kernel     master4    up     12:00:00.000
kernel2    Kernel     master6    up     12:00:00.000
static_v4  Static     master4    up     12:00:00.000
static_v6  Static     master6    up     12:00:00.000
upstream1  BGP        ---        up     12:00:05.000  Established

Состояние Established означает, что BGP-сессия поднята и маршруты могут обмениваться. Любое другое состояние означает проблему.

Проверка экспортируемых маршрутов

sudo birdc show route export upstream1
BIRD 2.18 ready.
Table master4:
203.0.113.0/24       unicast [static_v4 12:00:00.000] * (200)
	dev dummy0
Table master6:
2001:db8:1000::/48   unicast [static_v6 12:00:00.000] * (200)
	dev dummy0

Оба ваших IPv4 и IPv6 префикса должны отображаться. Если префикс отсутствует, фильтр экспорта его отклоняет.

Проверка полных данных сессии

sudo birdc show protocols all upstream1

Ищите строку Routes::

  Routes:         2 imported, 0 filtered, 2 exported, 0 preferred

Значение exported должно совпадать с количеством префиксов, которые вы анонсируете.

Проверка извне

Используйте публичный looking glass для подтверждения видимости вашего префикса в интернете. Помогут NLNOG Looking Glass или PeeringDB. Найдите свой префикс и проверьте:

  • Origin AS совпадает с вашим
  • AS path проходит через ваш аплинк
  • Нет статуса RPKI invalid

Также проверьте таблицу маршрутизации ядра:

ip route show | grep 203.0.113
ip -6 route show | grep 2001:db8:1000

Вы должны увидеть маршруты, указывающие на интерфейс dummy0.

Как устранять типичные проблемы BIRD2 BGP?

Большинство проблем BGP попадают в несколько категорий. Проверяйте по порядку.

Справочник состояний BGP-сессии

Состояние Значение Что проверять
Idle BIRD не пытается подключиться Ошибка конфигурации, протокол отключен
Connect TCP-соединение в процессе Файрвол блокирует порт 179, неверный IP соседа
Active TCP-соединение не удалось, повторная попытка Пир недоступен, файрвол, неверный source address
OpenSent TCP подключен, ожидание ответа OPEN Несовпадение MD5, неверный ASN на удаленной стороне
OpenConfirm OPEN получен, ожидание KEEPALIVE Редко наблюдается, обычно быстро переходит дальше
Established Сессия поднята, обмен маршрутами Работает

Сессия зависла в Connect или Active

TCP не может достичь порта 179 на пире. Проверьте:

# Can you reach the peer at all?
ping -c 3 198.51.100.1

# Is port 179 open on the peer?
nc -zv 198.51.100.1 179

# Are your nftables rules blocking outbound?
sudo nft list ruleset | grep 179

# Check BIRD logs
journalctl -u bird --since "5 minutes ago" --no-pager

Типичные причины: неверный source address в блоке BGP, пир еще не настроил свою сторону, или файрвол блокирует исходящие соединения.

Сессия зависла в OpenSent

TCP-соединение работает, но BGP OPEN отклоняется. Почти всегда это несовпадение MD5-пароля. Проверьте:

  1. password в bird.conf точно совпадает с тем, что дал провайдер (регистрозависимо, следите за пробелами в конце)
  2. Обе стороны согласны по ASN

Проверьте логи:

journalctl -u bird | grep -i "error\|md5\|password"

Префикс не отображается в show route export

Ваш префикс есть в таблице BIRD, но фильтр экспорта его не принимает. Отладьте фильтр:

sudo birdc show route 203.0.113.0/24 all

Проверьте источник маршрута. Если указано [device1] или [direct1] вместо [static_v4], статический маршрут настроен неправильно. Фильтр экспорта совпадает по маршруту, поэтому он должен приходить от правильного протокола.

sudo birdc show route noexport upstream1

Это показывает маршруты, которые фильтр явно отклонил. Если ваш префикс тут — в логике фильтра ошибка.

Префикс анонсирован, но не виден на looking glass

Экспорт работает, но маршрут не распространяется. Возможные причины:

  • Нет ROA-записи: ваш аплинк или его пиры фильтруют RPKI-invalid маршруты. Сначала опубликуйте ROA-записи
  • IRR-фильтрация: аплинк фильтрует по IRR-объектам (RIPE DB, RADB). Создайте или обновите ваши объекты route/route6
  • Лимит max-prefix: аплинк может иметь настроенный лимит префиксов. Свяжитесь с ним, если достигли лимита
  • Задержка распространения: конвергенция BGP занимает минуты. Подождите 5-10 минут и проверьте снова

Чтение логов

BIRD пишет в системный журнал. Для отладки в реальном времени:

journalctl -u bird -f

За последний час:

journalctl -u bird --since "1 hour ago" --no-pager

Ищите строки, содержащие Error, BGP, session или Received. Они точно покажут, что делает BIRD и что пошло не так.

BIRD2 vs BIRD 1.x: заметки по миграции

Если вы мигрируете с BIRD 1.x, основные отличия:

  • Один демон: BIRD2 заменяет оба bird и bird6 одним процессом
  • Синтаксис каналов: IPv4 и IPv6 настраиваются как каналы внутри блоков протоколов, а не как отдельные протоколы
  • Синтаксис фильтров: в основном совместим, но некоторые функции сменили имена. Проверьте документацию BIRD2 для полного справочника фильтров
  • Конфигурационный файл: расположение по умолчанию сменилось с /etc/bird/bird.conf и /etc/bird/bird6.conf на единый /etc/bird/bird.conf
  • Сокет birdc: один сокет /run/bird/bird.ctl вместо раздельных для IPv4/IPv6

Дальнейшие шаги

После установки BGP-сессии и анонса префиксов стоит настроить:

  • RPKI-валидация: настройте RTR для проверки входящих маршрутов по ROA-данным
  • Фильтры импорта: фильтруйте входящие маршруты для предотвращения утечек и перехватов маршрутов
  • Несколько аплинков: добавьте второй блок protocol bgp для резервирования. Используйте preference для установки primary/backup
  • BFD: включите Bidirectional Forwarding Detection для субсекундного переключения между аплинками
  • Мониторинг: экспортируйте метрики BIRD в Prometheus через bird_exporter

Альтернативный демон маршрутизации описан тут: . Полный путь BYOIP начинается с руководства по BYOIP.


Copyright 2026 Virtua.Cloud. Vse prava zashchishcheny.

Готовы попробовать?

Разверните свой сервер за секунды. Linux, Windows или FreeBSD.

Смотреть тарифы VPS