寻找主界面的启发式方法

寻找主界面的启发式方法

我正在尝试配置一些虚拟机的网络配置和 consul 等。我正在使用 vagrant 并将虚拟机配置为使用私有网络。除了 eth0 上到主机的 NAT 连接之外,这还会创建一个接口 eth1。默认情况下,Consul 使用第一个接口 eth0。当然,这会搞乱一切,因为两个虚拟机都使用同一个 IP 注册,这个 IP 不是来自私有网络的 IP,而是来自主机连接的 IP。

到目前为止一切顺利。我可以更改 consul 使用的 IP,但这让我感到疑惑:

有没有比“使用第一个”更好的启发式方法来找到“主”界面?

由于这是自动化网络配置和 DNS 的尝试,我希望有某种通用解决方案,但我不知道该怎么做。理想情况下,这将是其他领事代理所在的位置。这种集群越异构,所有集群节点的接口就越不可能相同。

基本上,我正在寻找用于网络的“做我的意思(X)”。;-)

答案1

您可以通过以下方式强制在重新启动时使用一致的命名udev。实际上,这是发展的主要原因之一(不是唯一的原因)。udev

假设您有两个以太网接口,一个的 MAC 地址为 aa:bb:cc:dd:ee:ff,您想将其称为 wan0,另一个的 MAC 地址为 00:11:22:33:44:55,您想将其称为 local1。

然后你可以编辑文件/etc/udev/rules.d/70-persistent-net.rules,找到如下行:

 # PCI device 0x8086:0x1502 (e1000e)
 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:bb:cc:dd:ee:ff", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

此规则为供应商代码为 8086、产品代码为 1502、MAC 地址为 aa:bb:cc:dd:ee:ff 的 PCI 设备指定名称eth0。 改变eth0wan0,并且你有一条规则总是为该 NIC 指定相同的名称。其他接口也同样如此。

将与主机通信的接口的 MAC 地址替换为 aa:bb:cc:dd:ee:ff,将与其他客户机通信的 NIC 的 MAC 地址替换为 00:11:22:33:44:55,就完成了。

相关内容