web-dev-qa-db-ja.com

Iptables-ブリッジアンドフォワードチェーン

イーサネットブリッジをセットアップしましたbr0 2つのインターフェースを含むeth0およびtap0

brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255 

デフォルトのFORWARDチェーンポリシーはDROPです

iptables -P FORWARD DROP

次のルールを追加しないと、トラフィックはブリッジを通過しません。

iptables -A FORWARD -p all -i br0 -j ACCEPT

私が理解している限り、iptablesはIP層のみを担当します。

ebtablesは、イーサネットブリッジ上のトラフィックのフィルタリングを担当する必要があります。

なぜiptableのFORWARDチェーンにACCEPTルールを追加する必要があるのですか?

15

Linux 2.4へのパッチとして利用可能で、Linux 2.6で使用されるbr-nfコードのため:

Br-nfコードは、ブリッジされたIPフレーム/パケットがiptablesチェーンを通過するようにします。 Ebtablesはイーサネット層でフィルタリングしますが、iptablesはIPパケットのみをフィルタリングします。

作業しているトラフィックはipなので、br-nfブリッジドパケットをiptablesに渡すため、iptablesルールは引き続き適用されます。

これ は、相互作用について読むのに最適なリソースであり、 これ は、br-nfコードの機能を詳しく説明しています。すべてまたは一部の機能を無効にする(つまり、ブリッジトラフィックをiptablesに渡さない)。

13
coredump

次のように入力して、この動作を無効にすることができます(ブリッジされたパケットを処理するiptablesを使用可能にする)。

echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables

http://ebtables.sourceforge.net/documentation/bridge-nf.html を参照)

12
Arnout

システムのブリッジでiptablesを使用する必要がない場合は、次のいずれかを使用して永続的に無効にすることができます。

  1. Iptablesルールの追加:

iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT

  1. または/etc/sysctl.confを編集します:

net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0

2
sparks

Ebtablesチェーンは、非転送ブリッジポートに入るフレームを認識しません。これを見てみましょう: http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html

0
Andy Simmons