
Lily
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
💡 技巧小贴士
本页内容较多,您可以使用 Ctrl/Command + F 快速查找本页面的关键词。
如果想快速搜索全站内容,也可以在页面中单击 / 键 快速全文检索关键词。
对于小屏用户,您可以点击右上角的 放大镜 (🔍) 图标以输入关键词进行全文检索。
请注意查看下方的本节目录,点击目录中的链接可以快速跳转到对应的内容。
💡 摘要 (Powered by OpenAI)
本文是 BIRD 用户指南的第三章第二节,主要介绍了 BIRD 的全局配置项 (Global options),包括配置文件的加载、日志配置、协议调试选项、通道调试选项等内容。
include "filename";
该语句会在当前配置文件下引入一个新的配置文件,可以使用相对路径或绝对路径。
文件名可以是通配符*,会以 a-z 的顺序引入文件,最多可以引入 8 层深度的文件。
此语句可在配置文件的任意位置中使用,但它必须在一行的开头。
在下边的示例中,第一个分号属于 include,第二个分号则属于 ipv6 table。
⚠️ 注意
该文件必须位于此配置文件的同一目录下,否则就是无效引用。
tablename.conf 文件中的内容会被当作是一个字符串,然后被 ipv6 table 语句引入。
ipv6 table
include "tablename.conf";; # include位于所在行的开头log "filename" [limit "backup"] | syslog [name name] | stderr all|{ list of classes }
将指定类型 (all 等) 的日志信息记录到给定的目的地 —— 可选的目的地分别是 文件、syslog (系统日志)、stderr (命令行输出)。
类型们 (classes) 分别是: info, warning,error 以及分析本地问题信息的 fatal ,输出调试信息的 debug ,trace 则适用于当你想知道你的网络发生了什么,想知道远端的机器干了什么错事? 那就用 remote 类型, auth 是关于验证错误的信息, bug 输出的则是 BIRD 的内部错误。
输出日志到文件的功能自带一个基本的日志轮替功能 —— 语句中有一个可选的限制日志文件大小和设置备份文件的配置项,当日志文件到达限制的大小时,目前的日志文件会被更名为备份文件然后重新创建新的日志文件。
可以设置多个日志语句来建立到多个目的地的日志记录。
默认值: 将所有内容记录到 syslog 。如果通过 -d 命令行选项 启用调试模式,则会记录日志到调试日志文件。
小贴士
没看懂? 很简单 当前的日志文件(文件A) 在到达限制的大小时, 你在语句中设置的那个备份文件(文件B)就会被换成 文件A 的内容, 然后文件A现在会变成空的开始重新记载日志, 下方是伪代码 希望能够帮助你理解。
A = 当前日志
B = 备份日志
if (A >= 限制大小){
B = A
A = ""
}debug protocols all|off|{ states|routes|filters|interfaces|events|packets [, ...] }
设置全局默认情况下的协议调试选项。详见下文 [协议调试][3-4] 部分。默认值: 关闭
debug channels all|off|{ states|routes|filters|events [, ...] }
设置全局默认情况下的通道调试选项。详见下文 [通道调试][3-5] 部分。默认值: 关闭
debug commands <number>
客户端连接日志记录等级,可选值:
debug latency <switch>
是否启用对内部事件所用(经过)时间的跟踪,使用 dump events 命令可以检查最近的事件。
默认值:关闭
debug latency limit <time>
如果 debug latency 被设置为启用,那么可以通过这个选项配置允许事件所用时间的最大值,超过限制的时间将会被记录。
默认值:1s
watchdog warning <time>
设置 I/O 循环周期的时间限制。如果一次迭代需要更多时间才能完成,则会记录一次警告。
默认值:5s
watchdog timeout <time>
设置 I/O 循环周期的时间限制。如果超出限制,则 BIRD 会被中止信号杀死。
时间值的有效细粒度为秒,设置为 0 表示禁用。默认值:0 (禁用)
mrtdump "filename"
设置 MRTdump 文件名。想要使用 MRTdump 功能则必须配置此选项。
默认值:无转存文件
mrtdump protocols all|off|{ states|messages [, ...] }
设置全局默认情况下的 MRTdump 选项。详见下文的 mrtdump 部分。
默认值:关闭
filter name local variables{ commands }
定义一个过滤器。关于过滤器的更多信息请查看之后的章节。
function name (parameters) [ -> return type ] local variables { commands }
定义一个函数。关于函数的更多信息请查看之后的章节。
💡 小贴士
协议有一个自己的章节,关于配置它的更多信息详见 3.4 协议配置项 (施工中)。
对于大多数协议 (例如 RIP 或 BGP) 你可以同时运行多个协议。
现在肯定没有人会用 BIRD 跑 RIP 协议了,你说是吧
protocol rip|ospf|bgp|... [name [from name2]] { protocol options }
在未定义协议名情况下会自动生成 [协议名]{数字序号} 的名称,例如 bgp1, rip2 等。
当使用类似 from name2 的配置时,协议的初始配置会从 template 中继承,并被新配置覆盖。
默认值:没有任何协议被配置。
⚠️ 注意
截至目前,模板功能(以及 from 表达式)并不适用于 OSPF 协议。
问题是谁会用 OSPF 写这么多协议实例呢
template rip|ospf|bgp|... [name [from name2]] { protocol options }
与 protocol 一样,未定义模板名的情况下会自动生成 [协议名]{数字序号} 的名称,例如 bgp1, rip2 等。
协议模板可极大地简化配置,提升配置可读性和可维护性,因为你可以在多个协议中共享相同的基本配置。
你还可以使用 from 表达式嵌套其他模板,这样你就可以在多个模板中共享相同的基本配置。
define <constant> = <expression>
定义一个常量 (constant)。常量可以是任何类型的值,包括字符串、数字等,但不可以是 保留字符。
定义之后你可以在任何地方以相同的类型使用这个数值。此外,有一些基于 /etc/iproute2/rt_* 文件的预定义的数字类型常量。
已定义的常量可以使用 show symbols 指令查看,这里有一份 常见的保留字符列表 供参考。
attribute <type> <name>
声明一个自定义的路由属性,你可以像任何其他路由属性一样在过滤器中设置和获取它。 这个功能的目的是在导入/导出过滤器中标记路由,而无需使用本地 BGP 社区属性 (communities)(因为需要在导出过滤器中删除它)。
router id <IPv4 address>
设置 BIRD 的路由器标识符,应为一串 全球唯一 的 32 位整数,通常使用路由器的 IPv4 地址。
默认值:非回环接口上的最小的 IPv4 地址。
router id from [-] [ "mask" ] [ prefix ] [, ...]
使用接口模式 (pattern) 指定的接口的 IPv4 地址设置 BIRD 的路由器 ID。
关于带有扩展子句的接口模式的更多描述,详见 接口 (施工中) 部分。
hostname "name"
设置 BIRD 的主机名,应是一个合法的 FQDN (完全限定域名)。
默认值:等同于 uname -n 返回的主机名。
graceful restart wait <number>
在平滑重启恢复期间,BIRD 会等待所有路由协议收敛之后再开始转发数据包。
此配置可指定超时时间,以防止在一些协议无法进行收敛时陷入无限等待情况。
默认值:240秒
timeformat route|protocol|base|log "format1" [limit "format2"]
此配置项允许指定 BIRD 使用的日期/时间格式。
第一个参数可以指定该格式用于何种目的,例如:
route 指定的格式是在 show route 指令的输出中显示的。protocol 则是在 show protocols 指令的输出显示的base 是默认输出的时间格式。log 是在日志文件中使用的。format1 是按照 strftime(3) 方式的格式字符串(详见 man strftime )。
通过使用 "%f" 转换代码(比如 "%T"."%3f" 表示 hh:mm:ss.sss)它被扩展为支持精度可变(最多微秒)的亚秒级时间。
limit 和 format2 字符串允许为超过 limit 秒的时间指定第二种时间格式。
有几种简写格式: iso long 是 ISO 8601 格式的日期/时间(YYYY-MM-DD hh:mm:ss),使用 "%F" "%T" 也具有相同的效果。
相似的,iso long ms 和 iso long us 也是 ISO 8601 格式的日期/时间,不过精度分别为毫秒和微秒。
iso short 是 ISO-8601 的变体,它对于过去 20 小时以内的时间使用 hh:mm:ss 格式,对于更久的时间则使用 YYYY-MM-DD 格式,也可使用 "%T" 72000 "%F" 实现。
此外高精度变体还有 iso short ms 和 iso short us。
默认情况下,BIRD 对 route 以及 protocol 使用 iso short ms 格式,对于 base 和 log 则使用 iso long ms 格式。
nettype table <name> [ { option; [...] } ]
定义一个新的路由表。默认路由表 master4 以及 master6 已被隐式定义,若要使用其他的路由表则需要使用这个配置项进行定义。
对于路由表配置项详见 路由表配置项部分 (施工中)。
mpls domain <name> [ { option; [...] } ]
MPLS 域代表独立的标签空间,而且负责 MPLS 标签的管理。所有 MPLS 感知 (MPLS-aware) 协议都与某个 MPLS 域相关联。
有关 MPLS 域配置项,详见 MPLS 配置部分 (施工中)。
eval <expr>
评估给定的过滤器表达式。它被开发人员用于测试过滤器,具体用法请见开发者指南。

译者

校对
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek>
原文链接: https://bird.network.cz/?get_doc&v=20&f=bird-3.html#ss3.2
原文标题: 3.2 Global options
遵循协议: CC BY-NC-SA 4.0
译者: lily
校对: hat
翻译时间: 2023-11-17
更新时间: 2024-09-09
本文链接: https://bird.xmsl.dev/docs/user-guide/3-2-global-options.html