《非Oracle Linux下安装Oracle 19c》曾提到了关闭防火墙,
[root@bisal ~]# systemctl stop firewalld.service[root@bisal ~]# systemctl disable firewalld.serviceRemoved symlink etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
但是实际上,这是非常不安全的做法,正确的做法,应该是让防火墙来限制对应用的合理访问。
在监听启动的情况下,应用的客户端得到的错误是ORA12170,基本可以肯定是服务器没有开放1521端口(默认),
ORA-12170:TNS:连接超时
防火墙增加1521端口的配置操作,在Linux 6和7中,有所不同。
Linux 6
如果需要让防火墙允许1521端口访问,用root账号编辑/etc/sysconfig/iptables,增加以下内容,
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
重启iptables,生效配置,如果要重启依然有效,执行service iptables save,
[root@bisal ~]# service iptables restartiptables: Applying firewall rules: [ OK ]
使用iptable -L -n,可以看到当前生效的策略,
P.S. 或者service iptables status
[root@bisal ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationDROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 13...ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:1521
如果需要系统重启后生效,开机自启动,或者自动关闭,
开启:chkconfig iptables on关闭:chkconfig iptables off
如果需要系统即时生效,系统重启后失效,
开启:service iptables start关闭:service iptables stop
Linux 7
首先执行firewall-cmd,查看当前策略,默认是空的,即不允许其他端口的访问,
[root@bisal]# firewall-cmd --zone=public --list-ports
如果需要让防火墙允许1521端口访问,执行以下操作,表示将1521端口加入public(这个zone是防火墙新特性,他的作用就是定义了网络区域网络连接的可信等级)区域中,permanent参数表示永久生效,即重启的时候不会失效,
[root@bisal]# firewall-cmd --zone=public --add-port=1521/tcp --permanentsuccess
得重新加载防火墙配置,更新防火墙规则,
[root@bisal]# firewall-cmd --reloadsuccess
此时查看策略,1521端口访问策略已经生效,
[root@bisal]# firewall-cmd --zone=public --list-ports1521/tcp
如果需要系统重启后生效,开机自启动,或者自动关闭,
开启:systemctl enable firewalld关闭:systemctl disable firewalld
如果需要系统即时生效,系统重启后失效,
开启:systemctl start firewalld关闭:systemctl stop firewalld
查看开机是否启动防火墙,
systemctl is-enabled firewalld
查看防火墙状态,
systemctl status firewalld
比较来说,Linux 7的防火墙配置要更简单,尤其是显示策略的时候,直接返回“端口/协议类型”,例如“1521/tcp”,更加直观,这就是技术演进。
近期热文:
《英超梦幻之行》




