睿诚科技协会

linux 网络 问题

Linux 网络问题排查与解决是系统管理和运维中的常见任务,涉及网络配置、服务状态、防火墙规则、路由表、DNS 解析等多个方面,当网络出现故障时,通常需要按照系统化的步骤进行定位,从基础连通性测试到复杂的服务配置检查,逐步缩小问题范围,以下将详细分析 Linux 网络问题的常见类型、排查工具及解决方法,并结合实际场景说明操作流程。

linux 网络 问题-图1
(图片来源网络,侵删)

网络问题的常见类型及排查思路

Linux 网络问题可分为连通性问题、性能问题、配置问题和服务问题四大类,连通性问题表现为无法访问外部网络或特定主机,如 ping 不通目标 IP;性能问题表现为网络延迟高、丢包严重,常见于带宽不足或网络拥塞;配置问题包括 IP 地址、子网掩码、网关设置错误,或 DNS 解析失败导致域名无法访问;服务问题则涉及网络服务未启动、端口冲突或协议配置错误,如 Web 服务无法访问等。

排查网络问题时,建议遵循“自底向上”原则:首先检查物理层和链路层(如网线、网卡状态),再检查网络层(IP 配置、路由表),然后是传输层(端口、服务状态),最后是应用层(服务配置、协议),使用 ippingnetstatsstcpdump 等工具逐步定位故障点,结合日志文件(如 /var/log/messages/var/log/syslog)分析错误原因。

常用网络排查工具及使用方法

基础连通性测试工具

  • ping:测试与目标主机的网络连通性,通过发送 ICMP 回显请求,检查目标主机是否响应及往返时间。ping 8.8.8.8 可测试与 Google DNS 的连通性,若超时或丢包,可能存在网络中断或防火墙拦截。
  • traceroute/tracepath:跟踪数据包到目标主机的路径,定位网络延迟或丢包的具体节点。traceroute -n www.baidu.com 可显示经过的路由器 IP,若某节点响应异常,则可能是该节点故障。
  • ip 命令:查看和配置网络接口信息。ip addr show 查看所有网卡的 IP 地址、子网掩码等状态;ip link set eth0 up/down 启用或禁用网卡。

网络配置与服务检查工具

  • ifconfig(传统工具,逐渐被 ip 替代):查看和配置网络接口,ifconfig eth0 192.168.1.100 netmask 255.255.255.0 为网卡设置静态 IP。
  • netstat/ss:查看网络连接状态、端口监听情况。ss -tulnp 可显示所有监听的 TCP/UDP 端口及对应进程,若某服务端口未监听,需检查服务是否启动。
  • nslookup/dig:测试 DNS 解析功能。nslookup www.example.com 查询域名的 IP 地址,若解析失败,可能是 DNS 服务器配置错误或域名不存在。

高级网络分析工具

  • tcpdump:抓取网络数据包,分析底层通信细节。tcpdump -i eth0 -nn port 80 抓取 eth0 网口 80 端口的 HTTP 流量,适用于排查协议层面的异常。
  • ethtool:查看和调整网卡参数,如速率、双工模式等。ethtool eth0 查看网卡状态,若显示 Speed: Unknown,可能是网卡驱动问题或物理链路故障。

典型网络问题场景与解决方案

无法访问外部网络

现象ping 8.8.8.8 超时,但 ping 网关IP 正常。
排查步骤

  • 检查 DNS 配置:cat /etc/resolv.conf 查看 DNS 服务器是否正确,若为空或配置错误,可手动添加 nameserver 8.8.8.8
  • 检查默认网关:ip route show 查看默认路由是否存在,若无需添加 ip route add default via 网关IP
  • 检查防火墙规则:iptables -L -n 查看 iptables 是否拦截出站流量,若需放行可执行 iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT

网络服务无法访问

现象:本地服务监听 80 端口,但外部无法访问。
排查步骤

linux 网络 问题-图2
(图片来源网络,侵删)
  • 检查服务状态:systemctl status nginx 确认服务是否运行,未启动则执行 systemctl start nginx
  • 检查端口监听:ss -tulnp | grep 80 查看 80 端口是否被进程监听,若未监听需检查服务配置文件。
  • 检查防火墙和安全组:确认云服务器安全组是否开放 80 端口,本地防火墙是否允许入站流量。

网卡配置失效

现象:重启服务器后 IP 地址丢失。
解决方案

  • 若使用静态 IP,需确保配置文件正确,在 CentOS 中编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,设置 BOOTPROTO=static 并添加 IP、NETMASK、GATEWAY 等参数;在 Ubuntu 中编辑 /etc/netplan/01-netcfg.yaml,使用 YAML 格式配置 IP。
  • 若使用 DHCP,检查网卡是否启用 DHCP:dhclient eth0 手动获取 IP,若失败则检查 DHCP 服务器是否正常运行。

Linux 网络配置常见参数说明

参数 作用 示例值
IPADDR 网卡 IP 地址 168.1.100
NETMASK 子网掩码 255.255.0
GATEWAY 默认网关 168.1.1
DNS1/DNS2 DNS 服务器 8.8.8/114.114.114.114
BOOTPROTO 配置方式(static/dhcp) static
ONBOOT 是否开机启用网卡 yes

相关问答 FAQs

问题 1:Linux 中如何查看某个进程占用的网络端口?
解答:可以使用 ssnetstat 命令,查看进程 ID 为 1234 的进程占用的端口,执行 ss -tulnp | grep 1234;或通过 netstat -tulnp | grep PID/进程名 过滤结果,若需查看所有监听端口,直接使用 ss -tulnp 即可显示端口、协议及对应进程信息。

问题 2:Linux 服务器无法 ping 通外部 IP,但本地网络正常,如何排查?
解答:首先检查网关连通性(ping 网关IP),若网关不通,检查网卡网关配置及物理链路;若网关通但外部 IP 不通,依次检查:① DNS 解析是否正常(nslookup 域名);② 防火墙规则(iptables -L -nfirewall-cmd --list-all);③ 路由表(ip route show);④ 尝试 traceroute -n 外部IP 定位故障节点,若以上均正常,可能是运营商网络问题或目标主机故障。

分享:
扫描分享到社交APP
上一篇
下一篇