5.13. iptablesを使用した IP セットの設定および制御
firewalld
サービスと iptables (および ip6tables)サービスの基本的な相違点は次のとおりです。
- iptables サービス は設定を
/etc/sysconfig/iptables
および/etc/sysconfig/ip6tables
に保存しますが、firewalld
は設定を/usr/lib/firewalld/
および/etc/firewalld/
のさまざまな XML ファイルに保存します。デフォルトでは Red Hat Enterprise Linux にfirewalld
がインストールされているため、/etc/sysconfig/iptables
ファイルが存在しないことに注意してください。 - iptables サービス では、すべての変更がすべての古いルールをフラッシュし、
/etc/sysconfig/iptables
からすべての新しいルールを読み取ることを意味しますが、firewalld
ではすべてのルールを再作成することはありません。違いのみが適用されます。その結果、firewalld
は、既存の接続を失うことなく、ランタイム時に設定を変更できます。
いずれも iptables ツール を使用してカーネルパケットフィルターと通信します。
firewalld
の代わりに iptables
サービスおよび ip6tables
サービスを使用するには、最初に root
で以下のコマンドを実行して firewalld
を無効にします。
~]# systemctl disable firewalld ~]# systemctl stop firewalld
次に、
root
で以下のコマンドを入力して、iptables-services パッケージをインストールします。
~]# yum install iptables-services
iptables-services パッケージには、iptables
サービスと ip6tables
サービスが含まれます。
次に、
iptables
サービスおよび ip6tables
サービスを起動するには、root
で以下のコマンドを入力します。
~]# systemctl start iptables ~]# systemctl start ip6tablesシステムが起動するたびにサービスを開始できるようにするには、次のコマンドを入力します。
~]# systemctl enable iptables ~]# systemctl enable ip6tables
ipset ユーティリティーは、Linux カーネルで IP セット を管理するために使用されます。IP セットは、IP アドレス、ポート番号、IP と MAC アドレスのペア、または IP アドレスとポート番号のペアを格納するためのフレームワークです。セットは、セットが非常に大きい場合でも、セットに対して非常に高速なマッチングを行うことができるようにインデックスが付けられます。IP セットは、よりシンプルで管理しやすい設定を可能にし、iptables を使用する際のパフォーマンス上の利点を提供します。iptables が一致し、セットを参照するターゲットは、カーネル内の指定されたセットを保護する参照を作成します。セットを指す参照が 1 つある間は、セットを破棄することはできません。
ipset を使用すると、以下のような iptables コマンドをセットに置き換えることができます。
~]# iptables -A INPUT -s 10.0.0.0/8 -j DROP ~]# iptables -A INPUT -s 172.16.0.0/12 -j DROP ~]# iptables -A INPUT -s 192.168.0.0/16 -j DROPセットは、以下のように作成されます。
~]# ipset create my-block-set hash:net ~]# ipset add my-block-set 10.0.0.0/8 ~]# ipset add my-block-set 172.16.0.0/12 ~]# ipset add my-block-set 192.168.0.0/16次に、セットは以下のように iptables コマンドで参照されます。
~]# iptables -A INPUT -m set --set my-block-set src -j DROP
セットを複数回使用すると、設定時間が節約されます。セットに多くのエントリーが含まれている場合、処理時間を短縮することができます。