Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.8.9.5.3. IP セットの種類

bitmap:ip
IPv4 ホストアドレス、ネットワーク範囲、またはセットの作成時に netmask オプションが使用される場合に CIDR 表記の prefix-length を持つ IPv4 ネットワークアドレスを保存します。オプションで、タイムアウト値、カウンター値、およびコメントを保存できます。65536 エントリーまで保存できます。bitmap:ip セットを作成するコマンドの形式は以下のとおりです。
ipset create set-name range start_ipaddr-end_ipaddr |ipaddr/prefix-length[netmask prefix-length] [タイムアウト ] [カウンター] [comment]

例2.6 接頭辞の長さを使用したアドレスの範囲の IP セットの作成

接頭辞の長さを使用してアドレスの範囲の IP セットを作成するには、以下のように bitmap:ip セットタイプを使用します。
~]# ipset create my-range bitmap:ip range 192.168.33.0/28
セットが作成されたら、以下のようにエントリーを追加できます。
~]# ipset add my-range 192.168.33.1
一覧のメンバーを確認します。
~]# ipset list my-range
Name: my-range
Type: bitmap:ip
Header: range 192.168.33.0-192.168.33.15 
Size in memory: 84
References: 0
Members:
192.168.33.1
アドレスの範囲を追加するには、以下を行います。
~]# ipset add my-range 192.168.33.2-192.168.33.4
一覧のメンバーを確認します。
~]# ipset list my-range
Name: my-range
Type: bitmap:ip
Header: range 192.168.33.0-192.168.33.15 
Size in memory: 84
References: 0
Members:
192.168.33.1
192.168.33.2
192.168.33.3
192.168.33.4

例2.7 Netmask を使用したアドレス範囲の IP セットの作成

ネットマスクを使用してアドレスの範囲の IP セットを作成するには、以下のように bitmap:ip セットタイプを使用します。セットが作成され
~]# ipset create my-big-range bitmap:ip range 192.168.124.0-192.168.126.0 netmask 24
たら、以下のようにエントリーを追加できます。
~]# ipset add my-big-range 192.168.124.0
アドレスの追加を試みると、そのアドレスが含まれる範囲が追加されます。
~]# ipset add my-big-range 192.168.125.150
~]# ipset list my-big-range
Name: my-big-range
Type: bitmap:ip
Header: range 192.168.124.0-192.168.126.255 netmask 24 
Size in memory: 84
References: 0
Members:
192.168.124.0
192.168.125.0
bitmap:ip,mac
IPv4 アドレスと MAC アドレスをペアとして保存します。65536 エントリーまで保存できます。
ipset create my-range bitmap:ip,mac range start_ipaddr-end_ipaddr | ipaddr/prefix-length[タイムアウト ] [カウンター] [comment]

例2.8 IPv4 MAC アドレスペアの範囲の IP セットの作成

IPv4 MAC アドレスペアの範囲に IP セットを作成するには、以下のように bitmap:ip,mac セットタイプを使用します。セットの作成時に MAC アドレスを指定する必要
~]# ipset create my-range bitmap:ip,mac range 192.168.1.0/24
はありません。
セットが作成されたら、以下のようにエントリーを追加できます。
~]# ipset add my-range 192.168.1.1,12:34:56:78:9A:BC
bitmap:port
ポートの範囲を保存します。65536 エントリーまで保存できます。
ipset create my-port-range bitmap:port range start_port-end_port[タイムアウト ] [カウンター] [comment]
設定された match および SET ターゲット netfilter カーネルモジュールは、保存された数字を TCP または UDP ポート番号として解釈します。プロトコルは、オプションでポートとともに指定できます。サービス名が使用され、その名前が TCP サービスとして存在しない場合に proto のみ指定する必要があります。

例2.9 ポートの範囲の IP セットの作成

ポートの範囲に IP セットを作成するには、以下のように bitmap:port セットタイプを使用します。セットが作成され
~]# ipset create my-permitted-port-range bitmap:port range 1024-49151
たら、以下のようにエントリーを追加できます。
~]# ipset add my-permitted-port-range 5060-5061
hash:ip
ホストまたはネットワークアドレスをハッシュの形式で保存します。デフォルトでは、ネットワークプレフィックスの長さを付けずに指定するアドレスはホストのアドレスです。ゼロの IP アドレスは保存できません。
ipset create my-addresses hash:ip [ファミリー[ inet | inet6 ]] [hashsize ] [maxelem ] [netmask prefix-length] [タイムアウト ]
family 省略されたアドレスが IPv4 アドレスとして解釈される場合、inet ファミリーはデフォルトでになります。hashsize 値は、使用する初期ハッシュサイズで、デフォルトはに設定され 1024ます。maxelem 値は、セットに保存できる要素の最大数で、デフォルトではに設定され 65536ます。
netfilter ツールは、最も特殊なネットワーク接頭辞を検索します。これは、一致するアドレスの最小ブロックを探します。

例2.10 IP アドレスの IP セットの作成

IP アドレスの IP セットを作成するには、以下のように hash:ip セットタイプを使用します。セットが作成され
~]# ipset create my-addresses hash:ip
たら、以下のようにエントリーを追加できます。
~]# ipset add my-addresses 10.10.10.0
netmask や timeout などの追加オプションが必要な場合は、セットの作成時に指定する必要があります。たとえば、maxelem オプション
~]# ipset create my-busy-addresses hash:ip maxelem 24 netmask 28 timeout 100
はセット内の要素の合計数に制限されるため、メモリー領域が予約されます。
timeout オプションは、指定された秒数の要素がセットのみに存在することを意味します。例:
~]# ipset add my-busy-addresses timeout 100
以下の出力は、タイムアウト期間の終了時にセットから
[root@rhel6 ~]# ipset add my-busy-addresses 192.168.60.0 timeout 100
[root@rhel6 ~]# ipset list my-busy-addresses
Name: my-busy-addresses
Type: hash:ip
Header: family inet hashsize 1024 maxelem 24 netmask 28 timeout 100 
Size in memory: 8300
References: 0
Members:
192.168.60.0 timeout 90
[root@rhel6 ~]# ipset list my-busy-addresses
Name: my-busy-addresses
Type: hash:ip
Header: family inet hashsize 1024 maxelem 24 netmask 28 timeout 100 
Size in memory: 8300
References: 0
Members:
192.168.60.0 timeout 83
要素が削除されることを示しています。
その他の例は、ipset(8) man ページを参照してください。