web-dev-qa-db-ja.com

DHCPを許可しながら、ブリッジインターフェイスとの間のすべてのトラフィックをブロックするにはどうすればよいですか?

一部の外部デバイスのネットワーク接続を制御するための「ソフトウェアスイッチ」として使用されているPC(Fedora 20を実行)があります。そのようなデバイスは8つあります。 PCには、外部への独自のイーサネット接続に加えて、2つの4ポートイーサネットカードがあります。デフォルトでは、8つのデバイスインターフェイスは、フィルタリングなしで外部インターフェイスに転送されます。

必要な機能は、特定のデバイスとの間のすべてのトラフィックをブロックする機能です。現在、bridge link set dev <device> state 0を使用してこれを行っています。これにより、デバイスのブリッジ状態が「無効」に設定されます。ただし、これはデバイスからのDHCPトラフィックもブロックするようです。ネットワークのDHCPサーバーは外部インターフェースを介してアクセスできるため、ブリッジがこのトラフィックをブロックしているようです。つまり、デバイスがIPを更新しようとすると失敗します。これは、デバイスで実行しようとしているテストの点で問題があります。

私がやりたいのは、特定のデバイスについて、ブリッジ全体のすべてのトラフィックDHCPを除くをブロックすることです。 bridgeコマンドではこれを実行できないようです。そのため、ブリッジの状態を「転送中」のままにしておくことをお勧めします。いくつかの調査を行った結果、ebtablesは私が必要とするツールのようですが、それを構成するには、DHCPとネットワークに関する知識が必要です。いくつかのebtablesチュートリアルを読んだところ、ポート67と68でトラフィックを許可し(これらはDHCPに使用される唯一のポートだと思いますか?)、他のすべてのトラフィックをブロックする必要があると思います。

だから私の質問は:

  1. ebtablesを設定して、私がやりたいことを行うことはできますか?
  2. ebtablesは、ジョブに最適なツールですか、その上に構成を容易にする抽象化レイヤーがありますか? (fermiptablesを考えています。)
  3. 私が正しい方向に向かっていると仮定して、すべてのトラフィックバーDHCPをブロックするようにebtablesをどのように構成しますか?
3
Allan Lewis

はい、netfilterルールをブリッジに適用するにはebtablesが必要です。

一致ルールはipで、パラメータは--ip-source-portおよび--ip-destination-port

必要なトラフィックを許可するようにebtablesを構成してから、他のトラフィックを明示的にドロップします。

DHCPクライアントポートはUDP 68、DHCPサーバーポートはUDP 67です。

正しいコマンド構文と順序は次のようになると思います。

ebtables -I INPUT -i eth0 -o eth0 -p ip -j DROP
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-source-port 68 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 67 -j ACCEPT
ebtables -I INPUT -i eth0 -o eth0 -p ip --ip-protocol udp --ip-destination-port 68 -j ACCEPT
ebtables-save
5
suprjami