ebtables ip/ip6 マッチの不具合
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu Japanese Kaizen Project |
New
|
Undecided
|
Unassigned |
Bug Description
ebtables (netfilter) の不具合についてご報告いたします。
ebtables の出力するログの内容が明らかに
Ubuntu 12.04 にて不具合を確認しました。
以下に例を示します。
前提:事前にブリッジ インターフェイス br0 を作成し、eth0 を参加させています。
# ebtables -A OUTPUT -o eth0 --log-prefix "ebtables:" --log-ip --log-ip6 -j ACCEPT
適当に br0 からパケットを送信し、
プライベートに関わる箇所は加工
$ dmesg | grep ebtables
[5243446.752080] ebtables: IN= OUT=eth0 MAC source = 00:01:c0:09:b1:4f MAC dest = 01:00:5e:00:00:01 proto = 0x0800 IP SRC=8.0.70.192 IP DST=0.32.0.0, IP tos=0x00, IP proto=9
[5243446.752155] ebtables: IN= OUT=eth0 MAC source = 00:01:c0:09:b1:4f MAC dest = 33:33:00:00:00:01 proto = 0x86dd IPv6 SRC=c009:
この 2 つのパケットの正体は何かと申し
前者が IPv4 マルチキャストの IGMPv2 Membership Query、後者が IPv6 マルチキャストの Multicast Listener Query です。
IPv4 の正しい内容は mac-dst=
IPv6 の正しい内容は mac-dst=
となるはずなのですが、
さて、ここで IPv6 のほうのログ内容に着目してみましょう。
SRC=c009:
DST=0000:
この中で、c009:b14f: は、mac-src=
次の :6000:0000:
よく観察すると、
また、DST の最後の :ff02 は正しい送信先アドレスの一部と
ログ出力の不具合については、カーネル ソースの net/bridge/
この中で、次の行で L3 の先頭アドレスを取得しているの
ih = skb_header_
それではどこをどのように修正す
加えて、ebtables の ip/ip6 マッチについても、
上述の「ずれた」
# ebtables -A OUTPUT -o eth0 -d 01:00:5e:00:00:01 -p ip --ip-src 8.0.70.192 --ip-dst 0.32.0.0 --ip-proto 9 -j DROP
こちらの原因は net/bridge/
および同 ebt_ip6.c の ebt_ip6_mt 関数でしょうか。
今のところ filter テーブルの OUTPUT チェーンのみで実際にそのような