BIRD3.0手册(三)远程控制

4.远程控制

4.1 概述

你可以使用命令行客户端birdc与正运行的BIRD进行通信。通信通过相应的UNIX域socket完成。命令可以执行启用禁用协议、显示各种信息、显示过滤器过滤出的路由表、重新配置BIRD等简单操作。随时按?获得在线帮助。选项-r可以用来启用BIRD客户端受限模式,仅允许只读命令show ...。选项-v使客户端在消息的同时转储数字返回码。你不一定使用birdc与BIRD通信,也可以使用自己的应用,BIRD和birdc之间通信格式是稳定的(参阅程序员文档)。

还有个名为birdcl的轻量级BIRD客户端变体,不支持命令行编辑和历史记录,并且有最少的依赖项。这对在无法使用常规BIRD客户端所需Readline库的资源受限环境中运行BIRD很有用。

4.2 配置

BIRD默认打开bird.ctlUNIX域socket,CLI工具连接到它。可以使用-s选项来改变BIRD或CLI工具使用的socket。

也可以在配置文件中使用cli "名称";配置额外的远程控制socket,从而可以打开任意数量的socket。没有是否多次配置同一socket的检查,这种情况BIRD可能表现异常。关闭时额外的socket会被立即移除,只保留主socket到最后。

远程控制socket也可以通过cli "名称" { restrict; };设置为受限,而不用在连接后发送restrict命令。用户仍可能通过请求极复杂的过滤器使守护进程过载,因此不应暴露socket到公网。

4.3 用法

下面是支持功能的简要列表:

注意:许多命令有协议实例名称的参数。如果只有一个实例,可以省略此参数。

show status

显示路由器状态,BIRD版本、启动时间及上次重配置时间。

show interfaces [summary]

显示接口列表。每个接口打印类型、状态、MTU和分配地址。

show protocols [all]

显示协议实例列表,它们连接的表以及协议状态。指定all显示冗长信息。

reload bgp [in|out] [名称]

在给定BGP协议上手动请求(in)或发送(out)或同时请求发送路由更新。

show ospf [名称] ["接口"]

显示OSPF接口详情。

show ospf neighbors [名称] ["接口"]

显示OSPF邻居列表及其邻接状态。

show ospf state [all] [名称]

显示基于链路状态数据库内容的OSPF区域详情信息。它显示网络拓扑、末梢网络、聚合网络以及来自其他区域的路由和外部路由。该命令显示有关可达网络节点的信息,使用all选项可显示链路状态数据库中所有网络节点的信息。

show ospf topology [all] [名称]

显示基于链路状态数据库内容的OSPF区域拓扑。是前一命令精简版本。

show ospf lsadb [global | area id | link] [type 数值] [lsid id] [self | router id] [名称]

显示OSPF LSA数据库内容,可以使用选项过滤条目。

show rip interfaces [名称] ["接口"]

显示关于RIP接口的详细信息。

show rip neighbors [名称] ["接口"]

显示RIP邻居及相关状态列表。

show static [名称]

显示关于静态路由的详细信息。

show bfd sessions [名称] [address (IP|前缀)] [(interface|dev) "名称"] [ipv4|ipv6] [direct|multihop] [all]

显示BFD会话信息。使用选项过滤条目或使用all显示冗长输出。

show symbols [table|filter|function|protocol|template|roa|符号]

显示在配置中定义的符号列表(协议、路由表等的名字)。

show route [[(for|in)] 前缀|for IP] [table (t|all)] [(import|export) table p.c] [filter f|where c] [(export|preexport|noexport) p] [protocol p] [(stats|count)] [选项]

显示指定路由表的内容,包括路由以及它们的度量和(当给出all开关时)所有属性。

想打印特定网络的路由可以指定一个前缀。如果使用for 前缀 或 IP,将获得用于转发数据包到给定目标的条目。如果使用in 前缀将获得给定前缀所覆盖的所有前缀。默认每个网络的全部路由都会打印出来,其中选定的路由在顶部,除非给定primary则只显示选定的路由。

show route命令可以处理一个或多个路由表。选定表的集合从三个级别决定:首先,可以通过多次使用table开关显示选择表,table all则选择所有表。其次,可以通过其他若干开关(如exportprotocol)的通道或协议参数来隐式选择。最后,使用默认表集合:master4master6以及任何其他网络类型的第一个表。

