Dhcp

如何設置標準 LXC 容器的 DHCP IP?

  • October 25, 2017

當您在主機上創建一些容器時,例如:

sudo lxc-create -n container1 -t ubuntu
sudo lxc-create -n container2 -t ubuntu

LXC 系統為新子網上的主機創建 IP 地址,例如

lxc-ls --fancy
NAME            STATE    IPV4        IPV6  AUTOSTART
----------------------------------------------------
container1  RUNNING  10.0.3.143  -     NO
container2  RUNNING  10.0.3.12   -     NO

問題是,分配這些地址的 DHCP 服務在哪裡,我們如何根據伺服器名稱或 MAC 地址分配固定 IP?

我們嘗試編輯/etc/lxc/default.conf和添加:

   dhcp-host=container1,10.0.3.10
   dhcp-host=container2,10.0.3.20

然後停止並啟動容器並執行此操作,sudo service lxc-net restart但這沒有任何效果。我可以/etc/network/interfaces在每個容器上編輯並硬編碼一個 IP 而不是使用 DHCP,但我寧願集中控制它。

有沒有辦法做到這一點?

好的,找到了另一種可行的方法:

  1. 停止所有容器
  2. 編輯 /etc/default/lxc-net
  3. 取消註釋“LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf”
  4. 創建文件 /etc/lxc/dnsmasq.conf
  5. 編輯 dnsmasq.conf:

dhcp-host=container_name,10.0.2.10 6. 服務 lxc-net 重啟

現在重新啟動容器並享受您自己 IP 的榮耀。

  • 編輯 -

說得太早了——這只有一半有效。

有 4 個容器,在 dnsmasq.conf 我有:

dhcp-host=host01,10.0.2.10
dhcp-host=host02,10.0.2.20
dhcp-host=host03,10.0.2.30
dhcp-host=host04,10.0.2.40

現在,當我重新啟動evertying(包括容器)時,我得到了這個:

# lxc-ls --fancy
NAME       STATE    IPV4        IPV6  AUTOSTART
-----------------------------------------------
host01    RUNNING  10.0.2.99   -     YES
host02    RUNNING  10.0.2.20   -     YES
host03    RUNNING  10.0.2.198  -     YES
host04    RUNNING  10.0.2.40   -     YES

有一半是對的。我們以相同的方式創建的所有容器,並且沒有以任何方式進行編輯。

任何人有任何想法發生了什麼?

這是其中一個有問題的容器上的 /etc/network/interfaces 的內容:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

和上班族沒什麼兩樣。

– 編輯 2 —

停止所有容器,然後執行:

$ sudo restart lxc-net

修復了問題!

引用自:https://serverfault.com/questions/697143