我正在使用 LXD 容器运行最新的 Ubuntu (16.10)。容器配置有桥接网络,并且它们从 DHCP 服务器接收自己的 IP 地址。我已对它们进行了以下配置:
lxc 配置文件设备添加默认 eth0 网卡 nictype=桥接父级=br0
lxc 网络连接 br0
现在,我需要为每个容器手动设置硬件地址(MAC),因此它们相应的静态IP永远不会改变。然而,我在 lxc 上很难做到这一点。我是否只是将它们设置在相应的 /etc/network/interfaces 中,还是有更好的(lxd/lxc)方法?
每个容器将保留与首次启动时相同的 MAC 地址。获取其值:
lxc config show container_name
or, more precise
lxc config get container_name volatile.NIC_NAME.hwaddr
这与纯 lxc 的情况不同,您必须在 /var/lib/lxc/container_name/config 中手动设置它。
但是,如果您确实需要使用自己的一组 MAC 地址(假设 eth0 是容器的 nic):
lxc config set container_name volatile.eth0.hwaddr yo:ur:ma:ca:dd:ress
这是在 Centos 7.8 上对我有用的方法。我认为这是一个与发行版无关的解决方案,因此可能是最具弹性的。
在容器目录( /var/lib/lxc/
用于创建此容器的模板:/usr/share/lxc/templates/lxc-download # 传递给模板的参数: # 有关其他配置选项,请查看 lxc.container.conf(5) # 分发配置 lxc.include = /usr/share/lxc/config/ubuntu.common.conf lxc.arch = linux64 # 容器具体配置 lxc.rootfs = /var/lib/lxc/web0/rootfs lxc.utsname = web0 # 网络配置 lxc.network.type = veth lxc.network.flags = 向上 lxc.network.link = virbr0 **lxc.network.hwaddr = 6a:d4:d2:a7:9b:4e**
注意最后一行。这是我添加的 - 这似乎保持了 MAC 地址不变。
lxc config device override <instance name> eth0 hwaddr=00:11:22:aa:bb:cc
覆盖命令将 NIC 配置从配置文件复制到实例中,然后修改您提供的配置密钥。
通过托马斯帕罗特