第一步:基础硬件与链路状态检查
在深入软件配置之前,首先必须确认物理连接和网卡状态是正常的。
检查物理连接
对于使用有线网络的场景,请确保网线两端都已牢固连接,一个端口在您的计算机上,另一个在路由器或交换机上,对于无线网络,请确认系统已连接到正确的 Wi-Fi 网络。
检查网卡状态
使用 ip
命令查看网络接口的状态,这是一个现代且推荐的工具。
ip link show
在输出中,找到您的主网卡(通常名为 eth0
, ens33
, enp0s3
等),您需要看到两个关键信息:
- 网卡名称(如
ens33
)。 - 状态标志,您应该能看到
UP
和LOWER_UP
。UP
表示接口已在操作系统层面启用,而LOWER_UP
表示物理层链路是激活的(即网线插好了)。
如果看到 DOWN
状态,可以使用以下命令手动启用它(需要 root
权限):
sudo ip link set ens33 up
第二步:IP 地址与子网配置
网卡启用后,它需要一个 IP 地址才能在网络上通信,IP 地址可以通过 DHCP 自动获取,也可以手动配置为静态地址。
检查 IP 地址
使用以下命令查看当前分配的 IP 地址:
ip addr show
查看您的主网卡条目,如果它有一个有效的 IPv4 地址(168.1.100
)和一个子网掩码(如 /24
),IP 配置基本正确,如果看不到 IP 地址,则问题可能出在 DHCP 客户端或静态配置上。
检查网络配置文件
CentOS 的网络配置通常存储在 /etc/sysconfig/network-scripts/
目录下,文件名格式为 ifcfg-<interface_name>
。ifcfg-ens33
。
cat /etc/sysconfig/network-scripts/ifcfg-ens33
一个典型的 DHCP 配置文件如下:
BOOTPROTO=dhcp
ONBOOT=yes
DEVICE=ens33
...
BOOTPROTO=dhcp
:表示通过 DHCP 获取 IP。ONBOOT=yes
:确保开机时自动激活此网卡,如果这里是no
,请改为yes
并重启网络服务(sudo systemctl restart network
)。
如果使用静态 IP,配置会类似这样:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.150
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
请仔细核对静态 IP、子网掩码和网关地址是否正确。
第三步:网关与路由表检查
即使有了 IP 地址,如果没有正确的网关,您的计算机也无法将数据包发送到本地网络之外。
检查默认网关
使用以下命令查看系统的路由表:
ip route show
或
route -n
在输出中,寻找以 0.0.0
(IPv4 默认路由)开头的目标,您应该能看到一条类似 default via 192.168.1.1 dev ens33
的记录,168.1.1
就是您的默认网关地址。
如果缺少默认网关,您需要检查第二步中的网络配置文件,确保 GATEWAY
参数已正确设置,对于临时测试,也可以手动添加:
sudo ip route add default via 192.168.1.1
第四步:DNS 解析测试
这是最常见的问题之一:您可以 ping 通 IP 地址,但无法访问域名(如 www.baidu.com
),这表明网络连接是通的,但域名系统(DNS)无法将域名解析为 IP 地址。
测试 DNS
测试能否 ping 通一个公共 IP 地址:
ping 8.8.8.8
如果这个命令成功,再尝试 ping 一个域名:
ping www.baidu.com
如果第一个成功而第二个失败,几乎可以肯定是 DNS 配置问题。
检查 DNS 配置
DNS 服务器的地址通常在 /etc/resolv.conf
文件中配置。
cat /etc/resolv.conf
您应该看到类似 nameserver 8.8.8.8
的行,您可以临时添加公共 DNS 服务器(如 Google 的 8.8.8
或 Cloudflare 的 1.1.1
)进行测试:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
注意:在某些由 NetworkManager 管理的系统中,直接修改 /etc/resolv.conf
可能会在重启后失效,最稳妥的方法是在第二步的 ifcfg-<interface_name>
文件中添加 DNS1=8.8.8.8
和 DNS2=1.1.1.1
。
第五步:防火墙与 SELinux 排查
本地防火墙或 SELinux 可能会阻止出站连接。
检查防火墙
CentOS 默认使用 firewalld
,检查其状态:
sudo systemctl status firewalld
为了快速诊断,可以临时停止防火墙:
sudo systemctl stop firewalld
如果停止防火墙后网络恢复正常,说明是防火墙规则阻止了连接,您需要学习 firewall-cmd
命令来添加正确的规则,而不是一直关闭防火墙。
检查 SELinux
虽然 SELinux 很少导致完全无法上网,但它可以限制特定服务的网络行为,检查其状态:
getenforce
如果输出是 Enforcing
,可以临时设置为 Permissive
模式进行测试:
sudo setenforce 0
如果问题解决,您需要检查相关的 SELinux 策略并正确配置。
故障排查流程小编总结
为了方便快速定位问题,可以参考下表:
检查项 | 命令 | 目的与预期结果 |
---|---|---|
网卡状态 | ip link show | 确认网卡 UP 且物理链路 LOWER_UP 。 |
IP 地址 | ip addr show | 确认网卡已分配有效的 IP 地址和子网掩码。 |
配置文件 | cat /etc/sysconfig/network-scripts/ifcfg-ens33 | 确认 ONBOOT=yes ,BOOTPROTO 和 IP/网关设置正确。 |
路由/网关 | ip route show | 确认存在正确的默认路由(default via ... )。 |
IP 连通性 | ping 8.8.8.8 | 测试能否访问外部 IP,验证基础网络链路。 |
DNS 解析 | ping www.baidu.com | 测试能否解析域名,验证 DNS 配置。 |
DNS 配置 | cat /etc/resolv.conf | 确认 nameserver 指向有效的 DNS 服务器。 |
防火墙状态 | sudo systemctl status firewalld | 检查防火墙是否运行,可临时关闭以排除影响。 |
相关问答 FAQs
为什么我重启服务器后网络配置又失效了?
解答: 这是因为您使用了临时命令来配置网络,使用 ip addr add ...
或 ip route add ...
等命令所做的更改仅在当前系统运行会话中有效,重启后会丢失,要使配置永久生效,您必须编辑相应的配置文件,即 /etc/sysconfig/network-scripts/ifcfg-<interface_name>
,在此文件中设置 BOOTPROTO
、IPADDR
、GATEWAY
、DNS1
等参数,并确保 ONBOOT=yes
,保存文件后,使用 sudo systemctl restart network
或重启服务器来应用永久配置。
解答: 这是一个典型的“最后一公里”问题,能够 ping 通网关(如 168.1.1
)说明您的计算机到路由器的连接是正常的,问题可能出在以下几个方面:
- DNS 故障:这是最常见的原因,如前文所述,尝试
ping 8.8.8.8
,如果能通,但ping www.baidu.com
不通,请检查/etc/resolv.conf
文件中的 DNS 服务器设置。 - 网关设备故障:路由器本身可能没有连接到互联网,或者其 NAT(网络地址转换)功能出现问题,您可以尝试重启路由器,或用其他设备(如手机)连接同一网络测试是否能上网。
- 上游网络问题:可能是您的互联网服务提供商(ISP)出现了故障。
- 防火墙限制:网关路由器或您计算机上的防火墙可能设置了严格的出站规则,阻止了 HTTP/HTTPS 等流量,可以尝试临时关闭防火墙进行排查。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复