Fedoraの新しいファイアウォールでSambaを使用可能にする

Fedora 18 あたりでファイアウォール機能が iptables から firewalld に変わりました。
OSをアップグレードしたら、今まで動いていたSambaが動かなくなってしまったので、とりあえずfirewalldを止めていたのですが(おい)

# service firewalld stop  (非推奨)

さっきSambaを許可する方法がわかったので、メモしておきます。ちな、コマンドラインです。
参考:FedoraProject FirewallD/jp

・firewalldの状態を調べる

# firewall-cmd --state
running

firewalldではいくつかのゾーンが定義されており、それごとにアクセス許可/拒否を設定することができます。Windowsインターネットオプションの「ローカルイントラネット」「信頼済みサイト」みたいなものです。
eth0などのネットワークインタフェースごとにゾーンを切り替えて使えたりするようです。

・今のゾーンは何かな?

# firewall-cmd --get-active-zone
public
  interfaces: eth0

デフォルトのゾーンは"public"です。

firewallのアクセス許可/拒否はサービスごとに簡単に設定することができます。

・利用可能なサービスは?

# firewall-cmd --get-services
cluster-suite kpasswd bacula-client smtp ipp radius mysql ms-wbt bacula transmission-client ftp mdns samba pmproxy dhcpv6-client rpc-bind ldaps https ldap dhcp imaps samba-client vnc-server http dns pmwebapi ntp kerberos telnet libvirt openvpn ssh pmwebapis pmcd ipsec postgresql ipp-client proxy-dhcp amanda-client mountd tftp-client dhcpv6 nfs tftp pop3s libvirt-tls

・現在有効なサービスは?

# firewall-cmd --list-services
mdns dhcpv6-client ssh

sambaが有効になっていないので、追加します。
iptablesでは設定を変更した後サービスの再起動が必要でしたが、firewalld は再起動が不要です。このため設定を変更する際に通信中のセッションを切らずに済みます。*1



・Sambaを現在のゾーンで有効にする

# firewall-cmd --add-service=samba
success
# firewall-cmd --list-services
samba mdns dhcpv6-client ssh

このままだとサービスを再起動したときに設定が失われてしまうので、永続的な設定もしておきます。

# firewall-cmd --permanent --add-service=samba
success

2013/8/31追記
追加で特定のポートを開きたいときは以下のようにします。

# firewall-cmd --add-port=8080/tcp
success
# firewall-cmd --list-ports
8080/tcp

*1:2014/12/26追記 iptablesの再起動が必要なのは設定ファイルを変更した時で、コマンドから設定変更した場合は再起動不要です。また大抵のルールはすでに確立した接続を常に許可するようになっておりiptablesの再起動では接続が切れないようです。また、firewalldは内部でiptablesを呼んでいるため本質的に同じ動きです。と、まあ、全体的に微妙な記述のため削除します。