作業ノート

様々なまとめ、雑感など

RHEL 7.1でOracle 12cのためのfirewalldの設定をする

仕事で、Oracle 12c Enterprise EditionをRHEL7.1にインストールした。 Oracleでは通常、Oracleのリスナーで1521、EM Expressで5500のポートを使用する。

RHEL6のときはiptablesの設定をしていたが、RHEL7からはfirewalldに変更されたので、その設定方法を調べた。

方法としては2つ。

1つは、firewall-cmdでzoneに対して該当ポートの使用を許可する方法。

rootでログインしているときに、firewall-cmd

# firewall-cmd --zone=public --add-port=5500/tcp --permanent
# firewall-cmd --zone=public --add-port=1521/tcp --permanent

このように該当のポートを特定のzoneに対して許可したあと

# firewall-cmd --reload

設定を反映する。permanentオプションはその設定を永続化させるもので、再起動しても設定内容は有効になる。

もう1つは、oracleのための設定ファイルを作成して、それをzoneに設定する方法。

rootでログインしているときに

# cat <<'EOT' > /etc/firewalld/services/oracle12c.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Oracle 12c</short>
  <description>Oracle Database 12c Release 1 Enterprise Edition</description>
  <port protocol="tcp" port="1521"/>
  <port protocol="tcp" port="5500"/>
</service>
EOT

このような設定ファイルを作成する。firewall-cmdでサービスを参照すると

# firewall-cmd --permanent --get-services
RH-Satellite-6 ... openvpn oracle12c pmcd ... wbem-https

サービスの一覧にoracle12cと表示される。作成したファイル名がそのままサービス名になる。

そして、firewall-cmd

# firewall-cmd --zone=public --add-service=oracle12c --permanent

作成したサービズをzoneに追加し

# firewall-cmd --reload

設定を反映する。zoneのステータスを参照すると

# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: ens1
  sources:
  services: dhcpv6-client oracle12c ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

先ほど設定したサービスが設定されていることが確認できる。

参考