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