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


14

br02つのインターフェイスを含むイーサネットブリッジをセットアップしeth0tap0

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ルールを追加する必要があるのですか?

回答:


12

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

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

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

これは、相互作用について読むのに最適なリソースであり、これはの機能の詳細BR-NF(すなわちiptablesのにブリッジトラフィックを渡していない)の機能の全部または一部を無効にする方法を含めて、コードを。


機能は4.4.0-22-generic(ubuntu 16.04)で動作しませんecho "1" > /sys/devices/virtual/net/br0/bridge/nf_call_arptables。何か案は?
アリースクリアルーク

自分に答える:#br_netfilter modprobe br_netfilterを読み込む#すべてのipv4パケットをiptables ebtablesに転送するBROUTINGチェーンルールに追加-t broute -A BROUTING -p ipv4 -i br0 -j DROP
Arie Skliarouk



0

システム上のブリッジで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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.