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.ctl
UNIX域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
则选择所有表。其次,可以通过其他若干开关(如export
、protocol
)的通道或协议参数来隐式选择。最后,使用默认表集合:master4
、master6
以及任何其他网络类型的第一个表。当一些通道使用
(import|export) table
选项时,存在内部表。它们可以通过(import|export) table
开关指定协议p
和通道名称c
来显示选择。你还可以要求仅打印由给定的过滤器(
filter 名称
或filter { 过滤器 }
)处理并接受的路由,或者符合给定条件(where c
)的路由。
export
、preexport
和noexport
开关用来打印导出到指定协议或通道的路由。使用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]
重载给定的协议实例,即重新从协议实例导入路由、重新导出首选路由到实例。如果使用
in
或out
选项,命令被限制在单方向。相应过滤器变更了但协议实例为重启或重载,导致仍在传播旧的路由集,比如用
configure soft
命令变更过滤器时,可使用该命令。使用
partial prefix
选项则只重载相应的路由。BGP协议仅在启用了导入表时才执行部分重载,否则BGP的部分重载将被拒绝。重新导出总会成功,但是重新导入则取决于协议并可能失败(如BGP邻居不支持路由刷新扩展),此时重新导出也将被跳过。需注意对于pipe协议两个方向总是同时重载(此时忽略
in
和out
选项)
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 表达式
评估给定的表达式。