我正在运行 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 init 脚本中。我已将其附加到其他 init 脚本中。什么都没有。如果我在启动容器后执行命令,它们会很好地设置默认路由。我的容器配置:
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 主机我可以 ping 容器并 ssh 到它,没有任何问题。我只是无法路由到它或从它路由。这让我抓狂。
答案1
在 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
尽管看上去很笨拙,但它还是能起作用。