LXCパッケージのインストール
sudo aptitude install lxc
debian環境の作成
sudo lxc-create -n lxc-debian -t debian
この状態で、
sudo lxc-start -n lxc-debian
すると起動する。しかも何も設定していないのに、ホスト側のインタフェースが見えてネットワークが使えた。ただ、ちゃんとネットワークを設定したい。しかも、単なるブリッジを設定してしまうと、外向きインタフェースを指定しなければいけないが、外向きインタフェースは有線/無線で変わる可能性があるため、NATすることにした。LXC and NAT on notebookを参照した。
bridge-utilsパッケージのインストール
/etc/network/interfaceに以下を追記sudo aptitude install bridge-utils
# LXC bridgeauto br0iface br0 inet staticbridge_maxwait 0bridge_ports dummy0address 10.255.255.1netmask 255.255.255.0
上記のblogでは、fermというパッケージをインストールしてNATを実現しているが、余り余計なパッケージは入れたくなかったのでufwを使ってNATをすることにした。参考にしたのはufw でルータをつくるのページ。
パケット転送許可のための/etc/default/ufw, /etc/ufw/sysctl.confの編集
sudo vi /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
sudo vi /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1 (*コメントアウトを外す)
NAPT(IP masquerade)設定として、/etc/ufw/before.rulesの末尾に以下を追記
sudo vi /etc/ufw/before.rules
# nat Table rules*nat:POSTROUTING ACCEPT [0:0]# Forward traffic from 10.0.0.0.-A POSTROUTING -s 10.255.255.0/24 -j MASQUERADE# don't delete the 'COMMIT' line or these rules won't be processedCOMMIT
ちなみにこの設定はufw disable && ufw enableやservice ufw restartなどやっても、うまく反映されず、再起動したら正しく動作しました。
ゲスト側debianの設定。
sudo vi /var/lib/lxc/lxc-debian/config (*以下を末尾に追加)
#networklxc.network.type = vethlxc.network.flags = uplxc.network.link = br0lxc.network.hwaddr = 00:FF:80:FF:FF:02lxc.network.ipv4 = 10.255.255.2/24
sudo vi /var/lib/lxc/lxc-debian/rootfs/etc/network/interfaces
auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 10.255.255.2netmask 255.255.255.0gateway 10.255.255.1
sudo vi /var/lib/lxc/lxc-debian/rootfs/etc/network/resolv.conf(*上記blogではdnsmasqを使っているが、面倒なのでgoogle public dnsを使用)
nameserver 8.8.8.8
以上でうまく行きました。