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

Контейнер lxc не получает маршрут по умолчанию

Я использую Ubuntu Precise. Я понимаю, что моя текущая версия lxc не поддерживает назначение маршрута / маршрута по умолчанию (lxc 0.7.5-3ubuntu67). Я как черт пытался заставить выполнить несколько строк, чтобы маршрут по умолчанию можно было установить в контейнере:

#!/bin/bash -x
touch /root/route.txt
netstat -rn 2>&1 >> /root/route.txt
export defaultroute=`ifconfig eth0|grep Bcast|awk '{print $3}'|cut -d: -f2|awk -F. '{print $1"."$2"."$3".254"}'`
/sbin/route add default gw $defaultroute 2>&1 >> /root/route.txt
netstat -rn 2>&1 >> /root/route.txt

Теоретически очень просто. Будь я проклят, если пойму, как заставить это выполнить. Я вставил его в конце rc.local. Я поместил это в сценарий инициализации ssh. Я прикрепил его к другим скриптам инициализации. Ничего. Если я выполняю команды после запуска контейнера, они отлично задают маршрут по умолчанию. Мой конфиг для контейнера:

lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.ipv4 = 10.16.161.100/24
lxc.utsname = z100253

lxc.tty = 4
lxc.pts = 1024
lxc.rootfs = /var/lib/lxc/z100253/rootfs
lxc.mount  = /var/lib/lxc/z100253/fstab

lxc.cgroup.devices.deny = a
# /dev/null and zero
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
#lxc.cgroup.devices.allow = c 4:0 rwm
#lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm

с хоста lxc я могу без проблем проверить связь с контейнером и ssh. Я просто не могу добраться туда или оттуда. Это сводит меня с ума.

Была такая же проблема в debian wheezy. Исходя из вашей идеи, я поместил жестко запрограммированный скрипт в /etc/init.d/networking

set_def_route() {
/sbin/route add default gw 192.168.1.1
}

и связан с опцией запуска ниже

case "$1" in
start)
       blah blab ...
       check_ifstate
       set_def_route

Работает, хотя выглядит очень коряво.