あなた、何かやる時にLXCやdockerで隔離環境作って試すひと?わたしはやるわ。
LXC(Linux container)って大好きで多用するんだけど、ネットワークの設定、特にブリッジが難点だったのよね。何が足りないのかうまく動かなくて。
特に、 最初マシンローカルな 192.168.122.* で試して、うまく動いたら 192.168.1.* にデプロイしていつものローカルネットで使いたい って時に、どうも失敗する事が多かったのよね。
今回、Debian jessieであっさりと、ローカルアドレスを使ったものと通常アドレスの仮想サーバが動いたので設定を記録しておくわ。ほんと、なんであんな失敗してたのかしら。
なお、libvirtの記事はネットに腐るほどあるので飛ばすわね。
auto vmbr0 iface vmbr0 inet static address 192.168.1.24 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 bridge_ports eth0 bridge_stp off
難しい事はしてないわ。
ちなみに /sbin/ifconfigの該当部分は以下。libvirtの仮想I/Fと並べてみたけど、違いがわかるかしら?
virbr0 Link encap:イーサネット ハードウェアアドレス fe:8f:0f:96:76:91 inetアドレス:192.168.122.1 ブロードキャスト:192.168.122.255 マスク:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
vmbr0 Link encap:イーサネット ハードウェアアドレス 14:da:e9:27:8e:d2 inetアドレス:192.168.1.24 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: 2408:210:84:5100:16da:e9ff:fe27:8ed2/64 範囲:グローバル inet6アドレス: fe80::16da:e9ff:fe27:8ed2/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:35107 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:321 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:7763917 (7.4 MiB) TXバイト:56055 (54.7 KiB)
で、仮想ネットワーク側を選ぶなら、LXCノード名/config は以下のように。
lxc.network.type = veth lxc.network.flags = up lxc.network.link = virbr0
で、実のローカルアドレスを選ぶなら、LXCノード名/config は以下のように。
lxc.network.type = veth lxc.network.flags = up lxc.network.link = vmbr0
ね、便利でしょう?
え?LXCノード側の設定?いえ、 DHCP前提ならこのままでOK 。
どちらもDHCPで使いたいなら、 これだけの変更で中身は一切触らず、どちらのネットワークにもスパッと切り替えできる 。この便利さ、わかるかしら?