Настройка статических ip-адресов для LXC-контейнеров в CentOS 7
Feb 23, 2017 11:15 · 243 words · 2 minute read
Работа с Linux Containers и установленным внутри них софтом значительно упрощается, если использовать статику в настройках сети.
Существует несколько вариантов настройки статических ip-адресов для LXC-контейнеров — давайте разберемся!
Предложенные варианты тестировались в ОС CentOS 7, но должны успешно работать и в других дистрибутивах Linux. Считаем, что все предварительные действия по настройке сети для LXC-контейнеров в Debian Jessie, CentOS 7 и Fedora 21 уже выполнены.
Вариант 1. При выключенном LXC-контейнере редактируем конфигурационный файл /var/lib/lxc/{имя_контейнера}/config
, добавляя в него следующие строки:
...
lxc.network.ipv4 = 10.0.3.31/24
lxc.network.ipv4.gateway = auto
В конфигурационном файле /var/lib/lxc/{имя_контейнера}/rootfs/etc/sysconfig/network-scripts/ifcfg-eth0
параметр BOOTPROTO
изменяем на none
, должно получиться примерно следующее:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HOSTNAME={имя_контейнера}
NM_CONTROLLED=no
TYPE=Ethernet
MTU=
DHCP_HOSTNAME=`hostname`
На хост-компьютере перезапускаем сервисы, обеспечивающие корректную работу сети для LXC-контейнеров:
systemctl restart lxc-net.service
systemctl restart lxc-dhcp.service
systemctl restart iptables
Далее можно запускать контейнер командой lxc-start -n {имя_контейнера} -d
.
Вариант 2. На хост-компьютере открываем на редактирование конфигурационный файл /etc/lxc/dnsmasq.conf
и добавляем в него необходимые строки (по одной для каждого LXC-контейнера, который вы хотите запустить) в следующем формате:
dhcp-host={имя_контейнера_1},10.0.3.21
dhcp-host={имя_контейнера_2},10.0.3.22
dhcp-host={имя_контейнера_3},10.0.3.31
Убедимся, что в настройках юнита lxc-dhcp.service
присутствует (а если нет, то добавим) следующая строка --conf-file=/etc/lxc/dnsmasq.conf \
:
cat /etc/systemd/system/lxc-dhcp.service
[Unit]
Requires=lxc-net.service
Requires=sys-devices-virtual-net-lxcbr0.device
After=sys-devices-virtual-net-lxcbr0.device
[Service]
ExecStart=/sbin/dnsmasq \
--dhcp-leasefile=/var/run/lxc-dnsmasq.leases \
--user=nobody \
--group=nobody \
--keep-in-foreground \
--conf-file=/etc/lxc/dnsmasq.conf \
--listen-address=10.0.3.1 \
--except-interface=lo \
--bind-interfaces \
--dhcp-range=10.0.3.2,10.0.3.254
[Install]
WantedBy=default.target
Если в настройки юнита вносились изменения, то необходимо применить их командой:
systemctl daemon-reload
Далее перезапускаем сервисы отвечающие за корректную работу сети LXC-контейнеров:
systemctl restart lxc-net.service
systemctl restart lxc-dhcp.service
systemctl restart iptables
и запускаем контейнеры!