10个版本
0.3.3 | 2023年1月17日 |
---|---|
0.3.2 | 2023年1月17日 |
0.3.0 | 2022年10月8日 |
0.2.1 | 2021年8月1日 |
0.1.1 | 2021年5月23日 |
#16 在 #历史
每月 34次下载
325KB
7K SLoC
bgpexplorer
描述
这是一个RIB(路由信息数据库)BGP路由探索器,具有查看路由变更历史记录的功能。它可以作为一个BGP发言人(仅限监听)或BMP监控站。bgpexplorer支持多种NLRI类型和路径属性,旨在替代looking glass和"show route"。它是旧BGPHist(https://sourceforge.net/projects/bgphist/)的替代品。bgpexplorer因为将RIB及其历史存储在RAM中而速度更快。RIB可以通过http协议以JSON格式访问。为了方便,bgpexplorer提供了捆绑文件以提供基本网络服务,该服务可以用作具有AAA的前端网络服务器的后端(例如nginx或apache)。所有json端点位于/api/ URI下。
快速入门
首先,您至少需要一个BGP路由器来监控(:-)。以及一些Linux/FreeBSD的PC(尽管Windows或Mac也可以,我希望)。
其次,您应该配置您的路由器以从您的PC接受BGP连接。例如,您的路由器具有IP 10.0.0.1,AS 65535。运行bgpexplorer的PC具有IP 10.1.1.1。在Cisco方言中,它将类似于
router bgp 65535
! create a neighbor with your own AS, so it will be IBGP
neighbor 10.1.1.1 remote-as 65535
! specify source IP
neighbor 10.1.1.1 update-source Loopback0
! do not attempt to connect from router to PC, only from PC to router
neighbor 10.1.1.1 transport connection-mode passive
address-family ipv4
! it has ipv4 unicast address family
neighbor 10.1.1.1 activate
! send all routing information to PC
neighbor 10.1.1.1 route-reflector-client
! activate ipv4 labeled-unicast address family
neighbor 10.1.1.1 send-label
address-family vpnv4
! activate vpnv4 unicast address family
neighbor 10.1.1.1 activate
neighbor 10.1.1.1 send-community extended
现在在Linux或FreeBSD的PC上
$ git clone https://github.com/wladwm/bgpexplorer
... git messages
$ cd bgpexplorer
$ cargo build
... cargo messages
$ cat > bgpexplorer.ini <<EOF
[main]
httplisten=0.0.0.0:8080
httproot=contrib
whoisjsonconfig=whois.json
snapshot=snapshot.bgp
[s0]
mode=bgpactive
peer=10.0.0.1
peeras=65535
EOF
$ cargo run
之后,您应该看到以下内容
Listening on http://0.0.0.0:8080
BGP trying 10.0.0.1:179
Connected to 10.0.0.1:179
之后,您可以使用您喜欢的浏览器并指向http://10.1.1.1:8080/ - 您应该看到bgpexplorer的基本界面。
例如,查看ipv4单播:
或vpnv4单播:
配置
bgpexplorer在当前目录中的bgpexplorer.ini文件中查找配置。此文件应包含[main]部分和具有任何其他名称的peer部分
- httplisten - 内部http服务器的绑定地址和端口,默认为0.0.0.0:8080。
- httproot - http服务器文件的根路径,默认为"./contrib/"。
- whoisjsonconfig - whois服务的json配置,默认为whois.json。
- whoisdb - Whois缓存数据库的存储路径,默认为whoiscache.db。
- historydepth - 每个路由应保留多少历史记录。默认为10。
- historymode - differ/every。differ - 只有当某些属性发生变化时才记录历史事件。every - 无论何种情况都记录历史事件。
- purge_after_withdraws - 在指定数量的撤回后进行垃圾回收。0 - 关闭,此设置默认开启。
- purge_every - 每 N 秒进行一次垃圾回收。默认设置为5分钟。
服务部分参数
- mode - 协议模式,可以是bgpactive、bgppassive、bmpactive或bmppassive。bgp或bmp表示协议,active或passive决定哪一侧将启动会话。
- bgppeer - bgp active模式的bgp对等地址。可以是IP地址或IP:端口号。bgpexplorer将尝试连接到指定的BGP发言人。
- bmppeer - bgp active模式的bmp对等地址。可以是IP:端口号或仅IP地址 - 然后使用默认端口号632。bgpexplorer将尝试连接到指定的支持BMP的路由器。
- protolisten - bgp/bmp passived模式的TCP端点。应为IP:端口号形式。请注意,如果您不是root用户且没有特殊技巧,则无法在*nix OS上运行监听端口小于1024的进程。
- routerid - BGP路由器ID,如果没有指定,则使用默认值1.1.1.1。
- peeras - bgpactive的BGP AS号码。
- filter_rd - 与BMP会话一起使用时,此参数将过滤匹配此RD的BGP会话。默认为0:0(全局vrf)。
顺便说一句,内置的whois代理允许您查看有关AS和主机的某些信息: 。
API端点
- /api/statistics
- 参数:无
- 返回:RIB统计对象示例:{ // 存储使用情况 "stores":{"clusters":0,"pathes":20,"comms":7,"attrs":25,"lcomms":1,"extcomms":1}, // 每个RIB的路由计数 "ribs":{"ipv4m":0,"fs4u":0,"l2vpls":0,"vpnv4u":0,"ipv4u":70,"vpnv4m":0,"mvpn":0,"ipv6u":0,"vpnv6m":0,"ipv6lu":0,"vpnv6u":0,"ipv4lu":0,"evpn":0}, // 更新/撤回的计数器 "counters":{"updates":70,"withdraws":0} }
- /api/json/?...
- RIB - ipv4u, ipv4m ... URL参数
- limit - 响应中最大项目数
- skip - 分页时跳过的项目数
- filter - 文本过滤器
- /api/whois/?query= Whois公共服务查询
- ObjectType - 要从公共whois查询的对象类型
- as - 自治系统编号
- route - 路由对象
- route6 - route6对象
- /api/dns/ 反向DNS查找
Crates.io
https://crates.io/crates/bgpexplorer
文档
许可证
依赖项
~16–29MB
~426K SLoC