目次

bhyve 上の Debian 8 でネットワークが使えない

# ping -s 300 

などで 200 バイトを超えるパケットの送受信ができない場合は ネットワークデバイスを virtio-net から e1000 に変更しましょう。

iohyve の場合はこの変更を行うオプションが存在しないため、 手作業でパッチを当てるか、諦めて bhyve コマンドを使うかのどちらかが必要です。

参考までに以下のパッチを当てると無条件に全ての仮想マシンに対して e1000 を割り当てるようになります。

--- /usr/local/lib/iohyve/ioh-tap.orig	2019-02-08 14:52:55.000000000 +0900
+++ /usr/local/lib/iohyve/ioh-tap	2019-05-13 19:09:27.913020000 +0900
@@ -67,15 +67,15 @@
 			local mac="$(zfs get -H -o value iohyve:mac_$tap $dataset)"
 			if [ -z "$pci" ]; then
 				if [ $mac = "-" ]; then
-					pci="virtio-net,$tap"
+					pci="e1000,$tap"
 				else
-					pci="virtio-net,${tap},mac=${mac}"
+					pci="e1000,${tap},mac=${mac}"
 				fi
 			else
 				if [ $mac = "-" ]; then
-					pci="$pci virtio-net,$tap"
+					pci="$pci e1000,$tap"
 				else
-					pci="$pci virtio-net,${tap},mac=${mac}"
+					pci="$pci e1000,${tap},mac=${mac}"
 				fi
 			fi
 		fi

なお、debian 8.11 のカーネルバージョンは次の通りです。

Linux debianvm 3.16.0-8-amd64 #1 SMP Debian 3.16.64-2 (2019-04-01) x86_64 GNU/Linux

同じカーネルを使用した他のシステムでも同様の現象が発生するかもしれません。