在 Linux + Oracle 数据库 环境中配置防火墙,核心目标是:
只开放 Oracle 需要的端口,并限制可访问的 IP。
下面分 firewalld(CentOS/RHEL 7+) 和 iptables(老版本) 两种常见情况说明。
| 用途 | 默认端口 |
|---|---|
| Oracle 监听(Listener) | 1521 |
| EM Express(12c+) | 5500 |
| 实例 VIP / RAC | 可选 |
| 自定义监听端口 | 视配置 |
如果不确定,查看:
lsnrctl status
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
例如只允许 192.168.1.100:
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.1.100"
port protocol="tcp" port="1521" accept'
firewall-cmd --reload
firewall-cmd --list-all
iptables -A INPUT -p tcp --dport 1521 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 1521 -j ACCEPT
iptables -A INPUT -p tcp --dport 1521 -j DROP
service iptables save
listener.ora 示例:
LISTENER =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
SYSDBA 远程登录❌ 防火墙开了,但监听没起
❌ SELinux 拦截(可临时测试):
setenforce 0
正式环境应配置 SELinux 而非关闭。
✅ 防火墙开放 1521
✅ 只允许业务 IP
✅ 监听正常
✅ 本地能连,远程能连
✅ 非必要端口不开放
如果你能告诉我:
我可以给你 精准命令模板。