我有一个带有大量物理网络接口的 Devuan 系统。我有时不得不断开电缆,确保它们重新连接到同一个接口是一件很痛苦的事情。
我也使用富有表现力的接口名称;而不是ethX
我有类似intra
or mgmt
or的名字someprovider
,基于界面的目的。这些名称在防火墙规则等中引用。
我编写了一个在启动时运行的脚本,并确定哪个接口插入了什么,然后相应地重命名它们。我对这个解决方案不满意,因为它涉及大量自定义脚本;如果可能的话,我想要更主流的东西。
该脚本当前通过以下方式识别网络:
- 它可以使用地址临时配置接口,并查看它是否可以 ping 或 arping 特定目的地(这适用于上行链路——我 ping 上游路由器)。
- 它可以在接口上侦听,
tcpdump
以查看是否有来自多个特定 MAC 地址中的任何一个的流量,其中至少一个可能会在几秒钟内发送一些内容。我知道这不是万无一失的,但对我来说已经足够了。(我使用类似的东西timeout ... tcpdump -c 1 -i interfacename "(ether host foo) or (ether host bar) or ..."
。)这适用于内部网络,我没有任何特定于 ping 的东西,但我可以期待几乎恒定的流量。 - 它可以在接口上配置一个临时 IP 并
nmap -sn -oG
针对一个 IP 范围运行,以查看有多少主机存在并可从该范围访问。对于某些将包含许多主机但我不确定哪些主机的内部网络,这是一种有用的启发式方法。
我正在寻找一种最好将其与ifupdown
. 我看过映射,但在我看来,使用映射脚本我只能选择一个逻辑配置来应用到物理接口,而不是重命名接口。interfaces(5)
说Lines beginning with "rename" are used to rename interfaces. It takes one or more arguments in the form of "CUR=NEW", where CUR is the name of an existing interface, and NEW is the new name. This becomes very powerful when combined with pattern matching for the CUR interface.
;但是,模式匹配也对我没有帮助。
如果可以以rename
某种方式在语句中使用映射的结果,那可能会奏效。
我也看过whereami
包裹,但看起来并不乐观。
我最想要的是一种ifupdown
基于if-pre-up
脚本或映射脚本输出重命名网络接口的方法。