Centos

在 CentOS 上使用 DHCP 配置多個介面

  • March 7, 2018

我正在嘗試在 CentOS 7 上的網路命名空間 ( ) 內為veth設備 ( ) 獲取 DHCP 分配的地址,但它已經在執行。對等設備 ( ) 位於預設命名空間中,橋接到物理網路介面 ( )。veth-inside``myns``dhclient``veth``veth-outside``ens3

預設命名空間中的設備配置如下:

(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 系統解除安裝,並且在 Ubuntu 系統上禁用NetworkManager了網橋和物理設備,因此 NM 與這些網路設備沒有任何關係。

如何通過 DHCP 將 IP 地址分配給 CentOS 7 中的多個任意介面?CentOS 上的配置或建構方式是否dhclient與 Ubuntu 不同,因此不允許多次呼叫它?

如果要執行多個實例,dhclient可以--no-pid在每次呼叫時使用。Redhat 的 dhclient 版本被修改了,所以這可以解釋 ubuntu 和 centos 在這方面的區別。

對您的 dhclient 參數進行以下更改:

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

現在每個實例都應該幸福地不知道彼此。

其他人應注意,這可能會導致不同配置出現問題,因此只有在您知道自己在做什麼的情況下才應考慮此解決方案!

引用自:https://unix.stackexchange.com/questions/274494