libpcapはネットワークパケットをどのように読み込み、一部の仮想マシンではなぜ機能しないのですか?

libpcapはネットワークパケットをどのように読み込み、一部の仮想マシンではなぜ機能しないのですか?

AWS Lambdaで実行するときは、libpcapがネットワークパケットを読み取る方法を理解したいと思います。

私が知る限り、関連するLinuxカーネルシステムコールがネットワークデバイスからパケットを読み取ることができるようにするCAP_NET_ADMINおよびCAP_NET_RAW関数のいずれかまたは両方が必要です。

しかし、私が知っている限り、仮想マシン環境で作業している場合は、物理ネットワークデバイスからパケットを読み取ります。、VM内に作成された仮想ではありませんか?これにより、パケットを読み取ることができます。仮想マシンごと同じホストで実行すると、ホスト(たとえば、Lambda)から機能が削除された理由は明らかです。

libpcapがこのように動作する理由と、仮想ネットワークデバイスからパケットを読み取れないのはなぜですか?また、Firecracker MicroVMなど、高度に分離された環境で動作する他のソリューションはありますか?

関連情報