База знаний
Как подключить роутер к Route-серверу BGPCast. Два способа: прямое подключение по BGP (нужен публичный IP на роутере) или коннектор-агент (если роутер за NAT/CGNAT). Скопируйте команды и подставьте свои значения из личного кабинета.
Обновлено
Прямое подключение (внешний IP роутера)
Для роутеров с публичным IP. Поднимите BGP-сессию с Route-сервером и подставьте свои peer IP и ASN из личного кабинета.
MikroTik (RouterOS 7.23+)
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
FRR
1. Полный конфиг (frr.conf)
! frr.conf frr defaults traditional hostname bgpcast-router ! ip nht resolve-via-default ! route-map bgpcast-in permit 10 set ip next-hop <next-hop> ! route-map bgpcast-out deny 10 ! router bgp <ваш-asn> neighbor <bgpcast-ip> remote-as <bgpcast-asn> neighbor <bgpcast-ip> ebgp-multihop 255 address-family ipv4 unicast neighbor <bgpcast-ip> activate neighbor <bgpcast-ip> route-map bgpcast-in in neighbor <bgpcast-ip> route-map bgpcast-out out neighbor <bgpcast-ip> soft-reconfiguration inbound exit-address-family !
2. Проверить, что сессия established
vtysh -c 'show bgp summary'
BIRD 2
1. Полный конфиг (bird.conf)
# bird.conf log syslog all; router id <router-id>; protocol device {} protocol kernel { ipv4 { export all; }; # установить полученные маршруты в таблицу ядра (FIB) } protocol bgp bgpcast { local as <ваш-asn>; neighbor <bgpcast-ip> as <bgpcast-asn>; multihop 255; ipv4 { import filter { gw = <next-hop>; accept; }; export none; }; }
2. Проверить, что сессия established
birdc show protocols all bgpcast
Коннектор-агент (за NAT)
Если роутер за NAT/CGNAT. Агент — небольшой демон: тянет ваш announce-set с Route-сервера по HTTPS/WSS и переобъявляет его как BGP локально на роутере. Входящая BGP-сессия наружу не нужна. Агент публикуется на github.com/samfili/bgpcast-agent — контейнерный образ с тегом latest на GHCR (используется ниже), а .ipk-пакеты — в разделе Releases.
Keenetic (Entware)
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; }; }
Архитектуры: mipsel, mips, aarch64. На странице настроек два поля — «API URL» (адрес Route-сервера) и «Agent token» (токен из личного кабинета); страница доступна только из локальной сети.
Войти, чтобы получить токен и параметрыOpenWrt
1. Установить пакет и включить сервис
opkg install --force-architecture ./bgpcast-agent_<version>-1_<arch>_openwrt.ipk /etc/init.d/bgpcast-agent enable /etc/init.d/bgpcast-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; }; }
Архитектуры: aarch64, arm, mipsel, mips. На странице настроек два поля — «API URL» (адрес Route-сервера) и «Agent token» (токен из личного кабинета); страница доступна только из локальной сети.
Войти, чтобы получить токен и параметрыMikroTik (контейнер)
1. Задать переменные окружения
/container/envs/add list=ENV_BGPCAST key=BGPCAST_API_URL value="https://bgpcast.cc"
/container/envs/add list=ENV_BGPCAST key=BGPCAST_AGENT_TOKEN value="<ваш-токен>"
/container/envs/add list=ENV_BGPCAST key=BGPCAST_AGENT_BGP_LISTEN value=":1790" 2. Подключить реестр и создать контейнер
/container/config/set registry-url=https://ghcr.io tmpdir=disk1/tmp
/container/add remote-image=samfili/bgpcast-agent:latest \
interface=veth-bgpcast root-dir=disk1/bgpcast envlist=ENV_BGPCAST name=bgpcast
/container/start bgpcast 3.1. Правила фильтрации (next-hop + discard)
/routing filter rule
add chain=bgp_in comment="Nexthop" disabled=no rule="set gw <next-hop>; accept;"
add chain=discard disabled=no rule="reject;" 3.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.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=no \ local.address=<адрес-моста> .role=ebgp multihop=yes name=bgpcast-agent output.filter-chain=discard .network=bgp-networks .no-client-to-client-reflection=yes \ remote.address=<адрес-контейнера> .port=1790 .as=<asn-агента> routing-table=main templates=bgpcast vrf=main
RouterOS v7: пакет container, диск и veth/bridge.
Войти, чтобы получить токен и параметры