Posted at

VirtualBox上のArch LinuxでNATとホストオンリーアダプタを併用しようとしてハマった話

More than 1 year has passed since last update.


やりたかったこと

VirtualBoxに立てたArchLinuxで、NATとホストオンリーアダプタを併用する。

NATはDHCPでIPアドレスを取得して、

ホストオンリーアダプタは固定IPで利用したかった。


解決方法

netctlのプロファイルを作ってネットワークインタフェースを設定するときは、dhcpcdを無効化する。

いずれかのインタフェースでdhcpcdを使いたいときは、netctlのプロファイルからDHCPの設定を行う。


ハマったところ

ホストオンリーアダプタ(以下インタフェース名のenp0s8と記載)用のプロファイルをきちんと設定しているにも関わらず、下記のようなエラーが解消できなかった。

network[281]: The interface of network profile 'enp0s8' is already up

Wikiに書いてあるように、インタフェースをdown→プロファイルをrestart→インタフェースをupという手順を踏むとプロファイルが動き始め、固定IPをきちんと取得出来る。

しかし、マシンを再起動などすると、またエラーになってしまう。


原因

原因もWikiに書いてありました…


ただし、netctl はネットワークインターフェイスデバイスが既に起動している場合 (例えば dhcpcd を使っている場合) はプロファイルを実行しません。


NATのアダプタはDHCPでIPを取得して欲しかったために、dhcpcdを有効にしていたのが原因でした。


解決

最終的に以下のようなプロファイルを作成し、所望の動作が得られました。

ホストオンリーアダプタの方でGatewayなどを設定するとルーティングがおかしなことになるので注意。


/etc/netctl/enp0s3

Description='VirtualBox NAT Network'

Interface=enp0s3
Connection=ethernet
IP=dhcp


/etc/netctl/enp0s8

Description='VirtualBox Host-only Network'

Interface=enp0s8
Connection=ethernet
IP=static
Address=('192.168.56.56/24')
#DNS=('192.168.56.1')
#Routes=('192.168.0.0/24 via 192.168.1.2')
#Gateway='192.168.56.1'


結論

ArchLinuxのWikiはやっぱり最強だった。


参考