CentOS6 → 7 になって大きな変更点の一つであるのがDefaultアクセス制御方式がiptablesからfirewalldに変わったことです。もちろんiptablesが使えないわけではありません。手間はかかりますが、インストールしたらiptablesも使えます。また、その場合はfirewalldは無効にします。₍両方使っても意味がないので₎
CentOS7ではfirewalldがDefaultで有効状態なっているとのことですが、私の場合₍「Opscode centos-7.0」のvagrantのBoxを使っている₎はなぜか最初は無効状態でした。
ということで、firewalldの起動、停止、追加などを調べてみました。
###自動起動設定になっているかの確認
# systemctl is-enabled firewalld
###自動起動にする
# systemctl enable firewalld.service
###起動させる
# systemctl start firewalld.service
###リストを確認
# firewall-cmd --list-all
public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
###ルール追加
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --zone=public --add-service=http --permanent
--permanent オプションはOSの再起動時にも有効にするためのものです。また、すぐ反映はしなくなり、以下の手順で行うreloadをしてあげる必要があります。もし、つけない場合はreloadしなくても即反映はしますが、OS再起動したらなくなってしまいます。
上記の例、一般的にport番号が80である「http」をサービス名で追加を行っています。
firewall-cmd --zone=public --add-port=80/tcp --permanent とport指定で追加をするのと同じです。
###リロード
# firewall-cmd --reload
# firewall-cmd --list-all
public (default, active)
interfaces: enp0s3
sources:
services: dhcpv6-client http ssh
ports: 8080/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
###ルール削除
# firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# firewall-cmd --zone=public --remove-service=http --permanent
※OS再起動時にも反映されるように「--permanent」オプションを忘れないようにしましょう。