web-dev-qa-db-ja.com

MACアドレスフィルタリングにIpsetとIptablesを使用する

LinuxルーターでMACアドレスフィルタリングを使用しています。これが私がしたことです:

iptables -A INPUT -i eth5 -m mac --mac-source 00:07:e9:84:2b:99 -j RETURN #User: Someuser
iptables -A INPUT -i eth5 -j DROP

しかし、Iptablesルールリストは400を超えるエントリで膨大です。最近、IptablesでIpsetを使用する利点について読みました ここ 。しかし、MACフィルタリングで同じことを行う方法についてはどこにも見つかりませんでした。では、Iptablesルールテーブルのサイズを減らすために、MACフィルタリングにIpsetを使用するにはどうすればよいですか。

1
nixnotwin

基本的にはこのようなものですが、IPをMACに関連付ける必要があり、純粋なMACセットは存在しないようです。

# ipset --create test macipmap --network 10.0.0.0/16
# ipset --add test 10.0.0.1,00:11:22:33:44:55
# iptables -A INPUT -i eth5 -m set --match-set test src -j ACCEPT

ここでは、マップのコンテンツと、このセットを参照するiptablesルールを示す参照カウンターが表示されます。

# ipset -L test
Name: test
Type: macipmap
References: 1
Header: from: 10.0.0.0 to: 10.0.255.255
Members:
10.0.0.1,00:11:22:33:44:55

考慮すべきことがいくつかあります。

  • このタイプのセットは、技術的には64k個の連続するアドレスに制限されています(「サブネット整列」する必要があるかどうかはわかりません)。 ここ
  • カーネルはipsetをサポートする必要がありますが、ほとんどの一般的な標準配布カーネルは残念ながらサポートしていません。
  • 代わりに静的ARPを設定することもできます
  • MACアドレスは簡単になりすますことができます
2
Michuelnik