Vagrant で public_networkの 接続するbridged network名を指定する


Windows環境で 有効な bridge adapterが複数ある場合、
どのadapterに接続するのかを 予め Vagrantfileで指定しておく方法

自前調査の結果なので、もっと楽な方法あれば教えてくださいm(_ _)m

Bridged Networkへの接続

例えば接続する adapterが "Realtek PCIe GbE Family Controller" なら以下のようにVagrantのconfigに追記すれば良い

Vagrantfile
...
  config.vm.network "public_network", bridge: "Realtek PCIe GbE Family Controller"
...

で、この adapterの文字列って何を指定すれば?

adapter名の取得

vboxmanage list bridgedifsで一覧表示可能なので、そこのNameから持ってくる

C:\Users\user>vboxmanage list bridgedifs
Name:            Realtek PCIe GbE Family Controller
GUID:            ...

蛇足

最初、vboxmanage listでとれば良いという事に気が付かず色々調べてしまったので その残骸。

Bridgedネットワークで出てくるアダプタは netshを使ってインターフェースを一覧したときに
Admin Stateが有効 な状態の物が対象っぽい(VirtualBox関係は除く)

C:\Users\user>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
有効             接続             専用               イーサネット
有効             接続             専用               VirtualBox Host-Only Network
有効             接続             専用               Npcap Loopback Adapter
有効             切断             専用               Wi-Fi

ここで出てくる Interface Nameは変更可能な名前なので残念ながら違う。

GUIからはネットワーク接続のプロパティで「接続の方法:」というところに表示されている文字列?

Registryの中で以下のキー以下にNetwork Interfaceが列挙されているので その中では DriverDescじゃないかと。
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}

WMI使って NIC一覧のQueryを投げる方法がわりと楽で、そのNameを使えば良い
wmic nic where "(NetConnectionStatus > 0)" get Name,NetConnectionStatus

C:\Users\yasuo\work\centos>wmic nic where "(NetConnectionStatus > 0)" get Name,NetConnectionStatus
Name                                            NetConnectionStatus
Realtek PCIe GbE Family Controller              2
Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC  7
Bluetooth Device (Personal Area Network)        7
VirtualBox Host-Only Ethernet Adapter           2
Npcap Loopback Adapter                          2