はじめに
他の VLAN との通信を全てブロックした検証用の VLAN を作ろうとしたところ、DHCP で Windows PC を接続したら IP アドレスが割り振られるが、RTX830 の WAN 側を接続したら IP アドレスが割り振られないという謎の挙動にハマったのでメモしておきます。
結論を言うと、作成した ACL のルール的に DHCP サーバーからの戻りのパケットがブロードキャストの場合は通過するが、ユニキャストの場合にフィルタされてしまっていたためでした。
DHCP サーバーからの戻りのパケットがブロードキャストになるかユニキャストになるかは、リクエストのブロードキャストフラグによって決まるということなので、実際にパケットキャプチャして Windows と RTX830 で違いがあるか確認してみました。
構成

メインルーターの下に L3 スイッチがあり、そこに検証用 VLAN を作り検証用ルーター (RTX830) をぶら下げる形になっています。
検証用 VLAN のネットワークアドレスは 192.168.81.0/24 で、メインルーターに DNS サーバー (192.168.81.1)、L3 スイッチに DHCP サーバー (192.168.81.2) を立てています。
L3 スイッチの ACL 設定
検証用 VLAN からほかの VLAN と通信できないようにしつつ、インターネットにアクセスできるような ACL のルールをつくりました。
最終的に RTX830 でも IP アドレスが割り振られるようになった設定は以下の通りです。

最初は安直に検証用 VLAN とプライベート IP アドレスの通信をブロックするルール (A) だけを入れていたのですが、名前解決ができなかったため DNS サーバーとの通信を許可するルール (C) を追加しました。
ここまでの設定で Windows PC を検証用 VLAN ポートに接続したところ、IP アドレスが割り振られてインターネットにアクセスできるようになったのを確認できたので、検証用ルーター (RTX830) に置き換えてみました。
すると、待てども一向に IP アドレスが割り振られる気配がありません。。。
あれこれ調べたところ Wikipedia で以下のような記述を見つけました。
BROADCASTフラグ(2バイトフィールドの第1ビット。他のビットは通常は0になっている)によってクライアントがDHCPOFFERをブロードキャスト・ユニキャストのどちらで受け取りたいかをサーバに通知することができる。
ここから、もしかしてブロードキャストとユニキャストの違いなのでは?という仮説に行きつきました。
確かに、(A) のルールはプライベート IP アドレス宛の通信をブロックするものであり、ブロードキャストの通信 (255.255.255.255 宛て) は制限できずに通過し、ユニキャストの通信 (割り振られた 192.168.81.0/24 のアドレス宛て) はブロックされてしまいそうですね。
ということで、ユニキャストでも DHCP の通信がブロックされないようなルール (B) を追加しました。
結果、無事に RTX830 に IP アドレスが割り振られました。
仮説の検証
以下の 2 つの仮説を、実際のパケットをキャプチャして検証してみます。
- RTX830 が DHCP リクエストを送る際はブロードキャストフラグがユニキャストになっている
- Windows PC が DHCP リクエストを送る際はブロードキャストフラグがブロードキャストになっている
検証用 VLAN ポートの通信を L3 スイッチの別のポートにミラーリングする設定を入れて Wireshark でキャプチャした結果以下のようになりました。

上の枠が RTX830 の DHCP の通信で、下の枠が Windows PC の DHCP の通信です。 DHCP Offer の宛先のアドレスが確かに、RTX830 ではユニキャストアドレスで Windows PC ではブロードキャストアドレスになっています。

ブロードキャストフラグについても仮説通り RTX830 ではユニキャストで、 Windows PC ではブロードキャストになっていることが確認できました。
面倒くさがらずに初手でパケットキャプチャで調べたらもう少し早く解決したかもですね。
まとめ
原因がわからないうちは頭を抱えましたが、 実際にパケットキャプチャして原因がはっきりしたのですっきりしました。
RTX830 でブロードキャストフラグを変更するコマンドがないか探してみましたが、調べた範囲では見つからなかったです。
DHCP はユニキャストとブロードキャストのどちらのケースもありうるので、ACL のルールを設定する際は気を付けましょう。