やりたかったこと
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などを設定するとルーティングがおかしなことになるので注意。
Description='VirtualBox NAT Network'
Interface=enp0s3
Connection=ethernet
IP=dhcp
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はやっぱり最強だった。