Linux 内核 3.2.0-23-generic 中的路由表“220”

Linux 内核 3.2.0-23-generic 中的路由表“220”

我有一台带内核的 Linux 机器3.2.0-23-通用并且在 RPDB 中有优先级为 220 的规则,该规则指向名为“220”的路由表:

T42:~# ip rule show
0:      from all lookup local 
220:    from all lookup 220 
220:    from all lookup 220 
32766:  from all lookup main 
32767:  from all lookup default 
T42:~# ip route show table 220
T42:~# 

是否可以看出这个规则是从哪里来的?空路由表有什么意义?最后但并非最不重要的一点是,如何存在多个具有相同优先级的规则?

答案1

这可能是路由表强天鹅:

在 Linux 上,strongSwan 默认将路由安装到路由表 220 中,因此要求内核支持基于策略的路由。

来源:https://wiki.strongswan.org/projects/strongswan/wiki/IntroductionTostrongSwan

答案2

是否可以看出这个规则是从哪里来的?

不是“我在哪里可以查找该规则的来源”的意思。有多种方法可以调查该问题:最明显的方法是查看grep系统上的所有启动脚本,看看ip rule到底有哪些用途,然后开始阅读它们。或者,您可以以单用户模式启动系统,并使用strace.或者您可以使用bashinit (内核命令行:)来启动系统init=/bin/bash,然后您可以/sbin/init使用 来执行实际的操作strace。这些是跟踪启动活动的相当高级的方法,知道要运行哪些脚本可能并不简单......

如果是管理员或黑客手动输入规则,而不是系统上存在的脚本,则无法知道特定规则来自何处。

空路由表有什么意义?

什么都没有 - 直到有人开始填充该表。这可能是一个守护进程,最初输入其自己的表的规则,然后动态更改其自己的路由表的内容。

怎么可能有多个具有相同优先级的规则?

IPROUTE2 实用套件操作指南

优先级 PREFERENCE --- 该规则的优先级。每个规则都应该有一个明确设置的唯一优先级值。优先级是一个无符号的 32 位数字,因此我们有 4294967296 种可能的规则。

警告!

由于历史原因 ip Rule add 不需要任何优先级值并允许优先级值不唯一。如果用户没有提供优先级值,则内核会分配一个优先级值。如果用户请求创建具有已存在优先级值的规则,则内核不会拒绝该请求,并将新规则添加到该规则的所有旧规则之前。相同的优先级。这是当前设计的一个错误,仅此而已。当您阅读本文时,它应该已修复,因此请不要依赖此功能。创建规则时应始终使用明确的优先级。

相关内容