У меня есть несколько контейнеров lxc, которым нужен сетевой доступ. В данный момент я вручную выделяю им IP-адреса в соответствующем файле конфигурации следующим образом:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.link = br0
lxc.network.ipv4 = 192.168.1.6/24
lxc.network.ipv4.gateway = 192.168.1.1
Это работает, но не масштабируется и может конфликтовать с распределением DHCP моих маршрутизаторов. Я пытаюсь использовать dhcp моего маршрутизатора, опуская строки lxc.network.ipv4 (как описано в другом месте в Интернете), и контейнер запускается, но dhcpcd сообщает об отсутствии носителя. lxc-ls --fancy также не показывает, что у моего контейнера есть IP-адрес. Bride включен, и lxc.network.link установлен в файле конфигурации.
Как использовать DHCP с моими контейнерами? Можно ли использовать DHCP моих маршрутизаторов или мне нужно запустить сервер на моем хосте? Некоторые из моих контейнеров должны быть доступны извне, в то время как некоторым нужно только общаться с другими контейнерами/хостами.
Я использую Arch Linux, большая часть справочной информации в Интернете относится именно к Ubuntu.
решение1
Убедитесь, что netctl и dhcpcd установлены внутри контейнера (pacman -Q netctl dhcpcd), затем выполните в контейнере следующее:
cat > /etc/netctl/eth0
Connection=ethernet
IP=dhcp
Interface=eth0
Нажмите CTRL-D, чтобы записать файл. Затем включите профиль, выполнив:
netctl enable eth0
Наконец, перезапустите контейнер, и у вас должен быть назначенный DHCP IP-адрес.
решение2
cat <<\EOF >> /etc/netctl/eth
Connection=ethernet
IP=dhcp
Interface=eth0
EOF
Я подумал, что это будет лучший способ создания файла.