查看服务器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)。 netstatvsss/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