これは、DHCP の仕組みさえ知っていれば至って単純な話だ。ただし、許すものと許さないものの区別に少し気を付けなくてはならない。まず第一の前提として、DHCP は UDP プロトコル上で働く。従って、それが第一の判定基準となる。第二に、リクエストの送受信をどのインターフェースを通して行うか検討する必要がある。例えば eth0 インターフェースが DHCP によって設定されるなら、eth1 は DHCP リクエストを通してはならない。DHCP が使う UDP ポート、つまり 67 と 68 を具体的に指定して、ルールをやや厳格なものにする。パケットのマッチと許可に際しての評価方針は以上だ。ルールは下記のようになる:
$IPTABLES -I INPUT -i $LAN_IFACE -p udp --dport 67:68 --sport \ 67:68 -j ACCEPT
これで、送信元と宛先がともに UDP ポート 67 番か 68 番であるトラフィックは、すべて許可される。とはいっても、接続してくる相手のポートも 67 か 68 である場合しか要求を受け入れないので、大きな問題は生じないはずだ。もちろん、もっと厳格にすることも可能だが、最小限の開放で全ての DHCP リクエストと更新送受を受け入れるという意味ではこれで充分だ。こだわるのなら、もちろんもっと厳しくしても構わない。