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を参照。