К содержимому
B BGPCast

База знаний

Как подключить роутер к Route-серверу BGPCast. Два способа: прямое подключение по BGP (нужен публичный IP на роутере) или коннектор-агент (если роутер за NAT/CGNAT). Скопируйте команды и подставьте свои значения из личного кабинета.

Прямое подключение (внешний IP роутера)

Для роутеров с публичным IP. Поднимите BGP-сессию с Route-сервером и подставьте свои peer IP и ASN из личного кабинета.

1. Правила фильтрации (next-hop на ISP + discard)
/routing filter rule
add chain=bgp_in comment="Nexthop to ISP" disabled=no rule="set gw <next-hop>; accept;"
add chain=discard disabled=no rule="reject;"
2. BGP-шаблон
/routing bgp template
add as=<ваш-asn> disabled=no name=bgpcast output.network=bgp-networks .no-client-to-client-reflection=yes routing-table=main
3. BGP-соединение
/routing bgp connection
add as=<ваш-asn> cisco-vpls-nlri-len-fmt=auto-bits connect=yes disabled=no hold-time=4m input.filter=bgp_in instance=bgp-instance-bgpcast keepalive-time=1m listen=yes \
    local.address=<ваш-ip> .role=ebgp multihop=yes name=bgpcast output.filter-chain=discard .network=bgp-networks .no-client-to-client-reflection=yes \
    remote.address=<bgpcast-ip> .as=<bgpcast-asn> routing-table=main templates=bgpcast vrf=main
4. Проверить, что сессия established
/routing/bgp/session/print
Войти, чтобы получить свои параметры

Коннектор-агент (за NAT)

Если роутер за NAT/CGNAT. Агент — небольшой демон: тянет ваш announce-set с Route-сервера по HTTPS/WSS и переобъявляет его как BGP локально на роутере. Входящая BGP-сессия наружу не нужна. Агент публикуется на github.com/samfili/bgpcast-agent — контейнерный образ с тегом latest на GHCR (используется ниже), а .ipk-пакеты — в разделе Releases.

1. Установить пакет и запустить сервис
opkg install ./bgpcast-agent_<version>-1_<arch>_entware.ipk
/opt/etc/init.d/S99bgpcast-agent start
2. Открыть страницу настроек (только из локальной сети)
http://<ip-роутера>:8080/
3. Заполнить поля и нажать «Save & apply»
API URL:      https://bgpcast.cc
Agent token:  <ваш-токен>
4. Полный конфиг BIRD2 (bird.conf)
# bird.conf
log syslog all;
router id <router-id>;

protocol device {}

protocol kernel {
  ipv4 { export all; };
}

protocol bgp bgpcast {
  local port 1791 as <ваш-asn>;        # BIRD слушает 1791, TCP/179 остаётся агенту
  neighbor 127.0.0.1 as <asn-агента>;  # агент слушает на 179
  ipv4 {
    import filter { gw = <next-hop>; accept; };
    export none;
  };
}
<router-id> — любой 32-битный ID, напр. LAN-IP роутера; <ваш-asn> = «Ваш ASN», <asn-агента> = «ASN агента» — из карточки пира в личном кабинете; <next-hop> — шлюз вашего провайдера. local port 1791 уводит BIRD с TCP/179, чтобы он не конфликтовал с агентом, который слушает на 179.

Архитектуры: mipsel, mips, aarch64. На странице настроек два поля — «API URL» (адрес Route-сервера) и «Agent token» (токен из личного кабинета); страница доступна только из локальной сети.

Войти, чтобы получить токен и параметры

Частые проблемы

Сессия не поднимается (Active/Connect)
Проверьте доступность <bgpcast-ip> и что исходящий TCP/179 не блокируется файрволом.
Нет established, но порт открыт
Сверьте ASN обеих сторон — они должны совпадать с параметрами из личного кабинета.
Established, но 0 префиксов
Убедитесь, что вы подписаны хотя бы на одну категорию и пир включён в личном кабинете.
Сессия флапает
Для облачного пира нужен multihop (TTL>1). Проверьте, что multihop/ebgp-multihop включён.
Агент: сессия не поднимается
Проверьте токен на LAN-странице :8080 и что исходящие 443 (HTTPS/WSS) к bgpcast.cc не блокируются файрволом.
Агент: BGP не стартует / порт 179 занят
На Entware/OpenWrt агент слушает TCP/179, и BIRD2 по умолчанию тоже на 179. Укажите `local port 1791 as <ваш-asn>;` в bird.conf — BIRD станет слушать 1791 и оставит 179 агенту.
Агент: страница :8080 недоступна
Страница настроек доступна только из локальной сети (LAN), не из интернета. Откройте её с устройства в той же сети.
MikroTik: контейнер не стартует
Проверьте наличие диска (disk1), интерфейс veth-bgpcast и переменную BGPCAST_AGENT_BGP_LISTEN (высокий порт, напр. :1790).