private_networkに設定したipにつながらなくて、どうしたものか四苦八苦した結果のメモ

問題

private_networkに設定したipにssh接続できない

下記のVagrantfileで環境構築

  • Vagrantfile
  • 192.168.33.10のipをもつインターフェースを作成して、そこに向けてssh接続を試みたい。

    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.vm.hostname = "test"
      config.vm.network "private_network", ip: "192.168.33.10"
    end
  • vagrant ssh-config
  • vagrant up後の、vagrant ssh-configの実行結果は以下の通り

    >vagrant ssh-config
    Host default
      HostName 127.0.0.1
      User vagrant
      Port 2222
      UserKnownHostsFile /dev/null
      StrictHostKeyChecking no
      PasswordAuthentication no
      IdentityFile C:/Users/masahiko-koba/vm/work/test/.vagrant/machines/default/virtualbox/private_key
      IdentitiesOnly yes
      LogLevel FATAL
    • teratermでssh接続

    127.0.0.1ではlogin可能。
    192.168.33.10ではNG

     
     ip:127.0.0.1 ←OK
     ip:192.168.33.10 ←NG
     user:vagrant
     pass:vagrant
     port:2222

    原因

    設定したipでインターフェースが作られていない。根本原因はわからず。気が向いたら調査する。

    • ip aで確認

    eth1はあるけど、ipは設定されていない

    [vagrant@test ~]$ 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 52:54:00:b2:63:eb brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
           valid_lft 86306sec preferred_lft 86306sec
        inet6 fe80::5054:ff:feb2:63eb/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:16:be:24 brd ff:ff:ff:ff:ff:ff

    解決

    • ネットワークサービの再起動

    systemctl restart networkを実行し、ネットワークを再起動したらインターフェースが作成された
    eth1にipが設定されている

    [root@test vagrant]#systemctl restart network
    [root@test vagrant]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 52:54:00:b2:63:eb brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
           valid_lft 86401sec preferred_lft 86401sec
        inet6 fe80::5054:ff:feb2:63eb/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:ee:fb:ed brd ff:ff:ff:ff:ff:ff
        inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:27ff:feee:fbed/64 scope link
           valid_lft forever preferred_lft forever

    対応

    Vagrantfileのシェルプロビジョンの箇所にsystemctl restart networkを追加したら、vagrant up後にprivate_neworkに設定したipでssh接続が可能になる

    • Vagrantfile

    下記のvagrantfileを使用。provisionの箇所を追加した。

    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.vm.hostname = "test"
      config.vm.provision "shell", inline: <<-SHELL
          systemctl restart network
      SHELL
    end
    • vagrant ssh-config

    修正後のVagrantfileで環境構築。vagrant ssh-configしてみた結果は以下の通り。

    >vagrant ssh-config
    Host default
      HostName 127.0.0.1
      User vagrant
      Port 2200
      UserKnownHostsFile /dev/null
      StrictHostKeyChecking no
      PasswordAuthentication no
      IdentityFile C:/Users/masahiko-koba/vm/work/test/.vagrant/machines/default/virtualbox/private_key
      IdentitiesOnly yes
      LogLevel FATAL
  • teratermでssh接続
  • 以下の情報で接続できた

    ip:192.168.33.10
    user:vagrant
    pass:vagrant
    port:22
  • インターフェースの確認
  • ログイン後ip aで確認してみるとeth1としてprivate_networkに設定したipが設定されているのが確認できた

    [vagrant@localhost ~]$ 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 52:54:00:b2:63:eb brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
           valid_lft 86343sec preferred_lft 86343sec
        inet6 fe80::5054:ff:feb2:63eb/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:35:36:d2 brd ff:ff:ff:ff:ff:ff
        inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:27ff:fe35:36d2/64 scope link
           valid_lft forever preferred_lft forever