查看服务器端口和IP,最直接的办法就是登录服务器命令行,Linux用ip addr看IP、ss -tunlp看端口,Windows用ipconfig看IP、netstat -ano看端口。下面把常见场景拆开讲,每一步都给你能直接复制的命令。
Linux系统下查看IP与端口的核心命令
登录服务器后,第一件事是确认自己操作的是哪台机器、哪个网卡,很多运维事故都源于在错误的机器上执行了命令,所以先看IP再看端口,顺序别乱。
用ip addr查看本机所有IP
现网服务器普遍使用ip命令替代老旧的ifconfig,执行ip addr,输出里能看到lo回环接口、eth0或ens33这类物理网卡,以及docker0等虚拟网卡,每个网卡下方的inet字段就是IPv4地址,inet6是IPv6地址。
- 只看IPv4地址,过滤更干净:
ip -4 addr show - 一句话输出所有非回环IP:
hostname -I
有些云服务器默认开启了多块网卡,一块走公网流量,一块走内网互通,这时候你要分清eth0和eth1分别对应什么角色,别把内网IP当成公网IP报给别人。
查看公网出口IP的命令
服务器在内网环境里,ip addr看到的只是私网地址,想知道这台机器对外的公网IP,可以借助外部服务:
curl ifconfig.me直接回显公网IPcurl cip.cc返回更详细的IP归属地和运营商信息curl icanhazip.com同样简单直接
这些命令需要服务器有外网访问权限,如果服务器位于安全组隔离区,外网请求被禁,那就只能登录云控制台查看公网IP了,据工信部公开信息,国内主流云服务商均在其管理后台提供弹性公网IP的绑定关系查询。
查看端口监听状态的两种工具
端口排查用ss命令,它是netstat的现代替代品,执行速度更快,输出信息也更完整,两者的核心参数几乎一致,习惯了netstat的人无缝切换。
ss -tunlp四个参数分别代表TCP、UDP、不解析主机名、显示监听端口和对应进程netstat -tunlp部分老系统需要先安装net-tools工具包
输出结果里,State列显示LISTEN表示正在监听,0.0.0:8080表示所有网卡都监听8080端口,0.0.1:3306表示只允许本机访问,配合lsof -i:8080可以精确定位由哪个进程占用。
端口与进程的对应关系
拿到端口号后,想知道是什么程序在跑,用ss -tunlp已经能看到进程名和PID,如果只记得端口不记得其他信息,可以这样过滤:
ss -tunlp | grep 8080lsof -i:8080
lsof在部分精简系统里没有预装,先执行yum install lsof或apt install lsof装一下,行业共识认为,lsof在排查端口冲突时比netstat更直观,因为它直接显示进程的完整启动路径。
Windows服务器端口占用如何查看与排查
Windows Serve r的命令行工具跟Linux不同,但排查思路一致,核心命令就三条:ipconfig看IP,netstat看端口,tasklist看进程。
ipconfig查看IP和网卡信息
打开CMD或PowerShell,输入ipconfig可以看到所有网卡的IPv4地址、子网掩码和默认网关,需要更详细信息时用ipconfig /all,能看到MAC地址、DHCP是否启用、DNS服务器等参数。
多网卡服务器上,输出内容比较长,建议用ipconfig | findstr /i "IPv4"快速过滤出所有IP地址。
netstat查看端口监听状态
netstat -ano是Windows上最常用的端口查看命令,参数分解:
a显示所有连接和监听端口n用数字形式显示地址和端口,不做域名反向解析,速度更快o显示对应的进程PID
输出中,LISTENING表示正在监听,ESTABLISHED表示已建立连接,如果想针对特定端口过滤,用管道符配合findstr:netstat -ano | findstr "8080"
由PID反查进程名称
拿到PID后,任务管理器里就能看到进程名,但命令行更高效:
tasklist | findstr "1234"直接显示PID对应的程序名tasklist /fi "pid eq 1234"按条件过滤
遇到PID是系统进程的情况,比如PID为4的系统进程占用了80端口,多数情况下需要进一步用netsh http show servicestate查看HTTP服务层级的占用详情。
两张表搞定跨平台命令记忆
| 操作场景 | Linux命令 | Windows命令 |
|---|---|---|
| 查看本机IP | ip addr |
ipconfig /all |
| 查看监听端口 | ss -tunlp |
netstat -ano |
| 按端口查进程 | lsof -i:8080 |
netstat -ano | findstr "8080" |
| 按PID查进程名 | ps -ef | grep 1234 |
tasklist | findstr "1234" |
远程查看服务器端口和IP的常用方法
工作中真正遇到的场景往往是:服务器不在手边,只有一台笔记本,该怎么查远端服务器的IP和端口状态。
通过SSH登录后远程执行命令
最通用的方式是用SSH登录服务器,然后执行上面的命令,Windows 10以上系统自带OpenSSH客户端,直接在CMD里输入:
ssh 用户名@服务器IP- 登录成功后执行
ip addr或ss -tunlp
这一步的前提是你知道服务器的IP和账号密码,如果IP都不记得,可以检查本地SSH配置文件的别名记录,或者翻看历史连接记录。
本机测试远程端口是否开放
不登录服务器,也想确认某个端口通不通,用telnet或nc做连通性测试:
telnet 192.168.1.100 3306出现空光标或连接成功提示说明端口可达nc -zv 192.168.1.100 3306z参数表示扫描模式不发送数据,v表示显示详细信息curl -v telnet://192.168.1.100:3306curl也能测TCP端口
端口测试不通时,先查服务器本地防火墙,再查云安全组规则,最后检查是否被机房防火墙拦截,这个排查顺序能省掉大量无用功。
带外管理网卡的IP查看
物理服务器通常有带外管理接口,比如HP的iLO、Dell的iDRAC,它们有独立的IP地址,和操作系统无关,这类IP不影响业务,但关键时刻能救命,查看带外管理IP的方法是进入BIOS或开机自检时按特定快捷键进入管理界面,那里显示的IP就是带外地址。
排查端口连通性时的常见误区与判断思路
命令都会用了,但实际排查时还是经常误判,这里说几个典型的误区,都是实际工作中反复踩过的坑。
把监听状态当成放行状态
ss -tunlp显示程序在监听端口,只能代表进程本身启动了,不代表外部能访问,本机防火墙、云安全组、交换机ACL都可能拦截流量,判断链路是否真正打通,一定要在另一台机器上实际连接一次。
用错IP查找方向
服务器上有内网IP、外网IP、回环IP,还有虚拟网卡IP,不少入门运维把内网IP发给客户,对方当然连不上,查IP之前,先确认对方和你在不在同一个网络域里,内网互通用内网IP,公网访问用公网IP,别搞混。
忽略netstat输出中的地址区别
0.0.0:端口表示监听所有网卡,0.0.1:端口只允许本机回环访问,具体IP:端口公网网卡和回环网卡的行为完全不同,如果程序绑定在127.0.0.1上,外部任何请求都进不来,必须改配置重新绑定。
一张速查清单与核心结论
正常排查流程总结为四步:先查本机IP,再确认服务所在端口,然后验证监听地址,最后从外部测试连通性,Linux记住ip addr和ss -tunlp这两条,Windows记住ipconfig和netstat -ano这两条,加上过滤和反查进程的方法,基本覆盖绝大多数场景。
Q&A:服务器端口和IP查询常见问题
服务器公网IP用命令行怎么查?
登录服务器后执行curl ifconfig.me,命令会返回当前出口的公网IP地址,注意该结果取决于服务器的路由路径,如果经过NAT或多层转发,返回的可能是网关出口IP,如需精确到云服务器自身绑定的弹性公网IP,应在云控制台的实例详情页面查看。
端口被占用但查不到是哪个进程?
先执行ss -tunlp确认进程名是否显示为,没有进程信息通常表示当前用户权限不足,需要sudo提权后重试,如果提权后仍然查不到,可能是内核模块或系统服务直接占用的端口,使用lsof -i:端口号进一步确认,极端情况下内核预留端口需要重启服务才能释放。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/793728.html


