1. 网络管理基础认知
刚接触Linux系统管理时,网络配置总是新手最容易踩坑的环节。记得我第一次给服务器配静态IP时,因为子网掩码填错导致整个机房断网,被主管训了半小时。这章我们要啃下的硬骨头,就是Red Hat Enterprise Linux系统下的网络管理核心技能。
现代服务器早已告别了单机工作模式,网络配置的准确性和稳定性直接决定了:
- 服务能否被正常访问(对外连通性)
- 服务器能否获取所需资源(对内连通性)
- 系统管理是否高效(远程管理通道)
在RHEL环境中,网络管理工具经历了从传统network服务到NetworkManager的演进。当前主流方案是两者协同工作:
- NetworkManager:提供动态网络配置管理,特别适合笔记本等移动设备
- 传统network脚本:仍被广泛用于服务器静态配置,稳定性经受过考验
关键认知:在RHEL8+版本中,默认同时启用NetworkManager和network服务,前者负责动态配置,后者处理静态定义。
2. 网络接口管理实战
2.1 接口状态查询
首先得知道自己有哪些"网卡武器"可用:
bash复制# 查看所有网络接口物理信息
nmcli device status
# 等效于老命令:ip link show
# 查看具体接口详情(以ens160为例)
nmcli connection show ens160
典型输出解析:
code复制GENERAL.DEVICE: ens160 # 设备名称
GENERAL.TYPE: ethernet # 接口类型
GENERAL.STATE: 100 (connected) # 连接状态
IP4.ADDRESS[1]: 192.168.1.100/24 # IPv4地址
IP6.ADDRESS[1]: fe80::20c:29ff:fea4:b952/64 # IPv6链路本地地址
2.2 接口启停控制
服务器维护时经常需要临时禁用网卡:
bash复制# 优雅禁用接口(会触发路由清理)
nmcli connection down ens160
# 强制立即禁用(相当于拔网线)
nmcli device disconnect ens160
# 重新启用接口
nmcli connection up ens160
血泪教训:在生产环境执行禁用操作前,务必确认:
- 当前不是通过该接口远程连接
- 没有关键服务依赖此接口
- 已通知相关团队网络变更
2.3 接口配置持久化
临时修改用nmcli,永久配置要靠配置文件。RHEL的网络配置文件存放在:
code复制/etc/sysconfig/network-scripts/ifcfg-<接口名>
示例ifcfg-ens160内容:
code复制TYPE=Ethernet
DEVICE=ens160
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
修改后必须重载配置:
bash复制# 传统方式
systemctl restart network
# NetworkManager方式
nmcli connection reload
nmcli connection up ens160
3. IP地址配置详解
3.1 临时地址配置
应急调试时常用临时IP设置:
bash复制# 添加临时IP
ip addr add 192.168.1.101/24 dev ens160
# 删除IP
ip addr del 192.168.1.101/24 dev ens160
# 刷新DHCP获取
dhclient -r ens160 && dhclient ens160
3.2 静态IP配置
生产环境推荐静态IP配置流程:
- 确认物理连接正常
- 备份原配置文件
- 编辑ifcfg文件设置静态参数
- 测试配置语法
- 应用配置
关键参数说明:
BOOTPROTO=static:指定静态配置IPADDR:本机IP地址NETMASK:子网掩码GATEWAY:默认网关DNS1:首选DNS服务器
3.3 多IP地址绑定
单网卡绑定多IP的两种方式:
方法一:辅助IP(Alias)
bash复制# 临时添加
ip addr add 192.168.1.102/24 dev ens160 label ens160:1
# 永久配置
在ifcfg-ens160中添加:
IPADDR2=192.168.1.102
PREFIX2=24
方法二:多配置文件
code复制# 创建ifcfg-ens160:1文件
cp ifcfg-ens160 ifcfg-ens160:1
修改其中的DEVICE和IPADDR参数
4. 路由管理精要
4.1 路由表查看
掌握路由信息是网络排障的基础:
bash复制# 简明路由表
ip route show
# 等效老命令:route -n
# 详细路由信息
ip -d route
典型输出解读:
code复制default via 192.168.1.1 dev ens160 proto static metric 100
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.100
4.2 静态路由配置
添加临时路由:
bash复制# 添加到特定网络的路由
ip route add 10.0.0.0/8 via 192.168.1.254
# 添加默认路由
ip route add default via 192.168.1.1
永久路由配置:
- 创建路由配置文件:
code复制/etc/sysconfig/network-scripts/route-ens160 - 内容格式:
code复制10.0.0.0/8 via 192.168.1.254 default via 192.168.1.1
4.3 路由策略进阶
多网卡环境下的路由控制:
bash复制# 查看路由规则
ip rule show
# 添加基于源IP的路由
echo "100 from 192.168.1.100 lookup 100" >> /etc/iproute2/rt_tables
ip route add default via 192.168.2.1 table 100
ip rule add from 192.168.1.100 table 100
5. 网络诊断工具箱
5.1 连通性测试
基础诊断三板斧:
bash复制# 测试网络层连通性
ping -c 4 192.168.1.1
# 测试传输层连通性
telnet 192.168.1.1 22
nc -zv 192.168.1.1 22
# 追踪网络路径
traceroute 8.8.8.8
tracepath 8.8.8.8
5.2 网络状态分析
深度状态检查:
bash复制# 查看端口监听状态
ss -tulnp
# 等效老命令:netstat -tulnp
# 查看接口统计信息
ip -s link show ens160
# 查看ARP缓存
ip neigh show
5.3 数据包捕获
终极排障手段:
bash复制# 简单抓包
tcpdump -i ens160 -nn 'port 80'
# 复杂过滤
tcpdump -i any -vvv 'tcp port 22 and host 192.168.1.100'
# 保存分析
tcpdump -w /tmp/debug.pcap -c 1000
6. 防火墙管理要点
6.1 firewalld基础
RHEL默认防火墙管理:
bash复制# 查看默认区域
firewall-cmd --get-default-zone
# 查看活动区域
firewall-cmd --get-active-zones
# 临时开放端口
firewall-cmd --add-port=8080/tcp
# 永久生效
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
6.2 服务管理技巧
更规范的服务管理:
bash复制# 查看预定义服务
firewall-cmd --get-services
# 添加自定义服务
cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/myapp.xml
编辑端口定义后:
firewall-cmd --reload
6.3 高级规则配置
复杂场景下的规则:
bash复制# 源IP限制
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
# 端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
7. 网络服务管理
7.1 主机名配置
正确设置主机名的方法:
bash复制# 查看当前主机名
hostnamectl status
# 设置静态主机名
hostnamectl set-hostname server1.example.com
# 同时修改相关配置文件
echo "server1.example.com" > /etc/hostname
7.2 名称解析配置
DNS和本地解析配置:
bash复制# 查看当前DNS配置
nmcli device show ens160 | grep DNS
# 修改resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# 配置hosts文件
echo "192.168.1.100 server1" >> /etc/hosts
7.3 网络时间同步
NTP配置最佳实践:
bash复制# 查看时间同步状态
timedatectl status
# 启用NTP同步
timedatectl set-ntp yes
# 指定NTP服务器
vim /etc/chrony.conf
添加server ntp.aliyun.com iburst
systemctl restart chronyd
8. 典型问题排查实录
8.1 网络接口不启动
常见症状:
- 接口显示DOWN状态
- ifconfig无IP地址显示
- 服务启动报错
排查步骤:
- 检查物理连接状态
- 查看内核是否识别网卡:
lspci | grep -i ethernet - 检查驱动加载:
lsmod | grep <驱动名> - 分析启动日志:
journalctl -u NetworkManager --since "1 hour ago"
8.2 能ping通但无法访问服务
经典问题场景:
- 本地测试正常
- 同网段能访问
- 跨网段无法访问
诊断流程:
- 检查本地防火墙规则
- 验证网关路由:
ip route get <目标IP> - 测试MTU问题:
ping -s 1472 <目标IP> - 检查conntrack状态:
conntrack -L
8.3 DNS解析异常
典型表现:
- ping IP通但ping域名不通
- 部分域名解析失败
- 解析结果不符合预期
解决方法:
- 测试DNS服务器连通性:
dig @8.8.8.8 google.com - 检查/etc/resolv.conf配置
- 验证nsswitch配置:
getent hosts google.com - 清除DNS缓存:
systemctl restart nscd
9. 安全加固建议
9.1 网络接口安全
基础防护措施:
- 禁用不必要的网络服务
- 限制管理接口访问IP
- 启用MAC地址过滤
- 配置接口风暴控制
9.2 防火墙最佳实践
生产环境推荐配置:
- 默认拒绝所有流量
- 按需开放最小权限
- 记录异常连接尝试
- 定期审计规则有效性
9.3 SSH安全加固
关键安全设置:
bash复制# 修改默认端口
Port 2222
# 禁用root登录
PermitRootLogin no
# 启用密钥认证
PasswordAuthentication no
# 限制用户访问
AllowUsers admin deploy