Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 技巧小贴士
本页内容较多,您可以使用 Ctrl/Command
+ F
快速查找本页面的关键词。
如果想快速搜索全站内容,也可以在页面中单击 /
键 快速全文检索关键词。
对于小屏用户,您可以点击右上角的 放大镜
(🔍) 图标以输入关键词进行全文检索。
请注意查看下方的本节目录,点击目录中的小节可以快速跳转到对应内容。
💡 摘要 (Powered by OpenAI)
本文是 BIRD 用户指南的第四章的正文部分,主要介绍了 BIRD 的命令行接口 (Command Line Interface),包括 birdc
的介绍、使用方法、命令列表等内容。
BIRD 有一个强大的 CLI (命令行接口) 命令: birdc
。
birdc
可与 正在运行中 的 BIRD 进程通信,可以用来查看和控制 BIRD 进程
的状态。
birdc
与 BIRD 进程
之间的通信是通过 bird.ctl
UNIX Socket 完成的,以确保安全性。你也可以通过向 BIRD 服务进程与 birdc 控制接口指定 -s
选项更改所使用的 UNIX Socket。
💡 小贴士
您也可以直接通过 bird.ctl
UNIX Socket 与 BIRD 进程
通信,请参阅 开发者文档。
birdc 可以完成一系列简单的操作,包括但不限于:
BIRD 还有一个更轻量的客户端 birdcl,它有更少的依赖组件(不使用常规 birdc 使用的 Readline 库),但它不支持命令行编辑与历史记录。这对于在资源受限的环境中运行 BIRD 可能有帮助。
受益于 BIRD 和 birdc 之间稳定的通信格式(参考开发者指南),你不一定需要使用 birdc,而也可以使用自己所写的应用程序。
你可以直接在命令行中输入 birdc
以进入交互界面,可以任意键入 ?
以获得当前可用的操作的提示。
💡 小贴士
你可以使用 birdc -r
以进入只读模式,在只读模式下只能执行 show
等只读命令。
你也可以使用 birdc -v
进入 verbose 模式,此时各个函数的返回数值也会被输出。
许多指令都使用 协议实例 的名字作为参数。如果只存在一个协议实例,则这个参数可以被省略。
birdc 也允许一定的指令简写。如果某一指令的前 n 个字母是独一无二的,即没有相同前缀的指令,则可以仅输入前 n 个字母。例如,show
可以被简写为 s
,而 show bfd
不可被简写为 s b
,因为这与 show babel
冲突。
支持的功能略表如下。
show status
展示路由器的状态,包括 BIRD 版本号,启动时间(uptime)与最后一次刷新配置后经过的时间等信息。实例如下:
BIRD v2.14 ready.
BIRD v2.14
Router ID is 192.168.1.1
Hostname is localhost
Current server time is 1970-01-01 00:00:00.000
Last reboot on 1970-01-01 00:00:00.000
Last reconfiguration on 1970-01-01 00:00:00.000
Daemon is up and running
show interfaces [summary]
展示网络接口列表。同时对于每一个网络接口,输出它的类型,状态,MTU 与 IP 地址。实例如下:
lo up (index=1)
MultiAccess AdminUp LinkUp Loopback Ignored MTU=65536
127.0.0.1/8 (Preferred, scope host)
::1/128 (Preferred, scope host)
show protocols [all] [name]
展示所有的协议实例以及它们对应的路由表与协议状态。如果 all 选项被指定,则会输入详细信息。
如果只需要一个协议实例的信息,你也可以指定协议实例的名称。
show ospf interface [name] ["interface"]
展示关于 OSPF 协议实例的详细信息。此处 name 指 OSPF 协议实例的名称,而 interface 可用于指定某个接口的信息。
show ospf neighbors [name] ["interface"]
展示关于 OSPF 协议邻居的信息与相邻的状态。此处的 name 与 interface 同上。
show ospf state [all] [name]
基于链接状态数据库(link-state database),展示关于 OSPF 区域的详细信息。
这个指令输出网络拓扑,stub 网络,广播网络,以及位于其他区域和其他网络的路由器。
这个指令也输出关于可抵达的网络节点的信息,如果需要不可达节点的信息则可以使用 all 选项突破此限制。
show ospf topology [all] [name]
基于链接状态数据库(link-state database),展示关于 OSPF 区域的详细信息。可理解为 show ospf state
指令的简化版。
show ospf lsadb [global | area id | link] [type num] [lsid id] [self | router id] [name]
展示 OSPF LSA 数据库的内容。后续选项被用于过滤输出内容。
show rip interfaces [name] ["interface"]
展示关于 RIP 协议实例的详细信息。此处 name 指 RIP 协议实例的名称,而 interface 可用于指定某个接口的信息。
show rip neighbors [name] ["interface"]
展示关于 RIP 协议邻居的信息与相邻的状态。此处的 name 与 interface 同上。
show static [name]
展示静态路由的详细信息。
show bfd sessions [name]
展示关于 BFD 会话的信息。
show symbols [table|filter|function|protocol|template|roa|symbol]
展示在配置文件中被定义的符号的列表(协议实例的名称,路由表的名称等等)。
show route [[(for|in)] prefix|for IP] [table (t|all)] [(import|export) table p.c] [filter f|where cond] [(export|preexport|noexport) p] [protocol p] [(stats|count)] [options]
展示指定的路由表的内容,这包括路由本身,它们的 metric,(以及在 all 选项被指定的时候)它们的全部信息。
如果你想输出一个特定的网络的路由信息,你可以指定一个 prefix 前缀。使用 for prefix/IP
会输出用于发送数据包的路由(即最终被采用者),而使用 in prefix
会输出 prefix 的所有子网的路由。
默认情况下,对于每个网络,所有路由都会被输出,其中最终被采用者在最上方。你也可以启用 primary
开关,此时仅最终被采用路由将被输出。
show route 命令可以同时处理多个路由表。被选中处理的路由表按照以下的方式被决定:
table all
;对于某些实例的频道,当 (import|export) table 选择被使用时,内部路由表(internal tables)将被自动创建。这些内部路由表也可以在指定 协议 p 以及 频道 c 后,被 (import|export) table 选项显式选择。
你也可以选择仅输出被某个过滤器处理后被 接受 的路由(指定选项 filter name 或 filter {filter_contents} ),或满足某个条件的路由(指定选项 where condition)。
export 选项用于选择被输出到指定的协议或频道的路由。preexport 选项将跳过输出频道的过滤器判定。noexport 选项用于输出被导出过滤器 拒绝 的路由。需要注意的是,noexport 不会输出被过滤器 接受 但因为其他原因不被导出的路由(备用路由,从这个协议导入的路由等)。这三个选项也暗示对应的路由表将被选择,而不是默认路由表。
你也可以用 protocol p 开关选择被一个特定的协议添加的路由。这个选项也暗示对应的路由表将被选择,而不是默认路由表。
如果 BIRD 被指示保留被过滤的路由(参考 import keep filtered 选项),你可以使用 filtered 开关输出它们。
stats 开关将输出路由的统计信息(网络的数量,过滤前与过滤后的路由的数量)。count 开关将仅输出数值。
mrt dump table name|"pattern" to "filename" [filter f|where c]
将某个路由表的信息用 MRT 表导出格式输出至一个文件。参考 MRT 协议。
configure [soft] ["config file"] [timeout [num]]
从某个配置文件重载配置。BIRD 将会无阻地切换到新配置,并在可能时重新配置协议实例,其他情况下重启协议实例。更改过滤器一般会导致协议实例的重启。
重载配置前的上一版配置文件会被自动保存。如果有需要,则可以使用 configure undo
命令回滚。此时被保存的配置文件将被释放(即使重新配置失败)。
如果 soft 开关被使用,则即使过滤器被更改,BIRD 也不会重启相关的协议实例。此时被旧过滤器接受的路由将继续被传播,而新出现的路由将被新过滤器处理。
如果 timeout 选项被指定,则配置定时器将被激活。除非被 configure confirm
指令确认,配置文件将在指定的定时后自动回滚至上一个配置。回滚的具体表现与 configure undo
相同。这对某些可能导致实例不可达的配置更改特别有帮助。默认超时设置为 300 秒。
configure comfirm
用于解除重新配置的定时器。
configure undo
用于圆滑的回滚至上一个被保存的配置。如果重新配置时指定了 soft 选项,则回滚操作也为 soft。
undo 仅能回滚一次;然而如果有多个重新配置请求被一起发出而中间被跳过了一部分,则回滚时也将跳过它们。
configure check ["config file"]
仅解析并检查被指定的配置文件,但不使用它。对于检查配置文件的正确性有帮助。
enable|disable|restart name|"pattern"|all
启用,禁用或重启协议。协议可以使用名称指定,满足某个规则,或使用 all 选择所有协议。
reload [in|out] name|"pattern"|all
重载协议。这包括重新从协议实例导入路由,并重新向实例导出被选择的路由。如果 in 或 out 选项被启用,则命令将被限制至所选择的方向。
这个命令在例如 configure soft被使用,过滤器被更改,但协议实例没有被重启或重载,导致原来的路由仍在被传播时有用。
重新导出不会失败,但重新导入取决于协议的类型而可能失败(例如当 BGP 邻居不支持刷新路由扩展时)。这种情况下,重新导出也将被跳过。
需要注意的是,对于 pipe 协议,两个方向将始终同时完成 reload 操作,此时 in / out 选项将被忽略。
down
关闭 BIRD。
graceful restart
关闭 BIRD,但使用 graceful restart。参考 graceful restart 章节以获得更多信息。
debug protocol|pattern|all all|off|{ states|routes|filters|events|packets [, ...] }
控制协议的 debug。
dump resources|sockets|interfaces|neighbors|attributes|routes|protocols
向 debug 输出导出内部数据结构。
echo all|off|{ list of log classes } [ buffer-size ]
控制日志信息到命令行的输出。参考 日志选项 以获得日志的类型列表。
eval expr
用于计算某个表达式的结果。
译者
译者
原文作者: <Ondrej Filip>
, <Martin Mares>
, <Maria Matejka>
, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-4.html
原文标题: 4. Remote control
遵循协议: CC BY-NC-SA 4.0
译者: hat
翻译时间: 2023-11-07
更新时间: 2024-02-18
本文链接: https://bird.xmsl.dev/docs/user-guide/4-command-line-interface.html