はじめに

2015/11/16 に VMware Photon Controller がオープンソースとして公開されました。

ソースコードだけではなく、手元の VMware Fusion/Workstation で試すことが出来る Devbox も提供されています。

ところが、試すにしてもアドレスが 192.168.209.0/24 決め打ちのアドレス体系のため、手元の Fusion/Workstation の vmnet8 の設定を変更する必要があります。Workstation であれば、vmnet8 のネットワークアドレスを変更するといった UI が提供されているのですが、VMware Fusion にはありません。本エントリーでは、グレーながらもそれを可能にする方法を整理します。

VMware Fusion のネットワーク

VMware Fusion が起動すると、vmnet0 や vmnet8 といったインターフェースが生成され、それぞれ IP アドレスが振られます。そして vmnet8 では NAPT と DHCP サービスが提供されます。NAPT と DHCP サービスの設定は以下のファイルで行われています。

  • /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
  • /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf

ここで、いくつか疑問が出てきます。

  • vmnet[1-7] はどうやったら設定できるのか?
  • DNS サーバーはないのか?

次にそれぞれを確認していきます。

vmnet[1-7] はどうやったら設定できるのか?

dhcpd.conf/nat.conf のフォルダを見れば答えがありますが、/Library/Preferences/VMware\ Fusion/ 配下に各 vmnet のフォルダを作成して、それぞれの vmnet の DHCP/NAT サービスの設定を行います。では、地力で mkdir して vi で編集すれば良いのかというと、そうではありません。

Fusion でネットワークの設定は /Library/Preferences/VMware\ Fusion/networking に集約されています。この networking ファイルの内容を元にして vmnet-cli –configure で各 vmnet の設定ファイルを生成していきます。vmnet[1-7] については networking ファイルに VNET_${INDEX} の設定行があると自動的に生成されるようになります。

なお、dhcpd.conf に関しては、

####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

というコメント行の下に追加の設定を行えば vmnet-cli –configure した後もその設定が残ります。私は MAC アドレスに対して固定で IP を割り当てたい場合に使っています。

DNS サーバーはないのか?

ありません。

Gateway のアドレスが DNS として指定されますが、これは DNS の UDP パケットをキャプチャして、ホストに設定されている DNS サーバーに転送しているだけになります。Fusion 独自に DNS サーバーを建てているわけではないため、各種 DNS の調整を行いたい場合は、Fusion の DNS モドキの機能を当てにせず、地力で DNS サーバーを建てる必要があります。特に DHCP と DNS を連動させて Dynamic DNS な環境を用意したい場合には、vmnet では DHCP を無効にし、地力で DHCP/DNS を構築する事になります。

コマンド

vmnet-cli、vmnet-cfgcli の2つのコマンドを利用することになります。以下の例では、DHCP/NAT が有効な vmnet7 を新しく作成しています。

    $ PATH="/Applications/VMware Fusion.app/Contents/Library:$PATH"
    $ sudo vmnet-­cfgcli vnetcfgadd VNET_7_DHCP yes
    $ sudo vmnet­-cfgcli vnetcfgadd VNET_7_HOSTONLY_NETMASK 255.255.255.0
    $ sudo vmnet­-cfgcli vnetcfgadd VNET_7_HOSTONLY_SUBNET 192.168.209.0
    $ sudo vmnet-­cfgcli vnetcfgadd VNET_7_VIRTUAL_ADAPTER yes
    $ sudo vmnet­-cfgcli vnetcfgadd VNET_7_NAT yes
    $ sudo vmnet­-cli ­­confiure
    $ sudo vmnet­-cli ­­stop
    $ sudo vmnet­-cli ­­start$

VMNET ではなく VNET なことに注意。M はありません。また、地力 DHCP/DNS を建てる場合には、次のようにしてみるのもよいでしょう。

他にパラメーターはないのかな〜 という人は、以下のコマンドを叩いて ゲヘゲヘ してください。

    $ strings "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" | grep ^DHCP_
    DHCP_PARAM_DOMAIN_NAME
    DHCP_PARAM_NETBIOS
    DHCP_CFG_HASH
    DHCP_PARAM_LEASE_START_IP
    DHCP_PARAM_LEASE_END_IP
    DHCP_PARAM_DEFAULT_LEASE_TIME
    DHCP_PARAM_MAX_LEASE_TIME
    DHCP_PARAM_BROADCAST_ADDR
    DHCP_PARAM_DNS_ADDR
    DHCP_PARAM_ROUTERS
    DHCP_PARAM_SUB_DEFAULT_LEASE_TIME
    DHCP_PARAM_SUB_MAX_LEASE_TIME
    DHCP_PROGRAM
    $ strings "/Applications/VMware Fusion.app/Contents/Library/vmnet-cli" | grep ^NAT_
    NAT_PARAM_INT_GATEWAY_IPSUBNETMASK
    NAT_PARAM_ALLOW_ANY_OUI
    NAT_PARAM_DEVICE
    NAT_PARAM_NOT_SUPPORTED
    NAT_PARAM_NAT6_PREFIX
    NAT_PARAM_GATEWAY_IP
    NAT_PARAM_CONFIG_PORT
    NAT_PARAM_ACTIVE_FTP
    NAT_PARAM_UDP_TIMEOUT
    NAT_PARAM_NAT6
    NAT_PROGRAM

関連情報

まとめ

  • VMware Fusion には vmnet[1-7] を設定する UI はない
  • vmnet-cli、vmnet-cfgcli を sudo で実行する
  • vmnet の追加、DHCP、NAT の設定はすべて /Library/Preferences/VMware\ Fusion/networking にある
  • 転んでも泣かない