Yukiharu YABUKI の tDiary
このtDiaryを検索します。
2011-10-30 [長年日記]
_ [Debian] ノートPCで、LXCを運用するときのTIPS
最近のNote PCには無線が付いており、様々な場所でネットワークを利用できるようになっている。しかし世の中で流通しているlxcのブリッジセットアップでは、ノートでLXCを運用する時に便利な状態を紹介していない。そのため快適なLXCライフを過ごすのに情報を探していた。2011/10/31 リンクすべきURLを取り違えていたので更新。
注意点以下の記事は、lxc-jp メーリングリストの方より教えていただいた、(http://s3hh.wordpress.com/2011/05/17/lxc-containers-on-a-host-with-wireless/)を元にしています。しかしながら、lxc自体の設定は、Debian wikiの記述をベースしており、コンテナの置き場所、管理方法、ブリッジの扱い方、iptables、sysctlコマンドやその意味については知っているモノとして、説明はしません。dnsmasqについても上記の記事で触れられている一部分について、自分用に引用はしますが、これは私が教えを請うためであり、情報を頂いた人へフィードバックをするために書いています。
成果元記事の内容を理解してセットアップしたので、eth0およびwlan0がdhcpであっても、lxcで作成したコンテナが外界と通信できるようになった。ただしIP masq配下にいるので、ノートPC以外からは、ノートPC内のlxcbr0のネットワークへルーティングするか、ssh proxy などを使うのが良いかもしれない。
また思いつきで検証してないが、IP alias 0:2とかでlxcbr0をつなげるといいのかもとは思いました。
元記事を読んで、スクリプトを見た時に何をやっているか、コピペで使うのは気持ち悪いので、大まかな動作について確認しておきたい。
- lxcbr0
- 新しく作成するブリッジインターフェースであり、dnsmasqによってlxc用ネットワークを作る。上記の例では192.168.30.*のネットワークであり、IP Masqの先である。
- iptables
- コネクショントラックを用いて、新しい接続、または関連する接続を通すようにする。
- dnsmasq
- DHCPサーバであるが、DHCPのパケットが他のネットワークに届いてしまうと、ネットワークが大混乱するのでlxcbr0だけにアドレスを配る。
また、上記の例では192.168.30.*の範囲をDHCPとしているが、固定にしたい場合は、/var/lib/lxc/vm1/configの設定の lxc.network.ipv4 と組み合わせると良いかも知れない。ただ、左記の場合は自分の手でコンテナ内に入りroute add default gw xxx.xxx.xxx.xxx
などのコマンドでゲートウェイを設定する必要があるかもしれない。そのあたりはnetstat -rnをすれば分かる話なので適宜確認してやってください。
-z, --bind-interfaces On systems which support it, dnsmasq binds the wildcard address, even when it is listening on only some interfaces. It then discards requests that it shouldn't reply to. This has the advantage of working even when interfaces come and go and change address. This option forces dnsmasq to really bind only the interfaces it is listening on. About the only time when this is useful is when running another nameserver (or another instance of dnsmasq) on the same machine. Setting this option also enables multiple instances of dnsmasq which provide DHCP service to run in the same machine.
-a, --listen-address= ipaddr Listen on the given IP address(es). Both --interface and --listen-address options may be given, in which case the set of both interfaces and addresses is used. Note that if no --interface option is given, but --listen-address is, dnsmasq will not automatically listen on the loopback interface. To achieve this, its IP address, 127.0.0.1, must be explicitly given as a --listen-address option.
-I, --except-interface= interface name Do not listen on the specified interface. Note that the order of --listen-address --interface and --except-interface options does not matter and that --except-interface options always override the others.
--dhcp-no-override Disable re-use of the DHCP servername and filename fields as extra option space. If it can, dnsmasq moves the boot server and filename information (from dhcp-boot) out of their dedi‐ cated fields into DHCP options. This make extra space available in the DHCP packet for options but can, rarely, confuse old or broken clients. This flag forces "simple and safe" behaviour to avoid problems in such a case.
- brctlコマンド 設定時にlxcbr0ができていないと、インターフェースの初期化で失敗するので、brctl show
yelona:~# brctl show bridge name bridge id STP enabled interfaces lxcbr0 8000.deb7b0a746f9 no vethjBak6Q pan0 8000.000000000000 noで、確認してから、インタフェースをupすること。もし、ないなら、
brctl addbr lxcbr0
で作りましょう