LoginSignup
52

More than 5 years have passed since last update.

Vagrantのprivate_networkをCentOS7.0で設定

Last updated at Posted at 2014-08-09

※ この問題はVagrantの1.6.5で解決しているようです。
vagrant 1.6.4以下でcentos7を動かすとエラーが出る件対策#コメント

CentOS7.0ではVagrantfileで以下のようにprivate_networkを指定して起動するとエラーとなってしまう。

$ cat Vagrantfile
===================================
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "hfm4/centos7"
  config.ssh.forward_agent = true

  config.vm.define :node1 do |node|
    node.vm.box = "hfm4/centos7"
    node.vm.network :forwarded_port, guest:22, host:2001, id:"ssh"
    node.vm.network :forwarded_port, guest:80, host:8081, id:"http"
    node.vm.network :private_network, ip:"192.168.33.11"
  end
end
===================================

$ vagrant up
===================================
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

ARPCHECK=no /sbin/ifup eth1 2> /dev/null

Stdout from the command:

ERROR    : [/etc/sysconfig/network-scripts/ifup-eth] Device eth1 does not seem to be present, delaying initialization.


Stderr from the command:
===================================

デフォルトの設定で立ち上げてNIC名を確認

[ホスト側]
$ mkdir CentOS7.0
$ cd CentOS7.0
$ vagrant init hfm4/centos7
$ vagrant up
$ vagrant ssh

[VM内]
$ ifconfig
===================================
-bash: ifconfig: コマンドが見つかりません
===================================

$ ip a
===================================
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:be:2c:f4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 85414sec preferred_lft 85414sec
    inet6 fe80::a00:27ff:febe:2cf4/64 scope link
       valid_lft forever preferred_lft forever
===================================

10.0.2.15はCentOS6系までは「eth0」が割り当てられていたが、
CentOS7系では「enp0s3」になっている。

auto_config:false で立ち上げてみる

[VM内]
$ exit

[ホスト側]
$ vi Vagrantfile
===================================
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "hfm4/centos7"
  config.ssh.forward_agent = true

  config.vm.define :node1 do |node|
    node.vm.box = "hfm4/centos7"
    node.vm.network :forwarded_port, guest:22, host:2001, id:"ssh"
    node.vm.network :forwarded_port, guest:80, host:8081, id:"http"
    node.vm.network :private_network, ip:"192.168.33.11", auto_config:false
  end
end
===================================
$ vagrant reload
$ vagrant ssh

[VM内]
$ ip a
===================================
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:be:2c:f4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86384sec preferred_lft 86384sec
    inet6 fe80::a00:27ff:febe:2cf4/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:c7:09:b0 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:fec7:9b0/64 scope link
       valid_lft forever preferred_lft forever
===================================

「enp0s8」が認識されている。

NICにIPアドレス付与

nmcliコマンドでやってみる。

$ nmcli d show
===================================
GENERAL.デバイス:                       enp0s3
GENERAL.タイプ:                         ethernet
GENERAL.HWADDR:                         08:00:27:BE:2C:F4
GENERAL.MTU:                            1500
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           enp0s3
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.キャリア:              オン
IP4.アドレス[1]:                        ip = 10.0.2.15/24, gw = 10.0.2.2
IP4.DNS[1]:                             10.0.2.3
IP4.ドメイン[1]:                        wi2.ne.jp
IP6.アドレス[1]:                        ip = fe80::a00:27ff:febe:2cf4/64, gw = ::

GENERAL.デバイス:                       enp0s8
GENERAL.タイプ:                         ethernet
GENERAL.HWADDR:                         08:00:27:3A:2A:FA
GENERAL.MTU:                            1500
GENERAL.状態:                           70 (接続中(IP 設定を取得中))
GENERAL.接続:                           Wired connection 1
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア:              オン

GENERAL.デバイス:                       lo
GENERAL.タイプ:                         loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.状態:                           10 (管理無し)
GENERAL.接続:                           --
GENERAL.CON パス:                       --
IP4.アドレス[1]:                        ip = 127.0.0.1/8, gw = 0.0.0.0
IP6.アドレス[1]:                        ip = ::1/128, gw = ::
===================================

$ nmcli con show enp0s8
===================================
Error: enp0s8 - no such connection profile.
===================================

あれ。

$ nmcli con show
===================================
名前                UUID                                  タイプ          デバイス
Wired connection 1  02a8b317-5a4d-46ca-ac94-04238c762461  802-3-ethernet  enp0s8
enp0s3              3c36b8c2-334b-57c7-91b6-4401f3489c69  802-3-ethernet  enp0s3
===================================

