終於把lxc的網絡配通了,也不知道對不對,記一下centos
一開始都是雷同的地方網絡
yum install libcgroup lxc lxc-templatestcp
安裝lxc cgroup性能
而後記得.net
chkconfig --level 345 libcgroup on把cgroup始終啓動ip
添加一個橋路由
ifcfg-eth0改爲以下文檔
DEVICE="eth0"
ONBOOT="yes"
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=virbr0
新建一個ifcfg-virbr0,以下內容io
DEVICE=virbr0
TYPE=Bridge
BOOTPROTO=static
DNS1=192.168.8.254
GATEWAY=192.168.8.254
IPADDR=192.168.8.50
NETMASK=255.255.255.0
ONBOOT=yes
重啓一下橋就產生了console
而後
lxc-create -n testcentos -t centos
建立一個以centos爲模板的容器
而後
vi /var/lib/lxc/testcentos/config
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = virbr0
lxc.network.hwaddr = fe:7c:d6:5a:ed:10
lxc.network.ipv4 = 192.168.8.55/24
lxc.network.ipv4.gateway = 192.168.8.50
lxc.network.name = eth0
lxc.rootfs = /var/lib/lxc/testcentos/rootfs
裝完了之後
cat /var/lib/lxc/testcentos/tmp_root_pass
看一下root密碼
而後
lxc-start -n testcentos -d
啓動容器,而且
lxc-console -n testcentos
登錄容器
登陸完了之後問題來了,網絡呢?這裏搞了很久
sysctl net.ipv4.ip_forward=1
打開轉發
而後 iptables設一條規則
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.8.55 -j MASQUERADE
這條規則有問題,一開始設的有點問題,後來改爲
iptables -t nat -A POSTROUTING -o virbr0 -s 192.168.8.55 -j MASQUERADE
就沒問題了,好奇怪。不懂爲何。但這裏也只是保證了能訪問實驗室外部網絡,實驗室內部網絡仍是不通
最後在容器裏ping實驗室內部地址,再在virbr0上dump icmp包
tcpdump -n -i virbr0 icmp
發現壓根沒有包經過,而後發現容器裏的路由有問題
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.8.0 * 255.255.255.0 UH 0 0 0 eth0
link-local * 255.255.0.0 U 1002 0 0 eth0
default 192.168.8.50 0.0.0.0 UG 0 0 0 eth0
也就是說全部192.168.8.0網段的ip都不須要轉發直接能被訪問到。這個不對,最後在
vi /var/lib/lxc/testcentos/config
裏把容器的ip改成lxc.network.ipv4 = 192.168.8.55/32
而且在容器內部的/etc/sysconfig/network-scripts/ifcfg-eth0裏改掉netmask
最後都能訪問了。
幾點疑問,爲何我在全部文檔上都沒看到相似的作法,你們都是直接重定向到eth0完事呢?
另外容器內部的ip設置也和別人不同。可能別人都是再加一個子網?
不管怎麼樣,這個容器算是能用了,有鑑於他的出色計算性能