在 CentOS 上使用 DHCP 配置多个接口

在 CentOS 上使用 DHCP 配置多个接口

我正在尝试为CentOS 7 上网络命名空间 ( ) 内的veth设备 ( ) 获取 DHCP 分配的地址,但该设备已在运行。对等设备( ) 位于默认命名空间中,桥接到物理网络接口 ( )。veth-insidemynsdhclientvethveth-outsideens3

默认命名空间中的设备配置如下:

(cent7)$ ip link add name br0 type bridge
(cent7)$ ip link add name veth-inside type veth peer name veth-outside
(cent7)$ ip link set dev ens3 master br0
(cent7)$ ip link set dev ens3 up
(cent7)$ ip link set dev veth-outside master br0
(cent7)$ ip link set dev veth-outside up
(cent7)$ ip link set dev br0 up
(cent7)$ dhclient br0

br0按预期获取 192.168.0.5(通过 DHCP 保留)。然后,veth-inside配置网络命名空间和对等设备,但dhclient返回非零值,如下所示:

(cent7)$ ip netns add myns
(cent7)$ ip link set dev veth-inside netns myns
(cent7)$ ip netns exec myns ip link set dev veth-inside up
(cent7)$ ip netns exec myns dhclient veth-inside
dhclient(29674) is already running - exiting. 

(cent7)$ dhclient --version
isc-dhclient-4.2.5

以上所有内容都可以在 Ubuntu 14.04 上完美运行。我可以dhclient在 Ubuntu 上随意将 IP 地址分配给任意数量的物理、虚拟或桥接设备,无论它们是在默认命名空间中,还是在自己的netns.

(ub1404)$ dhclient --version
isc-dhclient-4.2.4

另外,我已经NetworkManager从CentOS系统上卸载了,并NetworkManager在Ubuntu系统上禁用了桥接器和物理设备,因此NM与这些网络设备没有任何关系。

如何通过 DHCP 将 IP 地址分配给 CentOS 7 中的多个任意接口? CentOS 上的配置或构建是否dhclient与 Ubuntu 上不同,因此不允许多次调用?

答案1

如果您想运行多个实例,dhclient可以--no-pid在每次调用时使用 。 Redhat 的 dhclient 版本进行了修改,因此这也许可以解释 ubuntu 和 centos 在这方面的差异。

对 dhclient 参数进行以下更改:

dhclient --no-pid br0
ip netns exec myns dhclient --no-pid veth-inside

现在每个实例都应该幸福地不知道彼此。

其他人应该注意,这可能会导致不同配置出现问题,因此只有在您知道自己在做什么的情况下才应考虑此解决方案!

相关内容