ファイアウォール(iptables)がブリッジ(brctl)に干渉するのはなぜですか?


11

br02つのインターフェースに「接続」されたブリッジをセットアップしました。

  • eth0、実際のLANに接続されている物理インターフェース、
  • vnet0、KVM仮想インターフェース(Windows VMに接続)。

そして、私はフォワードチェーンにこの単一のファイアウォールルールを持っています:

iptables -A FORWARD -j REJECT

これで、機能している唯一のpingは、VMからホストへのものです。

br0インターフェイスは、私のホストマシンのIPアドレスを所有しています。eth0そして、vnet0ビューのホストの観点から、任意のIPを「所有」しません。Windows VMには静的IP構成があります。

私のiptablesルールをに変更した場合ACCEPT(またはさらに制限の厳しいものを使用した場合iptables -A FORWARD -o br0 -j ACCEPT)、すべてが正常に機能します!(つまり、VMから任意のLANマシンにpingを実行でき、その逆も可能です)。

すべてのIP転送カーネルオプションが無効になります(などnet.ipv4.ip_forward = 0)。

では、netfilterファイアウォールは、有効にさえされていないものをどのようにブロックできるのでしょうか。

さらに、VM-LANトラフィックはeth0、およびのみを意味しvnet0ます。それでも、-o br0「作品」を使用してFORWARDトラフィックを許可するように見えます(ただし、私は慎重にチェックしませんでした)。


このU&Lの私のAを見てください。Q:ブリッジを使用する場合の設定
slm

1
出力の何sysctl -a | grep bridge-nf
ステファンChazelas

StéphaneChazelas@ net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-filter-vlan-tagged = 0 net.bridge.bridge-nf-filter-pppoe-tagged = 0
Totor

回答:


10

StéphaneChazelasからのコメントは、答えのヒントを提供します。

Bridge-nfのよくある質問によると、bridge-nfはiptables、ip6tables、arptablesがブリッジされたトラフィックを確認できるようにします。

カーネルバージョン2.6.1以降、bridge-nf動作制御用の5つのsysctlエントリがあります

  • bridge-nf-call-arptables -ブリッジされたARPトラフィックをarptablesのFORWARDチェーンに渡します。
  • bridge-nf-call-iptables -ブリッジされたIPv4トラフィックをiptablesのチェーンに渡します。
  • bridge-nf-call-ip6tables -ブリッジされたIPv6トラフィックをip6tablesのチェーンに渡します。
  • bridge-nf-filter-vlan-tagged -ブリッジされたVLANタグ付きARP / IPトラフィックをarptables / iptablesに渡します。
  • net.bridge.bridge-nf-filter-pppoe-tagged -ブリッジされたpppoeタグ付きIP / IPv6トラフィックを{ip、ip6}テーブルに渡す

netfilterファイアウォールブロッキングを無効にするには、次のようにします。

# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0

4
Linux 3.18以降、br_netfilterモジュールをロードしないことで、iptablesがブリッジからのパケットを処理する機能を無効にすることができます。モジュールがロードされていないことは、/proc/sys/net/bridge/エントリがないことも意味します。
Lekensteyn

そして、Linuxは5.3カーネルので、この機能は、名前空間の代わりに、グローバルごとになります。
AB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.