端くれプログラマの備忘録 Vagrant [Vagrant] ネットワークカードが複数搭載されたPCでのパブリックネットワーク設定

[Vagrant] ネットワークカードが複数搭載されたPCでのパブリックネットワーク設定

有線と無線の両LANカードを搭載したPCのように、ネットワークカードが複数搭載されたPCでパブリックネットワークを設定する場合には、ブリッジされたインタフェースにどのネットワークインタフェースを使うか指定しないとならない。

都度手動で指定する

Vagrantfileにネットワークインタフェースを指定しないと、VM立ち上げ時に聞いてくる。

Vagrantfile

config.vm.network "public_network"

VM起動。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'laravel/homestead' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) Broadcom NetXtreme 57xx Gigabit Controller
2) Dell Wireless 1540 802.11a/g/n (2.4GHz/5GHz)
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
  default: Which interface should the network bridge to? 1
==> default: Preparing network interfaces based on configuration...
  default: Adapter 1: nat
  default: Adapter 2: hostonly
  default: Adapter 3: bridged
==> default: Forwarding ports...
  default: 80 (guest) => 8000 (host) (adapter 1)
  default: 443 (guest) => 44300 (host) (adapter 1)
  default: 3306 (guest) => 33060 (host) (adapter 1)
  default: 5432 (guest) => 54320 (host) (adapter 1)
  default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
  default: SSH address: 127.0.0.1:2222
  default: SSH username: vagrant
  default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
  default: /vagrant => C:/Users/aidi_dev/Homestead
  default: /home/vagrant/Code => C:/Users/aidi_dev/Code
==> default: Machine already provisioned. Run `vagrant provision` or use the `-- provision`
==> default: flag to force provisioning. Provisioners marked to run always will  still run.

立ち上がったVM上でネットワークカードを確認。テストした環境にはDHCPサーバーがあるので、IPアドレス(192.168.1.16)は自動で振られている。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
  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 group default qlen 1000
  link/ether 08:00:27:92:2d:f6 brd ff:ff:ff:ff:ff:ff
  inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
  valid_lft forever preferred_lft forever
  inet6 fe80::a00:27ff:fe92:2df6/64 scope link
  valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether 08:00:27:f9:f8:b9 brd ff:ff:ff:ff:ff:ff
  inet 192.168.10.10/24 brd 192.168.10.255 scope global eth1
  valid_lft forever preferred_lft forever
  inet6 fe80::a00:27ff:fef9:f8b9/64 scope link
  valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether 08:00:27:fc:d8:21 brd ff:ff:ff:ff:ff:ff
  inet 192.168.1.16/24 brd 192.168.1.255 scope global eth2
  valid_lft forever preferred_lft forever
  inet6 fe80::a00:27ff:fefc:d821/64 scope link
  valid_lft forever preferred_lft forever

ネットワークインタフェースとパブリックIPアドレスを固定するには

Vagrantfileに記述すればネットワークインタフェースとパブリックIPアドレスを固定できる。すなわち、VM起動時にネットワークインタフェースを聞いてこなくなる。

そのためにはVirtualBoxが認識しているネットワークインタフェースの名称がわからなければならない。VirtualBox同梱のVBoxManageを使うと、認識されているネットワークインタフェースを一覧することができる。

C:\Program Files\Oracle\VirtualBox>VBoxManage list bridgedifs
Name: Broadcom NetXtreme 57xx Gigabit Controller
GUID: f6e9d2de-999c-4525-b85e-dfd4f49fad5d
DHCP: Enabled
IPAddress: 192.168.1.8
NetworkMask: 255.255.255.0
IPV6Address: fe80:0000:0000:0000:2d02:30f9:4823:2f83
IPV6NetworkMaskPrefixLength: 64
HardwareAddress: b8:ca:3a:c9:c5:9c
MediumType: Ethernet
Status: Up
VBoxNetworkName: HostInterfaceNetworking-Broadcom NetXtreme 57xx Gigabit Control ler

Name: Dell Wireless 1540 802.11a/g/n (2.4GHz/5GHz)
GUID: c5948608-bd40-4ebb-8864-a270e70bcba8
DHCP: Enabled
IPAddress: 192.168.1.11
NetworkMask: 255.255.255.0
IPV6Address: fe80:0000:0000:0000:2c85:12c3:9041:e587
IPV6NetworkMaskPrefixLength: 64
HardwareAddress: f4:b7:e2:0d:d0:f4
MediumType: Ethernet
Status: Up
VBoxNetworkName: HostInterfaceNetworking-Dell Wireless 1540 802.11a/g/n (2.4GHz/ 5GHz)

ネットワークインターフェースの名前がわかったら、VagrantfileにIPアドレスと共に記述する。

Vagrantfile

config.vm.network "public_network", ip: "192.168.1.100", bridge: "Broadcom NetXtreme 57xx Gigabit Controller"

これで設定は完了。あとはVMを立ち上げればよし。

参考サイト

Public Networks – Networking – Vagrant by HashiCorp
https://www.vagrantup.com/docs/networking/public_network.html