三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

CentOS 7网络配置踩坑实录:从‘网络不可达’到完美联通的避坑指南

CentOS 7网络配置踩坑实录:从‘网络不可达’到完美联通的避坑指南

CentOS 7网络配置实战:从故障排查到高效运维的完整指南

当你第一次在CentOS 7服务器上输入ping baidu.com却只看到"network is unreachable"的冰冷提示时,那种挫败感每个Linux运维人员都深有体会。网络配置作为系统管理的基石,却常常因为各种隐藏的"坑"让新手甚至老手都栽跟头。本文将带你穿越这些雷区,从底层原理到实战技巧,构建完整的网络配置知识体系。

1. 网络配置前的关键诊断:定位问题根源

遇到网络故障时,盲目修改配置往往适得其反。正确的做法是建立系统化的诊断流程:

# 1. 检查物理层连接状态 nmcli device status # 正常应显示类似: # DEVICE TYPE STATE CONNECTION # ens33 ethernet connected ens33

如果STATE显示为disconnected,首先检查:

  • 网线是否插好(物理连接)
  • 虚拟机环境是否启用网卡
  • 网卡指示灯状态

典型故障场景1:执行nmcli con up ens33后依然无法联网。此时需要检查:

# 查看详细错误信息 journalctl -xe -n 50 # 重点关注NetworkManager相关日志

常见错误包括:

  • IP地址冲突(日志中会出现DHCP相关错误)
  • 网关不可达(检查ip route输出)
  • DNS解析失败(测试nslookup baidu.com

注意:CentOS 7默认使用NetworkManager管理网络,但传统network服务可能产生冲突。建议统一使用systemctl stop network; systemctl disable network关闭传统服务。

2. 三种配置方式深度对比与实战选择

2.1 TUI界面配置:可视化操作的利与弊

通过nmtui命令进入文本用户界面,适合不熟悉命令行的用户。但实践中常遇到:

  • 配置保存后不生效:检查是否激活了新配置(需返回主界面选择"Activate a connection")
  • 静态IP设置错误:子网掩码需用CIDR格式(如192.168.1.100/24
  • 网关参数被忽略:确保在IPv4配置中同时设置了Gateway和DNS

典型故障解决:TUI中显示配置成功,但ip addr查看未更新。此时需要:

# 强制重载所有连接 nmcli connection reload # 然后重新激活 nmcli con up ens33

2.2 nmcli命令:高效运维的核心工具

nmcli的强大之处在于可脚本化操作,以下是生产环境常用命令模板:

# 创建带所有必要参数的连接(推荐生产环境使用) nmcli con add con-name "prod_ens33" ifname ens33 type ethernet \ ip4 192.168.1.100/24 gw4 192.168.1.1 \ ipv4.dns "8.8.8.8 114.114.114.114" \ ipv4.method manual autoconnect yes

关键参数解析

  • autoconnect yes:系统启动时自动连接
  • ipv4.method manual:静态IP(DHCP则为auto)
  • ipv4.dns:可设置多个DNS,空格分隔

高级技巧:批量修改连接属性

# 一次性修改IP、网关和DNS nmcli con mod prod_ens33 \ ipv4.addresses 192.168.1.101/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8"

2.3 配置文件直接修改:深入Linux网络本质

配置文件位于/etc/sysconfig/network-scripts/ifcfg-<连接名>,重要参数示例:

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPADDR=192.168.1.100 PREFIX=24 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=114.114.114.114 NAME=prod_ens33 DEVICE=ens33 ONBOOT=yes

必须注意

  1. 修改后需执行nmcli con reload
  2. ONBOOT=yes决定是否开机自启
  3. 避免手动修改/etc/resolv.conf(会被NetworkManager覆盖)

3. 多网卡与高级路由配置实战

复杂网络环境中,单网卡配置远远不够。以下是多网卡场景的解决方案:

3.1 策略路由配置

# 为eth1添加额外路由表 echo "200 custom" >> /etc/iproute2/rt_tables # 设置路由规则 ip route add default via 10.0.0.1 dev eth1 table custom ip rule add from 10.0.0.0/24 table custom

3.2 VLAN配置示例

# 创建VLAN接口 nmcli con add type vlan con-name vlan10 dev ens33 id 10 \ ip4 192.168.10.100/24 gw4 192.168.10.1

4. 网络测试与排错工具箱

配置完成后,必须验证各项功能:

# 连通性测试三部曲 ping -c 4 192.168.1.1 # 测试网关 ping -c 4 8.8.8.8 # 测试外网 ping -c 4 baidu.com # 测试DNS # 高级诊断命令 traceroute baidu.com # 追踪路由路径 mtr -r baidu.com # 持续路由监测 ss -tulnp # 查看开放端口

典型故障排查表

故障现象可能原因诊断命令解决方案
能ping通IP但无法访问网站DNS问题nslookup baidu.com检查/etc/resolv.conf
内网通外网不通网关错误ip route show修正网关地址
SSH连接超时防火墙阻挡firewall-cmd --list-all添加防火墙规则
网络时断时续IP冲突arping -I ens33 192.168.1.100更换IP地址

5. 持久化配置与自动化技巧

为避免重启后配置丢失,需要确保:

  1. NetworkManager服务开机自启:
systemctl enable NetworkManager
  1. 关键配置备份脚本:
#!/bin/bash # 备份网络配置 tar -czf /backup/network_$(date +%F).tar.gz \ /etc/sysconfig/network-scripts/ \ /etc/hosts \ /etc/resolv.conf
  1. 自动化检测脚本示例:
#!/bin/bash # 网络状态监控 if ! ping -c 1 8.8.8.8 &> /dev/null; then echo "$(date) - Network down! Restarting..." nmcli con down ens33 && nmcli con up ens33 echo "Network restarted" | mail -s "Network Alert" admin@example.com fi

在真实的生产环境中,我遇到过最棘手的案例是一个看似简单的DNS问题——所有配置检查都正常,但域名解析就是不稳定。最终发现是NetworkManager的dnsmasq插件与手动配置的resolv.conf产生了冲突。解决方案是统一管理方式:要么完全使用NetworkManager,要么彻底禁用其DNS管理功能(通过设置dns=none/etc/NetworkManager/NetworkManager.conf中)。

← 返回列表