如何查服务器IP地址与端口?

查看服务器IP地址常用命令:ifconfig(旧系统)或ip addr(Linux);ipconfig(Windows),查看端口信息:netstat -tulnss -tuln(Linux);netstat -ano(Windows),公网IP可用curl ifconfig.me

准确获取服务器的IP地址和正在监听的端口信息,是服务器管理、网络调试和安全审计的基础操作,不同操作系统使用的命令不同,以下是Linux/Unix系统和Windows系统的详细方法:

查看服务器IP地址

  • Linux/Unix 系统 (包括 CentOS, Ubuntu, Debian, macOS 终端等):

    1. ifconfig (传统命令,部分新系统可能需安装 net-tools):
      ifconfig
      • 在输出结果中,找到你正在使用的网络接口(如 eth0, ens33, enp0s3, wlan0 等)。
      • 对应的 inetinet addr 后面的地址就是该接口的IPv4地址(168.1.100)。
      • inet6 后面的地址是IPv6地址。
    2. ip (现代推荐命令):
      ip addr show
      # 或简写
      ip a
      • 同样查找对应的网络接口。
      • inet 后面是IPv4地址,inet6 后面是IPv6地址,此命令输出更清晰,信息更全。
    3. hostname (查看主机名和IP):
      hostname -I  # 显示所有非回环(loopback)网络接口的IP地址 (通常只显示IPv4)
  • Windows 系统:

    1. ipconfig (最常用):
      打开命令提示符 (cmd) 或 PowerShell,输入:

      ipconfig
      • 在输出结果中,找到你正在使用的网络适配器(如 “以太网适配器 以太网”, “无线局域网适配器 WLAN”)。
      • IPv4 地址 后面的值就是该适配器的IPv4地址(168.1.101)。
      • 如需查看所有详细信息,可使用:
        ipconfig /all

查看服务器端口监听和连接状态

  • Linux/Unix 系统:

    1. netstat (传统命令,功能强大,部分新系统可能需安装 net-tools):
      • 查看所有监听端口:
        netstat -tuln
        • -t: 显示 TCP 端口。
        • -u: 显示 UDP 端口。
        • -l: 仅显示监听 (LISTEN) 状态的套接字(服务端口)。
        • -n: 以数字形式显示地址和端口号(不解析主机名和服务名),速度更快。
      • 查看所有连接 (包括监听、已建立连接等):
        netstat -tunap
        • -a: 显示所有连接和监听端口。
        • -p: 显示进程标识符 (PID)进程名称(需要管理员/root权限才能查看所有进程信息)
      • 输出解读:
        • Proto: 协议 (tcp, udp)。
        • Recv-Q, Send-Q: 接收和发送队列。
        • Local Address: 本地地址和端口 (格式 IP:Port)。0.0.0 或 表示监听所有可用IP。
        • Foreign Address: 远程地址和端口 (对端)。
        • State: 连接状态 (如 LISTEN, ESTABLISHED, TIME_WAIT 等)。
        • PID/Program name: 使用该端口的进程ID和名称。
    2. ss (Socket Statistics, 现代推荐命令,netstat 的替代品,更快更高效):
      • 查看所有监听端口:
        ss -tuln

        (参数含义同 netstat -tuln)

      • 查看所有连接:
        ss -tunap

        (参数含义同 netstat -tunap)

      • 输出格式与 netstat 类似,但更简洁高效。
    3. lsof (List Open Files, 功能强大,可查看进程打开的文件/端口):
      • 查看所有监听在TCP端口80的进程:
        lsof -i TCP:80
      • 查看所有网络连接:
        lsof -i
      • 查看特定进程(如PID 1234)打开的网络连接:
        lsof -p 1234 -i
      • 输出包含:命令(COMMAND)、PID、用户(USER)、文件描述符(FD)、类型(TYPE)、设备(DEVICE)、大小/偏移(SIZE/OFF)、节点(NODE)、名称(NAME – 包含IP:Port信息)。
  • Windows 系统:

    1. netstat (主要命令):
      • 查看所有监听端口:
        netstat -ano | findstr /i "listening"
        • -a: 显示所有连接和监听端口。
        • -n: 以数字形式显示地址和端口号。
        • -o: 显示进程标识符 (PID)
        • | findstr /i "listening": 管道符过滤,只显示包含 “LISTENING” (不区分大小写 /i) 的行。
      • 查看所有连接 (包括监听、已建立连接等):
        netstat -ano
      • 输出解读:
        • Proto: 协议 (TCP, UDP)。
        • Local Address: 本地地址和端口 (格式 IP:Port)。0.0.0[::] 表示监听所有IP。
        • Foreign Address: 远程地址和端口 (对端)。
        • State: 连接状态 (如 LISTENING, ESTABLISHED, TIME_WAIT, CLOSE_WAIT 等)。
        • PID: 使用该端口的进程标识符 (PID)
      • 根据PID查找进程名:
        1. 打开任务管理器 (Ctrl+Shift+Esc)。
        2. 切换到 “详细信息” 选项卡。
        3. 找到对应PID的进程,查看 “名称” 列,或者使用命令:
          tasklist | findstr "PID号"  # tasklist | findstr "1234"
    2. Get-NetTCPConnection (PowerShell 命令,更现代):
      在 PowerShell 中运行:

      Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | Format-Table -AutoSize

      输出包含本地地址/端口、远程地址/端口、状态和进程PID,格式更规整。

