]
トップ «前の日記(2011-10-15) 最新 次の日記(2011-11-04)» 編集

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 で作りましょう