Назад | Перейти на главную страницу

Сеть (dhcpcd) под LXC

Я хочу загрузить экземпляр Arch Linux с помощью LXC. Почти все работает, но я сталкиваюсь со следующей ошибкой при попытке настроить интерфейс с помощью dhcpcd:

# dhcpcd eth0
dhcpcd[4213]: version 5.6.4 starting
dhcpcd[4213]: eth0: if_init: Read-only file system
dhcpcd[4213]: eth0: interface not found or invalid

Похоже, это прямой результат dhcpcd пытаясь изменить /proc/sys/net/ipv4/conf/eth0/promote_secondaries:

4210  open("/proc/sys/net/ipv4/conf/eth0/promote_secondaries", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EROFS (Read-only file system)
4210  writev(2, [{"dhcpcd[4210]: eth0: if_init: Read-only file system", 50}, {"\n", 1}], 2) = 51

Я могу обойти это с помощью bind крепление:

# touch /tmp/promote_secondaries
# mount -o bind /tmp/promote_secondaries \
  /proc/sys/net/ipv4/conf/eth0/promote_secondaries

Но это кажется ужасной идеей. Есть ли способ получить dhcpcd запустить под LXC без этого хака? Почему в LXC недоступен доступ на запись к этому sysctl?

Причина в том, что при запуске ваш контейнер монтирует доступную только для чтения версию / proc / sys поверх структуры / proc.

Внутри контейнера:

# grep proc /proc/mounts 
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
proc /proc/sys proc ro,relatime 0 0

Вы можете его размонтировать (или смонтировать -o remount, rw), и ваша проблема исчезнет.

umount /proc/sys

Каталог / proc / sys, доступный только для чтения, предназначен для защиты (общей стабильности) вашего хоста от (случайных) модификаций из LXC-контейнера, поэтому приведенное выше утверждение подразумевает риск.

У меня та же проблема. Я не знаю, что вообще можно сделать с файловой системой ro, но для решения проблемы dhcp я использую dhclient вместо dhcpcd. dhclient не пытается ничего писать в / proc / sys.