查看服务器IP地址常用命令:
ifconfig
(旧系统)或ip addr
(Linux);ipconfig
(Windows),查看端口信息:netstat -tuln
或ss -tuln
(Linux);netstat -ano
(Windows),公网IP可用curl ifconfig.me
。
准确获取服务器的IP地址和正在监听的端口信息,是服务器管理、网络调试和安全审计的基础操作,不同操作系统使用的命令不同,以下是Linux/Unix系统和Windows系统的详细方法:
查看服务器IP地址
-
Linux/Unix 系统 (包括 CentOS, Ubuntu, Debian, macOS 终端等):
ifconfig
(传统命令,部分新系统可能需安装net-tools
):ifconfig
- 在输出结果中,找到你正在使用的网络接口(如
eth0
,ens33
,enp0s3
,wlan0
等)。 - 对应的
inet
或inet addr
后面的地址就是该接口的IPv4地址(168.1.100
)。 inet6
后面的地址是IPv6地址。
- 在输出结果中,找到你正在使用的网络接口(如
ip
(现代推荐命令):ip addr show # 或简写 ip a
- 同样查找对应的网络接口。
inet
后面是IPv4地址,inet6
后面是IPv6地址,此命令输出更清晰,信息更全。
hostname
(查看主机名和IP):hostname -I # 显示所有非回环(loopback)网络接口的IP地址 (通常只显示IPv4)
-
Windows 系统:
ipconfig
(最常用):
打开命令提示符 (cmd
) 或 PowerShell,输入:ipconfig
- 在输出结果中,找到你正在使用的网络适配器(如 “以太网适配器 以太网”, “无线局域网适配器 WLAN”)。
IPv4 地址
后面的值就是该适配器的IPv4地址(168.1.101
)。- 如需查看所有详细信息,可使用:
ipconfig /all
查看服务器端口监听和连接状态
-
Linux/Unix 系统:
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和名称。
- 查看所有监听端口:
ss
(Socket Statistics, 现代推荐命令,netstat
的替代品,更快更高效):- 查看所有监听端口:
ss -tuln
(参数含义同
netstat -tuln
) - 查看所有连接:
ss -tunap
(参数含义同
netstat -tunap
) - 输出格式与
netstat
类似,但更简洁高效。
- 查看所有监听端口:
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信息)。
- 查看所有监听在TCP端口80的进程:
-
Windows 系统:
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查找进程名:
- 打开任务管理器 (
Ctrl+Shift+Esc
)。 - 切换到 “详细信息” 选项卡。
- 找到对应PID的进程,查看 “名称” 列,或者使用命令:
tasklist | findstr "PID号" # tasklist | findstr "1234"
- 打开任务管理器 (
- 查看所有监听端口:
Get-NetTCPConnection
(PowerShell 命令,更现代):
在 PowerShell 中运行:Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | Format-Table -AutoSize
输出包含本地地址/端口、远程地址/端口、状态和进程PID,格式更规整。
重要提示与专业建议
- 权限要求: 查看其他用户进程或系统进程的端口信息(特别是
-p
参数或-o
参数显示PID时),通常需要管理员权限 (sudo
/root
在 Linux,以管理员身份运行
在 Windows)。 netstat
vsss
/lsof
: 在 Linux 上,ss
和lsof
是更现代、更高效的工具,netstat
已被标记为过时(obsolete),但在许多系统上仍可用,新脚本建议优先使用ss
或lsof
。- 端口状态解读:
- LISTEN / LISTENING: 服务正在该端口上等待连接请求,这是你通常需要关注的服务器端口状态。
- ESTABLISHED: 一个活动的网络连接已成功建立。
- TIME_WAIT / CLOSE_WAIT: 连接正在关闭过程中。
- 防火墙影响: 即使服务在监听某个端口,防火墙规则也可能阻止外部访问,检查防火墙配置 (
iptables
,nftables
,firewalld
在 Linux; Windows Defender 防火墙在 Windows) 是必要的。 - 端口冲突: 如果两个程序试图监听同一个IP地址的同一个端口,后启动的程序通常会失败,使用上述命令可快速定位哪个进程占用了特定端口。
- 安全审计: 定期检查服务器监听的端口是安全最佳实践,关闭不必要的服务和端口能有效减少攻击面,对于不熟悉的监听端口,务必调查其来源和用途。
- 外部IP: 上述命令查看的是服务器的本地/内网IP,要查看服务器在互联网上的公网IP,通常需要从外部访问特定服务(如访问
ipinfo.io/ip
或ifconfig.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