ブリッジポート・デバイスとufwの設定

インターネットを検索すれば、kvmに関する記事をたくさん見つけることができる。

ubuntu系に使われているufwというインバウンド型の簡易ファイアウォールは、標準的なオペレーションではブリッジに関するルールが設定できないので設定ファイル/etc/ufw/before.rulesをエディタでゴニョゴニョ編集しろとかいう話も読んだことがあるであろう。

ありがちな解説では、/etc/ufw/before.rules

# br0 forward
-A ufw-before-input -i tap0 -j ACCEPT
-A ufw-before-input -i br0  -j ACCEPT
-A ufw-before-input -i virbr0 -j ACCEPT

-A ufw-before-forward -i tap0 -j ACCEPT
-A ufw-before-forward -i br0  -j ACCEPT
-A ufw-before-forward -i virbr0 -j ACCEPT

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

などを加筆するという解説があるが、これだけだとbr0に対してmDNS(UDP 5353)がブロックされているようだ。

そこで、/etc/ufw/before.rules

# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT

とか書いてあるところの下に、

-A ufw-before-input -i br0 -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT

を一行追加してufwをリスタートさせてみた。

mDNSのブロックに関するログはなくなった様子だったが、こんどはIPv6でmDNSに関するブロックが大量に記録されていることにきがついた。

IPv6に関するUFWの設定ファイルは/etc/ufw/before6.rulesのようである。とりあえずエディタに読み込ませて眺めてみると・・・

# allow MULTICAST mDNS for service discovery
-A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT

という行があったので

-A ufw6-before-input -i br0 -p udp -d ff02::fb --dport 5353 -j ACCEPT

とか書き足して、ufwをリスタートさせてみたがブロックのログはなくならなかった。
どうやらIPv6のパケットをブリッジへ流せない設定になっているのであろう。

思案してみても分からなかったので、とりあえず/etc/ufw/before.rulesの編集をまねっこして/etc/ufw/before6.rules

# br0 forward
-A ufw6-before-input -i tap0 -j ACCEPT
-A ufw6-before-input -i br0  -j ACCEPT
-A ufw6-before-input -i virbr0 -j ACCEPT

-A ufw6-before-forward -i tap0 -j ACCEPT
-A ufw6-before-forward -i br0  -j ACCEPT
-A ufw6-before-forward -i virbr0 -j ACCEPT

とか書き足してufwをリスタートさせてみた。
今度はmDNSに関するブロックが記録されなくなったようである。

でも、設定が正しいかどうか深く検証していない。
とりあえず、まぁ、通信できるようになったので、でめたし。でめたし。