![验证当前路由表与 AIX ODM 是否匹配](https://linux22.com/image/1450092/%E9%AA%8C%E8%AF%81%E5%BD%93%E5%89%8D%E8%B7%AF%E7%94%B1%E8%A1%A8%E4%B8%8E%20AIX%20ODM%20%E6%98%AF%E5%90%A6%E5%8C%B9%E9%85%8D.png)
我的任务是验证在 AIX 6.1 和 7.1 系统重新启动后所有当前路由是否都会保留,即,我想验证系统是否会重新启动并使用可以定期运行的脚本构建当前路由表。我们曾遇到过操作员添加路由但没有将信息添加到 ODM 的情况。一切都很好,直到几周或几个月后系统重新启动。系统启动后缺少路由。经理和客户对停机时间感到不满。您明白了。我们都经历过这种情况。
首先,我是 AIX 新手,但对 UNIX 并不陌生。我最近一直在使用 RHEL,所以我对 Solaris 和 IRIX 的了解已经生疏了。;-)
如果有 AIX 工具可以验证 ODM 和当前路由表是否匹配,我很乐意用它!
如果没有,我的计划是从
odmget -q "attribute=route" CuAt
或者
lsattr -El inet0 -a route -F value
与 的输出进行比较netstat -rn
。不幸的是,我不明白系统如何解析此信息以在启动时构建路由表。我查看了几个系统。lsattr
上面命令的选定输出看起来像这样。
net,-hopcount,0,,0,10.20.225.1 net,-hopcount,0,-netmask,255.255.255.0,,,10.29.200.0,10.22.160.5 net,10.20.226.0,-netmask,255.255.254.0,10.20.225.1 net,-hopcount,0,-netmask,255.255.255.0,,,10.19.215.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.192.0,,,,,10.22.125.0,10.22.160.5 [many more with this format] net,-hopcount,0,-netmask,255.255.255.0,,,,,10.10.10.0,10.22.160.5 net,,0,10.20.225.1 net,-hopcount,0,-netmask,255.255.254.0,-if,en1,,,,-static,10.20.245.0,10.22.160.5
net,-hopcount,0,,0,10.20.225.1 net,-hopcount,0,,,,,,-static,170.225.25.40,10.22.135.5 net,-hopcount,0,,,,,,-static,170.225.25.40,10.22.195.5 net,-hopcount,0,-netmask,255.255.255.0,,,,,-static,10.0.1.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.255.0,-if,en1,,,,-static,10.0.5.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.255.0,-if,en1,,,,-static,10.10.10.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.240.0,-if,en1,,,,-static,10.10.20.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.240.0,-if,en1,,,,-static,10.19.25.0,10.22.160.5 net,-hopcount,0,-netmask,255.255.255.0,-if,en1,,,,-static,10.20.5.0,10.22.160.5 host,-hopcount,0,,-if,en1,,,,-static,170.225.25.40,10.22.160.5
(我稍微更改了 IP,但没有更改网络掩码或其他值。如果您发现网络错误,那是我的错。我试图发现语法/布局,而不是验证路由。)
我的机器有 en0、en1、en2 等接口。我没有看到对所有这些接口的引用。我没有看到任何明确提及环回或默认路由,但我认为我看到了它们。(默认路由有值-hopcount,0,,0
?)
哪个脚本或进程读取 ODM 并将其转换为路由表?如果我读到它,我可能就能弄清楚路由表是如何构建的。除此之外,有没有在线文档描述或简单解释它是如何完成的?
我是否应该使用不同的命令从 ODM 中提取信息?也许smitty
有什么可以帮助我?
我查看了所有其他带有“aix”标签的问题(只有 97 个),但没有发现类似的东西。经过一天的搜索,Google 先生没有找到任何有用的信息(对我而言)。手册页没有给我足够的关于 lsattr 输出或如何创建路由表的详细信息。显然,我遗漏了一些东西。
我意识到我可以保存机器启动时的输出netstat -rn
并定期将其与当前值进行比较,但它不会告诉我 ODM 是否已更改,而且我真的很想学习一些更特定于 AIX 的东西。 提前感谢您的所有回答和建议!
答案1
我已经换了工作,因此对此做一个限制...
可以将正在运行的 netstat 输出与 ODM 数据进行比较,但这并不简单。ODM 为我提供了 3 位信息,即 IP 地址、网络名称和网络掩码。最大的问题是存储在 ODM 中的数据不必绝对正确。ODM 可以包含位于可用 IP 地址空间中的网络名称,但不能包含网络计算器会计算出的名称。在启动时计算路由表的例程足够智能,可以修复它并丢弃虚假数据。
我找不到执行实际工作的 AIX 进程。Smitty 提供了一些线索,但我发现任何正确格式化的点分四组都可以被接受为网络掩码。(我的一台主机在 ODM 中的网络掩码为 155.155.155.0。该路由在启动时被丢弃。)在构建实时路由表时,任何解析为重复路由条目的 ODM 条目都会被丢弃。
如果我不得不再次这样做,我会使用四个项目的数组:IP、网络掩码、ODM 提供的网络名称和正确计算的网络名称。