解决 Oracle 监听外网 IP

腾讯云注册的服务器,在服务器里使用nmap -Pn 127.0.0.1 -p 1521 ,显示是打开的,但在把IP地址改为外网的IP地址就显示为关闭,这个是什么原因,下面为外网IP,

使用127.0.0.1,那个状态由closed 变为open,变为正常,以下是处理办法。

这种情况的核心原因是 Oracle 监听器仅监听了本地回环地址(127.0.0.1),没有监听服务器的外网 IP 地址,导致外部(包括外网 IP 自身)无法通过外网网 IP 访问 1521 端口。具体分析如下:

1. 监听器的"监听地址"限制

Oracle 监听器(Listener)启动时会绑定特定的 IP 地址,默认可能只绑定 127.0.0.1(本地回环地址),这意味着:

  • 只有通过 127.0.0.1:1521 访问时,监听器才会响应(所以 nmap 127.0.0.1 -p 1521 显示 open)。

  • 当使用服务器的外网 IP(或内网 IP)访问 外网IP:1521 时,由于监听器没有绑定该 IP,端口处于"无服务监听"状态,因此 nmap 扫描显示 closed

2. 验证监听器的监听地址

在服务器本地执行 lsnrctl status 命令,查看监听器的"监听地址"信息,例如:

复制代码
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))  # 仅监听本地回环

如果 HOST 字段是 127.0.0.1,则确认监听器未绑定外网 IP。

3. 解决方法:让监听器监听外网 IP

需修改监听器配置文件(listener.ora),让其绑定服务器的外网 IP 或所有 IP(0.0.0.0):

步骤 1:找到 listener.ora 文件
  • 路径通常为:$ORACLE_HOME/network/admin/listener.ora(Linux/Unix)或 %ORACLE_HOME%\network\admin\listener.ora(Windows)。

  • 若找不到,可通过 lsnrctl status 命令的输出查看配置文件路径。

步骤 2:修改监听器配置

打开 listener.ora,找到监听器的 ADDRESS 配置,将 HOST 改为服务器的外网 IP 或 0.0.0.0(表示监听所有可用 IP):

复制代码
# 原配置(可能只监听127.0.0.1)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )

# 修改后(监听所有IP)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))  # HOST改为0.0.0.0
    )
  )
步骤 3:重启监听器
复制代码
# 停止监听器
lsnrctl stop

# 启动监听器(使配置生效)
lsnrctl start
步骤 4:验证

再次执行 lsnrctl status,确认监听地址变为 0.0.0.0 或外网 IP,例如:

复制代码
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))  # 监听所有IP

此时再用外网 IP 扫描 nmap -Pn 外网IP -p 1521,应该会显示 open

额外注意:腾讯云防火墙规则

即使监听器配置正确,仍需确保腾讯云轻量云的 防火墙规则已允许 1521 端口的入站访问 (来源设为 0.0.0.0/0,协议 TCP),否则端口可能被云厂商防火墙拦截(显示 filtered 而非 closed,但需提前确认)。

通过以上步骤,即可解决"本地能访问、外网 IP 扫描显示关闭"的问题。

辅助说明:

nmap 命令,需要下载一下安装后才能正常使用。

如果提示 "找不到 nmap 命令",说明你的系统中没有安装 nmap 工具,需要先安装它。以下是不同系统的安装方法:

1. Windows 系统

  • 下载安装包:访问 nmap 官网(https://nmap.org/download.html),选择适合 Windows 的版本(如nmap-7.94-setup.exe)。
  • 安装:双击安装包,按提示完成安装(建议勾选 "Add Nmap to the system PATH for all users",方便在命令行直接使用nmap命令)。
  • 验证:安装完成后,打开 CMD 或 PowerShell,输入nmap --version,若显示版本信息则安装成功。

2. Linux 系统(以 Ubuntu/Debian 为例)

打开终端,执行以下命令:

复制代码
sudo apt update  # 更新软件源
sudo apt install nmap  # 安装nmap

验证:输入nmap --version,显示版本信息即成功。

3. macOS 系统

  • 方法 1(使用 Homebrew):

    先安装 Homebrew(若未安装,终端执行

    复制代码
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    ),再安装 nmap:

    复制代码
    brew install nmap

    方法 2(直接下载安装包):从 nmap 官网下载 macOS 版本,按提示安装。

安装完成后,再执行nmap -Pn 目标IP -p 端口即可进行端口扫描。

相关推荐
Dovis(誓平步青云)1 分钟前
《C/C+++ Boost 轻量级搜索引擎实战:架构流程、技术栈与工程落地指南——HTML文件的清洗(上篇)》
开发语言·数据库·c++·搜索引擎·开源
蚁库2 小时前
Oracle 12c + ASM + UDEV 实战教程:从磁盘规划到日常管理,10节视频完整通关
数据库·oracle
云和恩墨11 小时前
数据库一体机简史:从ODA到zData X,命名之中的玄机
数据库·vr
数据库小学妹12 小时前
KES是什么?国产数据库技术架构、核心能力与选型实战解析
数据库·经验分享·架构·国产数据库·数据库选型·信创数据库
Database_Cool_12 小时前
向量检索加速首选:阿里云 Tair 内置向量能力毫秒级召回
数据库·阿里云
强健的石头13 小时前
django文件对象是什么?
数据库·django·sqlite
ClouGence14 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql
烟漠河洛14 小时前
线上事故复盘:Redis幂等性设计边界没覆盖跨状态请求,订单状态机直接崩了
数据库·redis·缓存
Minxinbb14 小时前
TDSQL for MySQL 服务器重启操作
数据库·mysql·dba
SelectDB14 小时前
Doris 实战:用 Colocate Join 消除 Shuffle,AB 指标计算性能提升 145 倍 🚀
数据库·性能优化·ab测试