当一些通道使用(import|export) table选项时,存在内部表。它们可以通过(import|export) table开关指定协议p和通道名称c来显示选择。

你还可以要求仅打印由给定的过滤器(filter 名称filter { 过滤器 })处理并接受的路由,或者符合给定条件(where c)的路由。

exportpreexportnoexport开关用来打印导出到指定协议或通道的路由。使用preexport通道的导出过滤器被跳过,使用noexport将打印被导出过滤器拒绝的路由。需注意,由于其他原因未被导出(如辅助路由或从该该协议导出的路由),即使用noexport也不会被打印。这些开关还意味着选择关联的路由表而非默认表。

你也可以只选择由指定协议添加的路由,protocol p,该开关也意味着选择关联的路由表而非默认表。

如果BIRD配置为保留过滤后的路由(参见import keep filtered选项),你也可以使用filtered开关显示它们。

stats开关请求显示路由统计信息(网络数量、过滤前后路由数量),如果改用count则只打印统计信息。

mrt dump table 名称|"模式" to "文件名" [filter f|where c]

将路由表以MRT表转储格式转储到指定文件。详见MRT协议。

configure [soft] ["配置文件"] [timeout [数值]]

从指定文件重载配置。BIRD会平滑切换到新配置,协议如果可以的话进行重配置,否则重启。过滤器的变更通常导致受影响的协议重启。

之前的配置被存储,用户可以使用configure undo切换回去。旧的一份配置存储被释放(即使重配置因为诸如符号错误等原因失败)。

使用soft选项则过滤器中的变更不会导致BIRD重启受影响的协议,根据旧的过滤器已经接受的路由仍将传播,但新路由将根据新过滤器进行处理。

如果使用timeout选项,配置计时器被激活,新的配置要么被configure confirm命令确认,要么将在配置计时器过期时恢复为旧的配置。这用于重配置破坏路由从而导致管理员无法访问到路由器的情况。配置的超时到期撤销等同于configure undo命令。时间长短可以指定,默认是300s。

configure confirm

结束配置撤销计时器从而确认当前配置。

configure undo

撤销最后的配置变更并平滑切换回(存储的)之前的配置。如果最后的配置变更是soft的那么撤销也是soft的。撤销只有一级,但在一些特定的情况下,当若干重配置请求是连续立即给出的,中间的一些被跳过了,那么撤销也会跳过他们。

configure check ["配置文件"]

读取处理给定的配置文件,但不使用它。用以对一个配置文件的语法和部分语义进行检查。

enable|disable|restart 名称|"模式"|all

启用、禁用、重启一个给定的协议实例,或是符合模式的实例,或者所有实例。

reload filters [in|out] (名称|"模式"|all) [partial prefix]

重载给定的协议实例,即重新从协议实例导入路由、重新导出首选路由到实例。如果使用inout选项,命令被限制在单方向。

相应过滤器变更了但协议实例为重启或重载,导致仍在传播旧的路由集,比如用configure soft命令变更过滤器时,可使用该命令。

使用partial prefix选项则只重载相应的路由。BGP协议仅在启用了导入表时才执行部分重载,否则BGP的部分重载将被拒绝。

重新导出总会成功,但是重新导入则取决于协议并可能失败(如BGP邻居不支持路由刷新扩展),此时重新导出也将被跳过。需注意对于pipe协议两个方向总是同时重载(此时忽略inout选项)

timeformat "格式1" [限制 "格式2"]

覆盖在此CLI会话中BIRD使用的日期时间格式。

命令中各项含义及可用简写与timeformat配置中一致。

down

关闭BIRD

graceful restart

关闭BIRD来优雅重启。详见优雅重启一节。

debug 协议|模式|all all|off|{ states|routes|filters|events|packets [, ...] }

控制协议调试。

dump resources|sockets|interfaces|neighbors|attributes|routes|protocols "文件"

创建指定文件(该文件必须不存在)并将内部数据结构的内容转储到其中。通过发送SIGUSR1信号,你可以将所有这些内容连接至当前目录的bird.dump文件中。该文件仅对运行守护进程对的用户可读。转储文件的格式是内部的并可能在将来不经通知变更。

echo all|off|{ 日志类别列表 } [ 缓冲大小 ]

控制日志消息到命令行的回显。关于日志类别参见log选项。

eval 表达式

评估给定的表达式。