Menu Close
Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
6.5. nftables コマンドにおける決定マップの使用
ディクショナリーとしても知られている決定マップにより、
nft
は一致基準をアクションにマッピングすることで、パケット情報に基づいてアクションを実行できます。
6.5.1. nftables での匿名マップの使用
匿名マップは、ルール内で直接使用する
{ match_criteria : action }
ステートメントです。ステートメントには、複数のコンマ区切りマッピングを含めることができます。
匿名マップの欠点は、マップを変更する場合には、ルールを置き換える必要があることです。動的なソリューションの場合は、「nftables での名前付きマップの使用」 の説明に従って名前付きマップを使用します。
この例では、匿名マップを使用して、IPv4 プロトコルおよび IPv6 プロトコルの TCP パケットと UDP パケットの両方を別のチェーンにルーティングし、着信 TCP パケットと UDP パケットを個別にカウントする方法を説明します。
手順6.15 nftables での匿名マップの使用
- example_table を作成します。
# nft add table inet example_table
- example_table に
tcp_packets
チェーンを作成します。# nft add chain inet example_table tcp_packets
- このチェーンのトラフィックをカウントする
tcp_packets
にルールを追加します。# nft add rule inet example_table tcp_packets counter
- example_table で
udp_packets
チェーンを作成します。# nft add chain inet example_table udp_packets
- このチェーンのトラフィックをカウントする
udp_packets
にルールを追加します。# nft add rule inet example_table udp_packets counter
- 着信トラフィックのチェーンを作成します。たとえば、example_table に、着信トラフィックをフィルタリングする
incoming_traffic
という名前のチェーンを作成するには、次のコマンドを実行します。# nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
- 匿名マップを持つルールを
incoming_traffic
に追加します。# nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
匿名マップはパケットを区別し、プロトコルに基づいて別のカウンターチェーンに送信します。 - トラフィックカウンターの一覧を表示する場合は、example_table を表示します。
# nft list table inet example_table table inet example_table { chain tcp_packets { counter packets 36379 bytes 2103816 } chain udp_packets { counter packets 10 bytes 1559 } chain incoming_traffic { type filter hook input priority filter; policy accept; ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets } } }
tcp_packets
チェーンおよびudp_packets
チェーンのカウンターは、受信パケットとバイトの両方を表示します。