#vagrantで立ち上げた仮想環境にプライベートIPでssh接続ができなかった
##はじめに
vagrantで仮想環境を立ち上げたとき、プライベートIP(デフォルト:192.168.33.10)でsshが出来ず、個人的に結構詰まったのでメモ。
ちゃんとした原因が分かった訳じゃないのでまた追記します。
##目的
vagrantで立ち上げた仮想環境のeth1に192.168.33.10を割り振る。
ssh 192.168.33.10
でssh接続が出来るようにする。
##環境
OS X : 10.9.5
VirtualBox : 4.3.28
Vagrant : 1.7.2
##エラー内容
vagrantのインストールなどは割愛。
仮想環境を立ち上げる所からで...
$ vagrant up
仮想環境を立ち上げたとき、ログにエラーが出た。
The following SSH command responded with a non-zero exitstatus.
Vagrant assumes that this means the command failed!
ARPCHECK=no /sbin/ifup eth1 2> /dev/null
Stdout from the command:
Gerät eth1 scheint zu fehlen, Initialisierung verzögert.
Stderr from the command:
eth1にssh接続できないようだ。
loでも接続出来ないか確認してみる。
$ vagrant ssh
もしくは
$ ssh vagrant@127.0.0.1 -p 2222
$ vagrant@127.0.0.1's password: vagrant
loだと接続することが出来る。
仮想環境のネットワークを確認してみると
$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:0D:65:9F
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe0d:659f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:534 errors:0 dropped:0 overruns:0 frame:0
TX packets:342 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:58601 (57.2 KiB) TX bytes:47212 (46.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth1が設定されていないようだ。
##解決法
###エラー内容の確認
上記でeth1が設定されていないことがわかったので、まずeth1の状態を調べてみる
dmesg | grep eth1
udev: renamed network interface eth1 to eth2
どうやらeth1がeth2にrenameされているようだ。
という訳でネットワークスクリプトの設定を見に行ってみる。
sudo vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:e4:9f:43", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:0d:65:9f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
eth1がなくeth2が設定されている。
ここでeth2をeth1に変更する
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:e4:9f:43", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:0d:65:9f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
###eth1の設定ファイルも編集する
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth1
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.33.10
NETMASK=255.255.255.0
DEVICE=eth1
PEERDNS=no
sudo service network restart
ifconfigで確認するとeth1に192.168.33.10が割り振られている。
これでホストのターミナルからsshできるようになった。