Vagrantで起動したUbuntu14.04でpublic_networkを使用するとeth0がデフォルトゲートウェイの設定に失敗する
環境
Vagrant: 2.1.1
VirtualBox: 5.2.12
ホスト: Windows10
ゲスト: Ubuntu14.04
現象が発生した要因
VM作成直後はこの現象は発生していなかった。apt-get等でパッケージの追加等を色々行っていると、いつのまにか発生するようになった?別の仮想マシン(Ubuntu16.04)では同様の設定でも現象は発生していない。
詳細
デフォルトゲートウェイの設定に失敗する
とは下記の症状を指します。
route
コマンドでdefaultが表示されない。eth0がNAT, eth1がホストオンリーアダプタ(private_network), eth2がブリッジアダプタ(public_network)です。
vagrant@vagrant:~$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
172.28.128.0 * 255.255.255.0 U 0 0 0 eth1
192.168.254.0 * 255.255.255.0 U 0 0 0 eth2
本来期待する結果は下記の通りです。
vagrant@vagrant:~$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
172.28.128.0 * 255.255.255.0 U 0 0 0 eth1
192.168.254.0 * 255.255.255.0 U 0 0 0 eth2
Vagrantfileでは下記のように設定しています。
Vagrant.configure("2") do |config|
config.vm.network "public_network", type: "dhcp"
end
起動後、手動でeth0を再起動させると、defaultが表示されるようになります。
sudo ifdown eth0 && sudo ifup eth0
vagrant@vagrant:~$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
172.28.128.0 * 255.255.255.0 U 0 0 0 eth1
192.168.254.0 * 255.255.255.0 U 0 0 0 eth2
/etc/network/interfaces
のpost-upの行をコメントアウトし、VirtualBoxから直接起動した場合もdefaultが表示されます。 (defaultがeth2になっていますが)
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth2
iface eth2 inet dhcp
# post-up ip route del default dev $IFACE || true
#VAGRANT-END
vagrant@vagrant:~$ route
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース
default 192.168.254.1 0.0.0.0 UG 0 0 0 eth2
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
172.28.128.0 * 255.255.255.0 U 0 0 0 eth1
192.168.254.0 * 255.255.255.0 U 0 0 0 eth2
何か原因や、確認すべきポイントはわからないでしょうか?
追記
今回はデフォルトゲートウェイはethNのどれでもよかったので、public_networkの設定を下記のようにすることで、eth2がデフォルトゲートウェイとして設定されるようになりました。
Vagrant.configure("2") do |config|
config.vm.network "public_network", type: "dhcp", use_dhcp_assigned_default_route: true
end
ただ、この質問で知りたいのは、なぜeth0が自動的にデフォルトゲートウェイとして設定されないのか、です。
情報をお持ちの方は引き続きよろしくお願いします。
@cubickさんのコメントを受けて追記
下記の通り、public_networkを使用した場合だけ現象が発生します。
成功
- NATのみ
- NAT + private_network
失敗
- NAT + public_network
- NAT + private_network + public_network