欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux网卡下有两个system,systemd-networkd 作为网络管理服务,导致dhcp给所有网卡分配同样的IP...

发布时间:2023/12/20 linux 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 linux网卡下有两个system,systemd-networkd 作为网络管理服务,导致dhcp给所有网卡分配同样的IP... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我们虚拟机之前的网卡配置是交给 init的 networking 服务来管理的, 具体配置不同系统系统可能不一样。

比如 Debian/Ubuntu系列操作系统配置在 /etc/network/interfaces文件中,

而Redhat/CentOS系列操作系统配置在 /etc/sysconfig/network-scripts/ifcfg-XXX 网卡配置中。

但是如果我们希望所有网卡通过 DHCP 动态获取IP地址, 那我们就需要在对应的网卡配置中, 配置动态获取功能。

例如 Ubuntu

# interfaces(5) file used by ifup(8) and ifdown(8)

# Include files from /etc/network/interfaces.d:

source-directory /etc/network/interfaces.d

auto lo

iface lo inet loopback

allow-hotplug eth0

iface eth0 inet dhcp

allow-hotplug eth1

iface eth1 inet dhcp

如果我们网卡数量较多, 就需要在网卡配置文件中添加所有网卡的 dhcp 配置信息。 但是有些时候我们又不定有多少张网卡的化, 那这种配置就带来很大问题。 无法提前预制好配置。

当然有个比较low的办法就是在network服务启动之前, 添加一个服务采集所有网卡名称, 将dhcp的配置写进去。这种方式最大的问题, 就是要添加自定义网卡配置采集和配置服务,

同时要求该服务要在网络服务启动之前启动。但是这种基础服务, 要我们插入我们自定义的服务才能,还是不能酸完美

较新的发行版, 都使用systemd作为init进程, 为什么网络服务还在使用 /etc/init.d/networking服务? 所以查找了下 systemd 下的网络管理模块,可以使用 systemd-networkd来管理网卡配置。

对于我们的需求, 可以使用模式匹配模式, 比如 eth* 来匹配所有 eth0/eth1/...等等网卡。在 /etc/systemd/network/50-dhcp.network 配置如下:

[Match]

Name=eth*

[Network]

DHCP=ipv4

相比 /etc/init.d/networking 最后使用 dhclient 来进行dhcp操作, 默认是将网卡的 mac 作为 DHCP 的 Client ID,而 systemd-networkd 模式则是有 networkd 程序处理 DHCP请求。

因此在按 /etc/systemd/network/50-dhcp.network 这种模式配置, 所有网卡以及所有虚拟机通过DHCP获取的IP变成了同样的。查找 systemd-networkd 的配置选项之后, dhcp部分有如下选项

[DHCP]

ClientIdentifier=duid

使用什么样的 DHCPv4 客户端标识符: "mac" 表示连接的MAC地址; "duid" 表示一个符合RFC4361规范的客户端ID(也就是 IAID 与 DUID 的组合); "duid-only" 表示仅使用 DUID (可能与 RFC 规范不兼容,但某些场合需要这样做)。 默认值是 "duid"

默认是使用 duid 来作为 DHCP 客户端的标识, 而 duid 又依赖 /etc/machine-id, 因为所有虚拟机的都是基于同一个原始qcow2镜像, 我们并没有清理 /etc/machine-id 的内容。因此相当于所有虚拟机均使用的同样的 /etc/machine-id, 导致最终 DHCP Server来分配IP的时候, 发现所有请求都是基于同一个 客户端标识, 因此分配同样的IP给客户端。问题找到, 最终的配置如下:

[Match]

Name=eth*

[Network]

DHCP=ipv4

[DHCP]

ClientIdentifier=mac

将 ClientIdentifier指制定为根据 mac 地址来分配IP, 就不存在上述问题了。

总结

以上是生活随笔为你收集整理的linux网卡下有两个system,systemd-networkd 作为网络管理服务,导致dhcp给所有网卡分配同样的IP...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。