说实话,刚拿到AlmaLinux当生产环境主力系统的时候,我也遇到过这种让人头疼的事儿:服务器重启后,网卡没起来,SSH连不上,服务也挂得一塌糊涂。今天就把我踩过的坑和总结出来的排查思路,掰开揉碎了讲给你听。
先别慌,理清思路
AlmaLinux作为RHEL的社区替代品,底层逻辑和CentOS/RHEL一脉相承。网络问题通常分几类:
- 物理层/驱动层:网卡驱动没加载、硬件故障
- 配置层:网卡配置文件写错、DNS配置错误
- 服务层:NetworkManager或network服务异常
- 启动顺序层:网络服务在系统其他依赖前没就绪
排查第一步:看日志,找线索
登录服务器(如果有控制台/VNC/物理键盘),先查启动日志:
# 查看网络相关启动日志
journalctl -u NetworkManager --since "10 minutes ago"
# 或者查看systemd网络相关的通用日志
journalctl -u systemd-networkd --since "10 minutes ago"
# 查看完整启动过程网络相关条目
journalctl -b -k | grep -i network
如果连日志都看不到,说明可能连syslog服务都没起来,这时候只能靠dmesg了:
dmesg | grep -i eth\|ens\|enp\|net
常见故障实例一:网卡配置丢失或错误
这是新手最容易踩的坑。AlmaLinux默认使用NetworkManager管理网络,配置文件在/etc/sysconfig/network-scripts/。
# 查看所有网络接口状态
nmcli device status
# 查看具体网卡配置
nmcli connection show
# 检查配置文件是否存在
ls -la /etc/sysconfig/network-scripts/ifcfg-*
典型错误配置示例:
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=no # ← 问题在这里!应该是yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DEVICE=ens192
修复方法:
# 编辑配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens192
# 确保ONBOOT=yes,然后重载配置
nmcli connection reload
nmcli connection up ens192
# 或者重启NetworkManager
systemctl restart NetworkManager
常见故障实例二:NetworkManager服务异常
有时候服务本身挂了,或者状态不一致:
# 检查服务状态
systemctl status NetworkManager
# 如果服务失败,查看详细错误
journalctl -xe | grep NetworkManager
# 尝试强制重启
systemctl reset-failed NetworkManager
systemctl restart NetworkManager
如果重启后还是有问题,可能是配置冲突。检查是否有多个网络管理服务同时运行:
# 查看是否有systemd-networkd也在运行
systemctl list-units --type=service | grep -E "network|Network"
# 如果有冲突,禁用一个
systemctl disable systemd-networkd
systemctl stop systemd-networkd
常见故障实例三:驱动问题
特别是虚拟机迁移或硬件变更时,网卡驱动可能没加载:
# 查看内核加载的网卡驱动
lspci -k | grep -A 3 -i ethernet
# 查看模块是否加载
lsmod | grep -i e1000\|igb\|ixgbe\|virtio_net
# 如果没有加载,手动加载
modprobe virtio_net # 虚拟机常用
modprobe e1000e # Intel千兆网卡
modprobe ixgbe # Intel万兆网卡
确认驱动加载后,检查网卡是否被识别:
ip link show
# 或者
ip addr
常见故障实例四:DHCP获取失败
如果是动态IP,但获取不到:
# 手动尝试DHCP
nmcli device disconnect ens192
nmcli device connect ens192
# 或者使用dhclient测试
dhclient -v ens192
# 查看是否获取到IP
ip addr show ens192
检查DHCP服务器是否可达:
# 测试网关连通性
ping -c 3 192.168.1.1
# 查看ARP表
arp -a
常见故障实例五:防火墙阻止服务
有时候网络起来了,但SSH连不上,可能是firewalld在作怪:
# 检查防火墙状态
systemctl status firewalld
firewall-cmd --state
# 临时关闭防火墙测试
systemctl stop firewalld
# 如果连通了,重新配置规则
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
批量排查脚本
我平时喜欢用这个脚本快速诊断:
#!/bin/bash
echo "=== AlmaLinux 网络诊断 ==="
echo ""
echo "1. 网络接口状态:"
ip link show | grep -E "^[0-9]+:|state"
echo ""
echo "2. IP地址配置:"
ip addr show | grep -E "inet |state"
echo ""
echo "3. 默认路由:"
ip route show
echo ""
echo "4. DNS配置:"
cat /etc/resolv.conf
echo ""
echo "5. NetworkManager状态:"
systemctl is-active NetworkManager
nmcli general status
echo ""
echo "6. 最近网络错误:"
journalctl -u NetworkManager --since "5 minutes ago" | grep -i error
echo ""
echo "7. 驱动信息:"
lspci -k | grep -A 2 -i ethernet
echo ""
echo "8. 测试外网连通性:"
ping -c 2 8.8.8.8 2>&1 | head -5
预防建议
- 配置静态IP备份:重要服务器建议用静态IP,避免DHCP租约问题
- 启用网络备份:配置bonding或team接口,提高可靠性
- 定期备份配置:
cp -r /etc/sysconfig/network-scripts/ /root/network-config-backup-$(date +%Y%m%d)
- 监控服务状态:
# 设置开机自启且不可轻易停止
systemctl enable NetworkManager
systemctl mask systemd-networkd # 如果只用NM
最后的话
排查AlmaLinux网络问题,关键是先看日志、再查配置、最后动服务。大部分问题都能在journalctl和nmcli的帮助下定位。记住,不要急着重启服务,先看清楚错误再动手,能省一半时间。
希望这些实例能帮到你。如果还有具体问题,随时说,我帮你一起看。
