DHCP サーバーとの通信をファイアーウォールで許可する (CentOS 5.5): Linux の使い方


DHCP サーバーとの通信を iptables で許可する

CentOS 5.5 で DHCP サーバーを構築した場合に、iptables によるファイアーウォールを利用しているときには、クライアントパソコンと DHCP サーバーとの通信を許可する必要がある場合があります。

なお、DHCP サーバーの設定については EZ-NET: DHCP サービスを起動する (CentOS 5.4): Linux の使い方 に記していますので、そちらの方もご覧ください。

 

DHCP サーバーは、DHCP クライアントから bootpc (68/UDP) を送信元として送られてきたパケットを bootps (67/UDP) で受け取って、クライアントとサーバー間でネットワーク設定に必要な情報をやり取りします。

そのため、許可すべき通信としては次のような感じになると思います。

  INPUT OUTPUT
送信元アドレス * *
送信元ポート bootpc (68/UDP) bootps (67/UDP)
送信先アドレス * *
送信先ポート bootps (67/UDP) bootpc (68/UDP)
ルール ACCEPT ACCEPT

クライアントからサーバーへはブロードキャスト (255.255.255.255) 宛にパケットが送信されるのが一般的のようですが、Windows で "ipconfig /renew" を実行した場合には、サーバーの IP アドレス宛に直接パケットが送信されるようなので、アドレスをブロードキャストに限定するということはしない方がよさそうです。

また、送信元のアドレスについても同様で、多くの場合が "0.0.0.0" からの送信となるようですが、"ipconfig /renew" の場合には、現時点での IP アドレスが送信元として指定されるようでした。

 

これらを踏まえて、CentOS 5.5 では "/etc/sysconfig/iptables" ファイルを編集して、ファイアーウォールの設定を調整します。

なお、ここでは DHCP サーバーが待ち受けるインターフェイスが "eth0" であるとして、そのインターフェイスに限定したファイアーウォール設定としています。

-A RH-Firewall-1-INPUT -i eth0 -p udp --sport bootpc --dport bootps -j ACCEPT

-A OUTPUT -o eth0 -p udp --sport bootps --dport bootpc -j ACCEPT

なお、"OUTPUT" については、CentOS 5.5 では、標準ではすべてを許可する設定になっているようでしたので、特に制限をしていなければ、上記の "OUTPUT" ルールを明示的に設定する必要はありません。

また、CentOS 以外の Linux の場合には、"RH-Firewall-1-INPUT" の代わりに "INPUT" を指定することになると思います。

 

これらの設定が終わったら、CentOS 5.5 では、次のようにしてファイアーウォール設定を有効化することができます。

service iptables restart