firewalld: FirewallBackend

vpn server(openSUSE: Tumbleweed)のfirewalldを更新したら内部ネットワーク経由でDNSサーバに接続ができなくなった。周辺機器の状況を見るにospfの接続ができていない。切り分けでospfを有効化してみる。

# firewall-cmd --zone=dmz --add-protocol=89
# firewall-cmd --zone=dmz --add-protocol=89 --permanent

ospfが復帰。direct-ruleで設定しているはずなのだが・・・

とりあえず、vpn serverのospfが復旧したのでvpn serverへのssh接続が可能になる。firewalldのトラブルはssh等のリモートプロトコルに影響する所が怖い。遠隔地のサーバにはそのうちシリアルケーブルとか繋ぎたい・・・

ospfは復旧したがDNSサーバへの接続は復旧しない。端末からのpingは応答があり、ルーティングには問題が無い模様。firewalldのruleを見直して、deny系を一時的に無効化して見るも効果が無い。direct-rule全般がうまく動いてない感じ。firewalldのconfを見てみる。

# FirewallBackend
# Selects the firewall backend implementation.
# Choices are:
# - nftables (default)
# - iptables (iptables, ip6tables, ebtables and ipset)
FirewallBackend=nftables

お、バックエンドがnftablesに変更されてる。前までは多分iptablesだったよな。openSUSEもついにnftablesがデフォルトになるとは感慨深い。。。iptablesに戻してみるか。

# FirewallBackend
# Selects the firewall backend implementation.
# Choices are:
# - nftables (default)
# - iptables (iptables, ip6tables, ebtables and ipset)
#FirewallBackend=nftables
FirewallBackend=iptables
# systemctl restart firewalld

DNSへの接続は・・・復旧!

動き的にはdirect-ruleでACCEPTしても処理が終わらず、zoneの許可設定やtargetまで進んでいるっぽい。direct-rule使うとしたらdeny系で、許可はrich ruleやserviceで行う必要があるのだろう。とりあえず、iptablesに変えて凌ぐが流れには逆らわず、nftablesでの処理を検討しないと。zoneをtrustedにするあるいはtargetをdefault(Reject)からacceptに変える手もあるが、direct-ruleへの依存を減らすべきなのだろう。

openSUSE(LEAP: 15.2)を見たが、こちらはまだFirewallBackendの設定がconfに入っていない。次の15.3あたりからかな、気を付けないと。

冒頭のospfをserviceで定義する場合、protocol=89で定義する。

細かなフォーマットはfirewalld.orgを参照。