![Linux 内核 3.2.0-23-generic 中的路由表“220”](https://linux22.com/image/66262/Linux%20%E5%86%85%E6%A0%B8%203.2.0-23-generic%20%E4%B8%AD%E7%9A%84%E8%B7%AF%E7%94%B1%E8%A1%A8%E2%80%9C220%E2%80%9D.png)
我有一台带内核的 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
.或者您可以使用bash
init (内核命令行:)来启动系统init=/bin/bash
,然后您可以/sbin/init
使用 来执行实际的操作strace
。这些是跟踪启动活动的相当高级的方法,知道要运行哪些脚本可能并不简单......
如果是管理员或黑客手动输入规则,而不是系统上存在的脚本,则无法知道特定规则来自何处。
空路由表有什么意义?
什么都没有 - 直到有人开始填充该表。这可能是一个守护进程,最初输入其自己的表的规则,然后动态更改其自己的路由表的内容。
怎么可能有多个具有相同优先级的规则?
优先级 PREFERENCE --- 该规则的优先级。每个规则都应该有一个明确设置的唯一优先级值。优先级是一个无符号的 32 位数字,因此我们有 4294967296 种可能的规则。
警告!
由于历史原因 ip Rule add 不需要任何优先级值并允许优先级值不唯一。如果用户没有提供优先级值,则内核会分配一个优先级值。如果用户请求创建具有已存在优先级值的规则,则内核不会拒绝该请求,并将新规则添加到该规则的所有旧规则之前。相同的优先级。这是当前设计的一个错误,仅此而已。当您阅读本文时,它应该已修复,因此请不要依赖此功能。创建规则时应始终使用明确的优先级。