とある DHCP サーバー機能を持つルーターに対して、大量のクライアントからリース要求が来た場合の動作を確認したい状況があった。
物理マシンや VM を何十何百と用意するのは現実的ではないため、 DHCP クライアントとして機能するコンテナを大量に用意する方法を検証してみる。
docker のデフォルト動作では、コンテナが NAT の下に入りブロードキャストドメインが区切られてしまうため、(IPv4 の場合) UDP のブロードキャストに依存する DHCP は機能しない。
この問題を解決するため、 macvlan ネットワークのブリッジモード を利用して、各コンテナに独立した MAC アドレスを割り当てる方法を採用する。
macvlan は Linux ホストでのみ動作するため、 Windows PC を使用する場合は、 VM 上で Linux と docker を実行し、それをホストマシンの NIC とブリッジする構成を取る。
構成
以下のような構成とする。