web-dev-qa-db-ja.com

Linux iptablesはMACアドレスに基づいてトラフィックをドロップします

Linuxでいくつかのテストを行っていますVM 1つのNICで、Macアドレスに基づいて一部のクライアントのトラフィックをブロックできるファイアウォールの一種として使用したいと思います。

クライアント自体がVMをデフォルトゲートウェイ(.254)として持っています。VM自体が(.1実際のルーター)をデフォルトゲートウェイとして持っています)。

これは、私が現在使用しているiptableスクリプトです。クライアントにインターネットがありますが、.14はまだインターネットに接続しています。Macアドレスを使用すると、何もブロックされていません。

何か不足していますか?

    # Generated by iptables-save v1.4.14 on Sun Feb 23 12:16:26 2014
*filter
:INPUT ACCEPT [869:78983]
:FORWARD ACCEPT [1183:197765]
:OUTPUT ACCEPT [644:128360]
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# log iptables denied calls (access via 'dmesg' command)
-P FORWARD DROP
-F FORWARD
-A FORWARD -i eth0 -m mac --mac-source 64:20:0c:ac:f4:49 -j DROP
-A FORWARD -i eth0 -s 192.168.1.14 -j DROP
-A FORWARD -i eth0 -j ACCEPT
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
# Completed on Sun Feb 23 12:16:26 2014
2
Wouter

これらのルールは、.14で使用されるゲートウェイ.254に配置する必要があります。

.1ゲートウェイレベルで.14をブロックする必要がある場合、パケットが.14からのMACアドレスで到達していることを確認する必要があります。パケットがNAT経由で.254によって転送されている場合、これらのパケットは次のように再パックされます。 .254 MACアドレス。

.1ゲートウェイに直接接続できないクライアント.14のサブネットを作成することをお勧めします。

0
fgbreel

MACアドレスフィルタリングはPREROUTINGチェーンで行う必要があります。パケットがFORWARDチェーンに到達するまでに、MACアドレスは(内部)iptablesブリッジのMACアドレスにすでに書き換えられています。

詳細な説明については、 http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html#section8 の9項を参照してください。

また、デフォルトポリシー(-F FORWARD行)を設定した後、FORWARDチェーンをフラッシュします。これを実行したいとは思いません(ACCEPTのデフォルトポリシーを復元します)。

「-A FORWARD -i eth0 -s 192.168.1.14 -j DROP」がそのソースIPをブロックしていない理由はわかりませんが、いずれにしても、そこに「-i eth0」は必要ありません。 1.14がデフォルトのgwとして254を使用していることを確認しますか?

実際に何がロードされているかを確認するために、iptables -L -vの出力をポストすることも役立ちます。

1
quadruplebucky