B.5. iptablesにDHCPリクエストを通させる

これは、DHCP の仕組みさえ知っていれば至って単純な話だ。ただし、許すものと許さないものの区別に少し気を付けなくてはならない。まず第一の前提として、DHCPUDP プロトコル上で働く。従って、それが第一の判定基準となる。第二に、リクエストの送受信をどのインターフェースを通して行うか検討する必要がある。例えば eth0 インターフェースが DHCP によって設定されるなら、eth1DHCP リクエストを通してはならない。DHCP が使う UDP ポート、つまり 6768 を具体的に指定して、ルールをやや厳格なものにする。パケットのマッチと許可に際しての評価方針は以上だ。ルールは下記のようになる:

$IPTABLES  -I INPUT -i $LAN_IFACE -p udp --dport 67:68 --sport \
     67:68 -j ACCEPT
   

これで、送信元と宛先がともに UDP ポート 67 番か 68 番であるトラフィックは、すべて許可される。とはいっても、接続してくる相手のポートも 6768 である場合しか要求を受け入れないので、大きな問題は生じないはずだ。もちろん、もっと厳格にすることも可能だが、最小限の開放で全ての DHCP リクエストと更新送受を受け入れるという意味ではこれで充分だ。こだわるのなら、もちろんもっと厳しくしても構わない。