前回、お話した各種サービスの起動設定が systemd になって変更されているばかりか、 ファイアウォールの設定も違えば、ネットワークの設定も NetworkManager に統合されていると知るに至って、 いよいよこれまでわずかばかりに蓄積されていた知識が崩壊 orz
めちゃめちゃ時間を費やしています (T-T)
これまでの CentOS では、 /etc/sysconfig/iptables をいじくるなり、 iptables コマンドを使って設定していたわけですが、 7 ではファイヤウォールが firewalld というサービスに変更されており、 firewall-cmd と言うコマンドで設定を変更する必要があります。
例のごとく深くはまだ理解できてません orz
ということで、ひとまず今回は samba と bind のための穴を開ける方法のみメモっときます。
firewalld では「 zone (ゾーン)」という概念があり、 このゾーンごとにポリシーを設定し、切り替えて使うことができます(できるそうです)。
当然、デフォルトのゾーンというのが存在し、 今回はネットワークインターフェイスも一つしかない自宅の内部サーバーなので、 ゾーンを切り替えたりすることはあり得ないので、 このデフォルトのゾーン「 public 」の設定を変更すると言う方針で設定しました。
この前提を元にすると、特定のサービスのためにファイアウォールに穴を開けるのは至って簡単です。
まずは、
# /usr/bin/firewall-cmd --zone=public --list-allとする( root 権限で)と今、 public ゾーンの設定が表示されます。
表示される内容に「 service: 〜 」という行があると思いますが、 特定のサービスのためにファイアウォールの設定を変更するには、ここにサービスを加えてやればいいのです。
加えられるサービスは、
# /usr/bin/firewall-cmd --get-serviceとすれば表示されます。
幸い samba, samba-client, dns と言うのがあるので、 今回の目的を達するためには、
# /usr/bin/firewall-cmd --permanent --add-service=samba --add-service=samba-client --add-service=dnsとすればいいのですが、ここで一つ注意 (^^)b
上記のコマンドでは、恒久的にデフォルトのゾーンに --add-service で指定された サービスのためのポートを開放します。 このためこの設定を反映させるには、
# /usr/bin/firewall-cmd --reloadとする必要があります。
ちなみにサービスを登録するときのコマンドで --permanent を省くと、 即時に設定が反映されますが、再起動時には消えてしまいます。
ひとまずこれでうちでは samba と bind の通信をはじかなくなりました。
えぇコマンドを叩いてるだけで細かいことはまったく理解できてませんが、 やらなければならないことがまだあるので先を急ぎます。
「 Red Hat Enterprise Linux 7 がやってきた」 ( ITpro より)
Ellinikonblue.com Weblog 「 Linux 備忘録: systemd の基本中の基本」