如何在 LXD(Linux 容器)下使用 dnsmasq 映射静态 IP 地址
我正在使用 LXD(Linux 容器)来托管基于 Apache、MySQL、Perl 和 PHP 的应用程序。我想将固定 IP 地址分配或映射到我的 MySQL 容器。如何允许 dnsmasq DHCP 服务器根据名称或 MAC 地址为 LXD 容器分配静态 IP 地址?
您可以为 DHCP 服务器设置每个主机/容器的参数。LXD 机器 (VM) 可以始终被赋予相同的主机名、IP 地址和最少时间。例如,您可以告诉 dnsmasq 始终为 VM msyqldb1 赋予 IP 地址 192.168.1.100。
您可以为 DHCP 服务器设置每个主机/容器的参数。LXD 机器 (VM) 可以始终被赋予相同的主机名、IP 地址和最少时间。例如,您可以告诉 dnsmasq 始终为 VM msyqldb1 赋予 IP 地址 192.168.1.100。
如何始终为名为 db 的 LXD VM/机器分配 IP 地址 10.147.164.3?
您的 dnsmasq DHCP 服务器可以读取每行包含一个主机信息的文件。默认文件名为 /var/lib/lxd/networks/lxdbr0/dnsmasq.hosts。每行的格式如下:
{ipaddr},{hostname}
或者
{macadd},{ipaddr},{hostname}
将 DHCP 主机信息存储在此文件中的好处是,当 dnsmasq 收到 SIGHUP 时,该文件将被重新读取,因此无需重新启动 dnsmasq 服务器即可更改它。编辑文件/var/lib/lxd/networks/lxdbr0/dnsmasq.hosts,输入:
$ sudo vi /var/lib/lxd/networks/lxdbr0/dnsmasq.hosts
示例配置:
# always set IP to 10.147.164.2 for apache1 vm 10.147.164.2,apache1 # always set IP to 10.147.164.3 for db1 vm having mac addr 00:16:ee:62:ff:90 00:16:ee:62:ff:90,10.147.164.3,db1
保存并关闭文件。使用 killall 命令向 dnsmasq 发送 SIGHUP,如下所示:
$ sudo killall -SIGHUP dnsmasq
现在您可以启动 lxd vm 或重新启动已在运行的 lxd vm:
验证新 IP 地址:
示例输出:
$ lxc restart db1
$ lxc start db1
$ lxc list
$ lxc info db1
图 01:在 Linux 上设置 lxd/lxc(Linux 容器)的 DHCP IP