メモ NetworkManager と ifupdown の衝突に注意
自分のリアルなUbuntuデスクトップ上で KVM インスタンスをいくらか立ち上げたい、と思ってその前にブリッジ接続をどうのとやっていたら、 /etc/network/interfaces にeth0に関する設定が何も書いてない。えっ
なんでだ……と思いつつ、とりあえず eth0 と br0 に関する設定をinterfacesに書いた。そしたら今度はネットに繋がらない。ifconfigで eth0 がDHCPサーバからアドレスを奪ってくる
そのときに書かれていた設定がこちら。諸事情によりIP周りはいじっております。
これで eth0 がなぜDHCP接続しにいくんだろうねぇ、と。
で、分かったこと。
なんでだ……と思いつつ、とりあえず eth0 と br0 に関する設定をinterfacesに書いた。そしたら今度はネットに繋がらない。ifconfigで eth0 がDHCPサーバからアドレスを奪ってくる
そのときに書かれていた設定がこちら。諸事情によりIP周りはいじっております。
auto lo
iface lo inet loopback
# 以下を追加した。それ以前は「何もなかった」
# (普通は iface eth0 inet dhcp とか書いてあるはず
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.20
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
これで eth0 がなぜDHCP接続しにいくんだろうねぇ、と。
で、分かったこと。
- 最近はNetworkManagerというのが入っていて、GUIとかからネットワーク環境をいじれるとかいろいろある (いろいろあるのでよくわからない。ログインユーザごとの設定みたいなのも出来る?)
- ifupdown の系統はどっちかというと古い設定的な (deprecated にはなってない)
- NetworkManager は一応 /etc/network/interfaces を見ている。そこに書いてあるインターフェースをどちら (NetworkManagerとifupdown) が管理するかは NetworkManager.conf で変更できる (default ではNetworkManager は「管理しない」 = /etc/network/interfaces に書かれているインターフェースは放置するはず)
え、さっき超堂々と管理してたような……dhclientがNetworkManagerを再起動するたびに勝手に何かやってたよ
で、個別のサービスではなくてマシン毎リブートしたら、NetworkManager はbr0とeth0の管理を放棄して幸せになった。あんまり正しい解決策じゃないんだけどな
ところでもちろんNetworkManagerをアンインストールとかすればそれはそれで幸せになれるけど、最近そういうのをやると後で復讐されるのです。
参考: NetworkManager.confより
参考: NetworkManager.confより
managed=false | trueControls whether interfaces listed in the 'interfaces' file aremanaged by NetworkManager. If set to true, then interfaceslisted in /etc/network/interfaces are managed by NetworkManager.If set to false, then any interface listed in /etc/net-work/interfaces will be ignored by NetworkManager. Remember thatNetworkManager controls the default route, so because the inter-face is ignored, NetworkManager may assign the default route tosome other interface. When the option is missing, false valueis taken as default.