ということは

$ nmcli con show "Wired connection 1"
===================================
connection.id:                          Wired connection 1
connection.uuid:                        02a8b317-5a4d-46ca-ac94-04238c762461
connection.interface-name:              --
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1407581555
connection.read-only:                   no
connection.permissions:
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:
connection.gateway-ping-timeout:        0
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             08:00:27:3A:2A:FA
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu:                     自動
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:
ipv4.method:                            auto
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:                         { ip = 192.168.33.11/24, gw = 0.0.0.0 }
ipv4.routes:
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            auto
ipv6.dns:
ipv6.dns-search:
ipv6.addresses:
ipv6.routes:
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (不明)
ipv6.dhcp-hostname:                     --
GENERAL.名前:                           Wired connection 1
GENERAL.UUID:                           02a8b317-5a4d-46ca-ac94-04238c762461
GENERAL.デバイス:                       enp0s8
GENERAL.状態:                           アクティベート中
GENERAL.デフォルト:                     いいえ
GENERAL.デフォルト6:                    いいえ
GENERAL.VPN:                            いいえ
GENERAL.ゾーン:                         --
GENERAL.DBUS パス:                      /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/Settings/1
GENERAL.スペックオブジェクト:           --
GENERAL.マスターパス:                   --
===================================

やっぱり。

以下のように設定してみる。

変数 備考
connection.id: enp0s8 nmcliコマンドで指定するデバイス名
connection.interface-name: enp0s8 インタフェース名
ipv4.addresses: 192.168.33.11/24 IPアドレスとレンジ
ipv4.method: manual DHCPを利用しない
connection.autoconnect: yes OS立ち上げ時自動起動
$ sudo nmcli con mod "Wired connection 1" connection.id "enp0s8"
$ nmcli con show
===================================
名前    UUID                                  タイプ          デバイス
enp0s8  02a8b317-5a4d-46ca-ac94-04238c762461  802-3-ethernet  enp0s8
enp0s3  3c36b8c2-334b-57c7-91b6-4401f3489c69  802-3-ethernet  enp0s3
===================================

お。

$ sudo nmcli con mod enp0s8 connection.interface-name "enp0s8"
$ sudo nmcli con mod enp0s8 ipv4.addresses "192.168.33.11/24"
$ sudo nmcli con mod enp0s8 connection.autoconnect "yes"
$ sudo nmcli con mod enp0s8 ipv4.method "manual"

インタフェース再起動

$ sudo nmcli device disconnect enp0s8
$ sudo nmcli device connect enp0s8
===================================
Device 'enp0s8' successfully activated with '02a8b317-5a4d-46ca-ac94-04238c762461'.
===================================

きたこれ

$ ifconfig
===================================
-bash: ifconfig: コマンドが見つかりません
===================================

$ ip a
===================================
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:be:2c:f4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 83635sec preferred_lft 83635sec
    inet6 fe80::a00:27ff:febe:2cf4/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:3a:2a:fa brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.11/24 brd 192.168.33.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe3a:2afa/64 scope link
       valid_lft forever preferred_lft forever
===================================

これでホスト側から ssh 192.168.33.11 -l vagrant で無事接続できました!

備考

NICの命名規則について

こちらでNICの命名規則についての記述がありました。

文字 意味
en イーサネット
p Firmware/BIOSがNICの(固定的な)論理番号を提供していない場合
0 Bus0
s8 Slot8

おまじない

  config.vm.define :node1 do |node|
    node.vm.box = "hfm4/centos7"
    node.vm.network "private_network", ip: "192.168.33.11", auto_config:false
    node.vm.network "forwarded_port", guest: 80, host: 8080, id:"http"
    node.vm.network "forwarded_port", guest: 22, host: 2001, id:"ssh"
    node.vm.provision "shell", inline: <<-SHELL
      sudo nmcli con delete `nmcli con  | grep enp0s8 | tail -1 | awk '{print $2}'`
      sudo nmcli con mod "`nmcli con  | grep enp0s8 | head -1 | awk '{print $3}'`" connection.id "enp0s8"
      sudo nmcli con mod enp0s8 ipv4.addresses "192.168.33.11/24"
      sudo nmcli con mod enp0s8 ipv4.method "manual"
      sudo nmcli con down enp0s8
      sudo nmcli con up enp0s8
    SHELL
  end

リンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
52