重要提示与专业建议

  1. 权限要求: 查看其他用户进程或系统进程的端口信息(特别是 -p 参数或 -o 参数显示PID时),通常需要管理员权限 (sudo / root 在 Linux, 以管理员身份运行 在 Windows)。
  2. netstat vs ss / lsof: 在 Linux 上,sslsof 是更现代、更高效的工具,netstat 已被标记为过时(obsolete),但在许多系统上仍可用,新脚本建议优先使用 sslsof
  3. 端口状态解读:
    • LISTEN / LISTENING: 服务正在该端口上等待连接请求,这是你通常需要关注的服务器端口状态。
    • ESTABLISHED: 一个活动的网络连接已成功建立。
    • TIME_WAIT / CLOSE_WAIT: 连接正在关闭过程中。
  4. 防火墙影响: 即使服务在监听某个端口,防火墙规则也可能阻止外部访问,检查防火墙配置 (iptables, nftables, firewalld 在 Linux; Windows Defender 防火墙在 Windows) 是必要的。
  5. 端口冲突: 如果两个程序试图监听同一个IP地址的同一个端口,后启动的程序通常会失败,使用上述命令可快速定位哪个进程占用了特定端口。
  6. 安全审计: 定期检查服务器监听的端口是安全最佳实践,关闭不必要的服务和端口能有效减少攻击面,对于不熟悉的监听端口,务必调查其来源和用途。
  7. 外部IP: 上述命令查看的是服务器的本地/内网IP,要查看服务器在互联网上的公网IP,通常需要从外部访问特定服务(如访问 ipinfo.io/ipifconfig.me 等网站),或在云服务商的控制台查看分配给实例的公网IP,本地命令无法直接获取公网IP(除非服务器直接配置了公网IP且是主接口)。

掌握这些命令是服务器管理和网络故障排查的核心技能,务必在理解其输出含义的基础上进行操作,并注意权限和安全风险。


引用与参考来源说明

  • Linux ip 命令文档: man ip (终端) 或 https://man7.org/linux/man-pages/man8/ip.8.html
  • Linux ss 命令文档: man ss (终端) 或 https://man7.org/linux/man-pages/man8/ss.8.html
  • Linux netstat 命令文档 (过时但参考): man netstat (终端) 或 https://man7.org/linux/man-pages/man8/netstat.8.html
  • Linux lsof 命令文档: man lsof (终端) 或 https://linux.die.net/man/8/lsof
  • Windows ipconfig 命令文档: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ipconfig
  • Windows netstat 命令文档: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/netstat
  • Windows Get-NetTCPConnection 文档: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-nettcpconnection
  • IANA 端口分配列表: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml (用于查询知名端口用途)
  • TCP 状态图 (理解状态含义): RFC 793 或网络教材 (如 https://en.wikipedia.org/wiki/Transmission_Control_Protocol#/media/File:Tcp_state_diagram_fixed.svg)

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4555.html

(0)
酷番叔酷番叔
上一篇 2025年6月15日 09:29
下一篇 2025年6月15日 10:16

相关推荐

  • 如何快速检查SVN服务状态?

    Subversion(SVN)是一种常用的版本控制系统,其服务端需保持运行状态才能正常访问仓库,以下是针对 Windows 和 Linux 系统的详细检查方法,涵盖命令行与图形界面操作,Windows 系统检查方法方法1:通过服务管理器(图形界面)按 Win + R 输入 services.msc 打开服务管理……

    2025年6月27日
    1700
  • 如何进入Windows PE命令行?

    当你的 Windows 系统无法正常启动或需要进行深度维护(如修复引导记录、分区管理、备份数据、运行诊断工具)时,Windows 预安装环境 (Windows PE) 提供的命令行界面就是你的救星,它本质上是一个轻量级的 Windows 版本,运行在内存中,让你能在主系统“罢工”时执行关键操作,以下是进入 PE……

    2025年7月12日
    900
  • 如何关闭TCP 8080端口入站?

    操作前重要警告风险评估:错误关闭端口可能导致服务中断、系统暴露于网络攻击,仅关闭确认无用的端口,权限要求:需管理员/root权限执行命令,备份配置(强烈建议):# Windowsnetsh advfirewall export "C:\firewall_backup.wfw"# Linux……

    2025年6月21日
    1200
  • Linux crontab错误退出会怎样?

    默认编辑器(vi/vim)的退出方式当输入crontab -e后,系统通常使用vi或vim编辑器(取决于系统配置),操作流程如下:保存并退出(推荐)按 Esc 键确保退出编辑模式,输入 :wq(即 write + quit),按 Enter 执行,若需强制保存(如只读文件):输入 :wq!,不保存退出按 Esc……

    2025年7月4日
    900
  • 哪一刻让你觉得最崩溃?

    在Visual C++(VC)开发环境中执行CMD命令是系统级编程的常见需求,但需严格遵循安全规范,以下是三种主流方法及最佳实践:基础方法:system() 函数 // 执行dir命令并阻塞程序 int result = system("dir C:\\"); // 检查返回值(非零表示错误……

    2025年7月9日
    900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信