想查服务器IP,搜来的教程一半让用ip addr,一半让用ifconfig,不知道哪个更靠谱;服务器连不上网,对着黑屏终端手足无措,不知道怎么判断网络通不通;部署服务时提示“端口被占用”,却找不到占用端口的进程;分不清netstat和ss的区别,担心用错命令踩坑……
其实,Linux网络管理没那么复杂,搞定最核心的5个命令——ip、ping、netstat、ss、ifconfig,就能解决80%的日常网络问题。
一、前置认知:5个命令的核心定位
在学具体用法前,先搞懂这5个命令的“分工”,避免学完混淆用途。新手建议先收藏这张表,后续用到时直接对照查找,效率翻倍。
关键结论
日常优先用ip addr(查IP/网卡)、ping(测连通)、ss(查端口);ifconfig 和netstat 仅在老旧系统、调试旧脚本时使用,新手重点掌握前3个即可。
基础概念铺垫(必懂,否则越学越懵)
学命令前,先搞懂3个基础概念,用通俗的比喻帮你理解:
- 网卡:电脑/服务器连接网络的“接口”,相当于家里的“网线插口”,每个网卡有唯一的MAC地址(物理地址),常见命名如
eth0、ens33(不同系统命名不同,以实际为准)。 - IP地址:网络中设备的“门牌号”,比如
192.168.1.100(IPv4),没有IP就无法在网络中找到设备。 - 端口:设备内不同服务的“房间号”,比如80端口对应HTTP服务、443对应HTTPS、22对应SSH,范围0-65535,一个端口只能被一个服务占用。
二、核心命令详解
1. ping:最基础的网络连通性测试
ping是最入门、最常用的网络命令,核心作用就一个——测试目标IP/域名是否能连通,相当于“给对方发个消息,看对方回不回”,是排查网络问题的第一步。
核心用法(代码可直接复制)
# 1. 测试与网关/内网IP的连通性(最常用)ping 192.168.1.1# 2. 测试与外网域名的连通性(自动解析IP)ping baidu.com# 3. 限制ping的次数(默认无限次,避免占用终端)ping -c 4 baidu.com # 只ping 4次,适合快速测试# 4. 指定ping的间隔时间(单位:秒)ping -i 2 baidu.com # 每2秒ping一次,避免频繁发包# 5. 不解析域名(只显示IP,加快测试速度)ping -n 223.5.5.5 # 223.5.5.5是阿里云DNS,国内常用,替代国外DNS更贴合国内场景# 6. 终止ping命令:按 Ctrl + C 即可
输出解读
以 ping -c 4 baidu.com 为例,输出如下,重点看3个核心信息:
PING baidu.com (220.181.38.251) 56(84) bytes of data.64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=1 ttl=54 time=32.5 ms64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=2 ttl=54 time=31.8 ms64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=3 ttl=54 time=33.1 ms64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=4 ttl=54 time=32.2 ms--- baidu.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3005msrtt min/avg/max/mdev = 31.823/32.425/33.141/0.536 ms
- 连通性:
0% packet loss 表示无丢包,网络通畅;100% packet loss 表示目标不可达(可能是网络不通、对方防火墙拦截)。 - 延迟:
time 后面的数值(单位:ms),数值越小越好,内网通常<1ms,外网几十ms属于正常。 - TTL:生存时间,不用纠结具体含义,仅作为参考(Linux默认64,Windows默认128)。
新手避坑&实用技巧
- ❌ 避坑1:ping不通就以为服务不可用——错!很多服务器会防火墙拦截ping(禁止ICMP协议),此时ping丢包,但服务可能正常。
- ❌ 避坑2:用
ping -n baidu.com 想不解析域名——错!-n 是禁止“IP→域名”反向解析,对“域名→IP”正向解析无效,ping域名仍会解析IP。 - ✅ 技巧:排查网络故障时,先ping网关(如192.168.1.1),再ping 223.5.5.5,最后ping域名,一步步定位问题。
2. ip addr:现代IP/网卡管理首选(已逐步替代ifconfig)
ip addr 是官方推荐的网络管理命令,属于iproute2工具集,功能比ifconfig全面,支持IPv4和IPv6,所有主流Linux发行版默认预装,新手优先学这个。
核心用法(代码可直接复制)
# 1. 查看所有网卡、IP的完整信息(IPv4+IPv6)【最常用】ip addr# 2. 查看指定网卡的信息(如ens33,替换为自己的网卡名)ip addr show ens33# 3. 临时给网卡配置IP(重启失效,远程服务器谨慎操作)sudo ip addr add 192.168.1.100/24 dev ens33# 4. 删除临时配置的IPsudo ip addr del 192.168.1.100/24 dev ens33# 5. 启用/禁用网卡(禁用后无法联网,谨慎操作)sudo ip link set ens33 up # 启用网卡sudo ip link set ens33 down # 禁用网卡# 6. 查看系统路由表(补充:ip命令的延伸用法)ip route
输出解读
执行 ip addr 后,输出如下,新手重点关注inet(IPv4)和inet6(IPv6)字段:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo # 本地回环IP,不用管 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:8a:8f:7a brd ff:ff:ff:ff:ff:ff # 网卡MAC地址 inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic ens33 # 本机IPv4 valid_lft 86399sec preferred_lft 86399sec inet6 fe80::a00:27ff:fe8a:8f7a/64 scope link # 本机IPv6 valid_lft forever preferred_lft forever
✅ 关键:能看到inet 192.168.1.100/24,说明网卡已启用、IP配置正常;如果没有inet字段,说明网卡未启用或未获取到IP。
新手避坑&实用技巧
- ❌ 避坑:用
ip addr 查看路由表——错!路由表需用 ip route 查看,ip addr 主要管网卡和IP。 - ⚠️ 提醒:远程服务器(如阿里云、腾讯云)修改IP时,一定要谨慎,避免修改后SSH连接中断,无法恢复。
- ✅ 技巧:不知道自己的网卡名?执行
ip addr,除了lo(本地回环),剩下的就是实际网卡名(如ens33、eth0)。
3. ss:高效端口/连接管理(已逐步替代netstat)
部署服务时,最常见的问题就是“端口被占用”,此时就需要ss命令——它是netstat的升级替代工具,查询速度快、占用资源少,默认预装,功能完全覆盖netstat。
核心用法(代码可直接复制)
# 1. 查看所有监听端口(TCP+UDP)【最常用】ss -tuln# 2. 查看所有端口的详细占用(包含进程名、PID)sudo ss -tulnp # 必须加sudo,否则看不到进程信息# 3. 查看指定端口的占用情况(如80端口,排查服务启动失败)sudo ss -tulnp | grep 80# 4. 查看指定进程占用的端口(如nginx)sudo ss -tulnp | grep nginx# 5. 查看所有已建立的TCP连接(排查网络连接异常)ss -tna
参数解读(新手记缩写即可)
tul:显示“监听中”的端口(服务启动后会处于监听状态);np:显示占用端口的进程名和PID(需sudo提权)。
实操案例:排查端口占用
场景:启动nginx时,提示“80端口已被占用”,无法启动,用ss命令排查并解决:
# 1. 查看80端口占用情况,找到PID和进程名sudo ss -tulnp | grep 80# 输出示例:tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1208,fd=6))# 解读:80端口被PID为1208的nginx进程占用# 2. 终止占用进程(温和终止,优先使用,避免数据丢失)sudo kill -15 1208# 3. 若无法终止,强制终止(谨慎使用,可能丢失数据)# sudo kill -9 1208# 4. 重新启动nginx,即可正常启动sudo systemctl start nginx
新手避坑&实用技巧
- ❌ 避坑:执行
ss -tulnp 不加sudo——错!不加sudo会提示“Permission denied”,看不到进程名和PID,无法定位问题。 - ✅ 技巧:日常排查端口占用,直接用
sudo ss -tulnp | grep 端口号,一步到位,不用记复杂参数。
4. ifconfig:传统工具(兼容备用)
ifconfig 是传统的网络命令,属于net-tools工具集,功能单一,仅支持IPv4,不支持IPv6,现在已被ip addr替代,仅用于老旧系统(如CentOS 6)或调试旧脚本。
核心用法(代码可直接复制)
# 第一步:安装net-tools工具集(主流系统默认不预装)# Ubuntu/Debian 安装sudo apt install net-tools -y# CentOS/Anolis 安装sudo yum install net-tools -y# 1. 查看所有网卡的基础信息(仅IPv4)ifconfig# 2. 查看指定网卡的信息(如eth0)ifconfig eth0# 3. 临时给网卡配置IP(重启失效)sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
新手避坑
- ❌ 避坑:以为
ifconfig不支持IPv6——错!它能显示IPv6地址(如inet6字段),但仅能查看,无法配置,支持较弱。 - ✅ 建议:新手日常不用学
ifconfig,除非遇到老旧系统,记住“优先用ip addr”即可。
5. netstat:传统端口/路由工具(兼容备用)
netstat 和ifconfig同属net-tools工具集,功能全面,但查询效率低,尤其在高并发场景下,会占用较多系统资源,现在已被ss替代。
核心用法(代码可直接复制)
# 安装net-tools工具集(和ifconfig共用)# sudo apt install net-tools -y 或 sudo yum install net-tools -y# 1. 查看所有监听端口(TCP+UDP)netstat -tuln# 2. 查看所有端口的详细占用(包含进程名、PID)sudo netstat -tulnp# 3. 查看指定端口的占用情况sudo netstat -tulnp | grep 80# 4. 查看路由表(备用,优先用ip route)netstat -r
新手避坑
- ❌ 避坑:用
netstat查询端口时,觉得响应慢——正常!这是它的缺点,优先换用ss命令。 - ✅ 建议:仅在调试旧脚本、操作老旧系统时使用
netstat,日常优先用ss。
三、新手必备:网络排查标准流程(直接套用)
遇到网络问题,不用乱试命令,按以下顺序排查,高效定位问题,新手直接套用即可:
- 查看本机IP和网卡状态:执行
ip addr → 确认网卡已启用(有UP标识)、有IP地址(有inet字段)。 - 测试内网连通性:执行
ping 192.168.1.1(网关IP)→ 不通则为本机网络配置问题。 - 测试外网连通性:执行
ping 223.5.5.5(阿里云DNS)→ 不通则为路由或外网问题。 - 排查端口占用:执行
sudo ss -tulnp | grep 端口号 → 确认服务是否正常监听端口。 - 查看路由表:执行
ip route → 确认路由配置正常,目标IP可达。 - 若以上均正常,排查防火墙是否拦截端口/ICMP协议(后续文章会详细讲解)。
四、常见问题&避坑指南
整理了新手最常遇到的5个问题,每个问题都给出具体解决方法,避免踩坑浪费时间。
1. 执行ifconfig/netstat,提示“command not found”
- 原因:系统未安装
net-tools工具集,这两个命令属于net-tools。 - 解决方法:执行安装命令(前文已给出),或直接使用
ip、ss命令(推荐)。
2. ping 目标IP/域名,显示“100% packet loss”(丢包)
- 常见原因1:目标IP/域名不存在,或本机未连接网关(网络不通)。
- 常见原因2:目标设备防火墙拦截了ICMP协议(禁止ping)。
- 解决方法:先ping网关排查本机网络,再用
ss、telnet等命令排查服务是否正常(不能只看ping结果)。
3. 服务启动成功,但外部无法访问端口
- 排查步骤1:用
sudo ss -tulnp | grep 端口号,确认服务正常监听端口。 - 排查步骤3:检查服务器防火墙,是否放行该端口(如80、443端口)。
- 排查步骤4:确认服务绑定的IP是
0.0.0.0(允许所有IP访问),而非127.0.0.1(仅本机访问)。
4. ip addr 查看不到IP地址,显示“inet 无”
- 原因:网卡未启用,或未获取到IP地址(DHCP未分配,或未手动配置)。
- 解决方法:启用网卡(
sudo ip link set 网卡名 up),或手动配置IP,或检查DHCP服务是否正常。
5. 执行ss/netstat,看不到进程名和PID
- 原因:没有用
sudo提权,普通用户没有权限查看进程信息。 - 解决方法:在命令前加
sudo,如sudo ss -tulnp。
五、常用命令速查表(建议收藏,日常直接查)
# ===================== 连通性测试(ping) =====================ping 192.168.1.1 # 测试内网网关ping baidu.com # 测试外网域名ping -c 4 baidu.com # 限制ping 4次ping -n 223.5.5.5 # 测试国内DNS,不解析域名# ===================== IP/网卡管理(ip addr) =====================ip addr # 查看所有网卡、IP(IPv4+IPv6)ip addr show 网卡名 # 查看指定网卡sudo ip addr add 192.168.1.100/24 dev 网卡名 # 临时配置IPsudo ip link set 网卡名 up/down # 启用/禁用网卡ip route # 查看路由表# ===================== 端口排查(ss) =====================ss -tuln # 查看所有监听端口sudo ss -tulnp # 查看端口详细占用(含进程)sudo ss -tulnp | grep 端口号 # 查看指定端口占用# ===================== 传统备用命令(ifconfig/netstat) =====================sudo apt install net-tools -y # 安装工具集ifconfig # 查看网卡基础信息(仅IPv4)netstat -tuln # 查看监听端口(备用)sudo netstat -tulnp | grep 端口号 # 查看指定端口(备用)# ===================== 进程终止(谨慎使用) =====================sudo kill -15 PID # 温和终止进程(优先)sudo kill -9 PID # 强制终止进程(无法终止时用)
六、总结
这篇文章从新手视角出发,讲解了Linux网络最核心的5个命令,重点突出“实用、易懂、可操作”,总结3个核心要点,帮你快速掌握:
- 优先掌握3个命令:
ip addr(查IP/网卡)、ping(测连通)、ss(查端口),能解决80%的日常网络问题; - 分清替代关系:
ip addr 替代 ifconfig,ss 替代 netstat,新手不用花太多时间在传统命令上; - 学习技巧:不用死记硬背所有参数,重点掌握文中的高频用法,多动手实操,遇到问题对照速查表和常见问题,慢慢就能形成肌肉记忆。
网络基础是Linux运维、服务部署的核心,学会这5个命令,你就能独立排查基础网络问题,为后续学习防火墙、静态IP、端口放行等进阶内容打下坚实基础。
如果你觉得本文对你有帮助,欢迎点赞、推荐、转发,关注我,后续会分享更多Linux入门干货!
文 / 零距技术仓记录每一次真实的折腾 (#^.^#)🚀 想看到更多实用折腾技巧?👉 先关注💬 评论区说说你的经历或想看的内容👍 点赞表示支持🔁 顺手分享给也在折腾的人,让大家都少踩坑 😎