1. 网络状态查看与诊断
1.1 ifconfig 命令(传统方式)
# 安装net-tools(CentOS 7/8默认可能未安装)
sudo yum install net-tools -y
# 基础查看命令
ifconfig # 显示所有接口的IP、MAC、收发包统计等完整信息
ifconfig eth0 # 查看eth0网卡的详细状态,包括:
# - RX/TX packets:收发包数量
# - errors/dropped:错误和丢包统计
# - MTU值:最大传输单元
# 控制接口状态
ifconfig eth0 up # 启用eth0接口
ifconfig eth0 down # 禁用eth0接口
1.2 ip 命令(现代推荐)
# 接口管理
ip addr # 等同于ip a,显示所有接口IPv4/IPv6地址
ip -c addr # 彩色显示更易读
ip -4 addr # 仅显示IPv4信息
ip addr show eth0 # 显示eth0详细配置,包括:
# - 接口状态(UP/DOWN)
# - MAC地址
# - IP地址和CIDR
# - 广播地址
# 链路控制
ip link set eth0 up # 启用eth0
ip link set eth0 down # 禁用eth0
ip link show # 显示所有网络接口的链路层信息
# 统计信息
ip -s link show eth0 # 显示eth0的详细统计信息:
# - RX/TX bytes:流量统计
# - errors:错误计数
# - dropped:丢包计数
1.3 路由管理
# 传统命令
route -n # 数字格式显示路由表,不解析主机名
# 输出包含:
# - Destination:目标网络
# - Gateway:网关
# - Genmask:网络掩码
# - Flags:路由标志
# - Metric:路由度量值
# 现代命令
ip route # 显示主路由表
ip route show table main # 明确指定主路由表
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 # 添加静态路由
ip route del 192.168.2.0/24 # 删除路由
# 策略路由
ip rule list # 显示路由策略
1.4 网络连接状态
# netstat(传统)
netstat -tulnp # 显示所有TCP/UDP监听端口和对应进程
# -t:TCP连接
# -u:UDP连接
# -l:监听状态
# -n:数字显示
# -p:显示进程PID和名称
# ss(推荐替代)
ss -tulnp # 更高效的系统套接字查看工具
ss -s # 显示汇总统计:
# - 总TCP连接数
# - 各种状态连接数
# - 内存使用情况
# 连接跟踪
ss -tan state established # 仅显示已建立的TCP连接
2. 静态IP配置详解
2.1 配置文件详解
# 配置文件路径(CentOS7)
/etc/sysconfig/network-scripts/ifcfg-eth0
# 完整配置示例
TYPE=Ethernet # 接口类型(Ethernet/Bond等)
PROXY_METHOD=none # 代理设置
BROWSER_ONLY=no
BOOTPROTO=static # 静态配置(可选:dhcp/none)
DEFROUTE=yes # 是否作为默认路由
IPV4_FAILURE_FATAL=no
IPV6INIT=yes # 是否初始化IPv6
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0 # 连接名称
UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 唯一标识
DEVICE=eth0 # 物理设备名
ONBOOT=yes # 开机自动启动
IPADDR=192.168.1.100 # 静态IP地址
PREFIX=24 # 或使用NETMASK=255.255.255.0
GATEWAY=192.168.1.1 # 默认网关
DNS1=8.8.8.8 # 主DNS
DNS2=8.8.4.4 # 备DNS
DOMAIN=example.com # 搜索域
MTU=1500 # 可选MTU设置
2.2 服务重启与验证
# CentOS7服务管理
systemctl restart network # 重启网络服务
systemctl status network # 检查服务状态
# CentOS8 NetworkManager
nmcli connection reload # 重载配置文件
nmcli connection up eth0 # 激活eth0连接
# 验证配置
ip addr show eth0 # 确认IP配置
ping -c 4 192.168.1.1 # 测试网关连通性
ping -c 4 8.8.8.8 # 测试外网连通性
nslookup google.com # 测试DNS解析
3. NetworkManager高级管理
3.1 连接管理
# 查看所有连接
nmcli connection show # 显示所有配置的连接
# 输出包含:
# - 连接名称
# - UUID
# - 类型
# - 设备
# 查看设备状态
nmcli device status # 显示物理设备状态
# - connected:已连接
# - disconnected:未连接
# - unavailable:不可用
# 详细连接信息
nmcli connection show eth0 # 显示eth0连接的所有配置
3.2 连接配置示例
# 添加静态IP连接
nmcli connection add type ethernet \
con-name office-lan \
ifname eth0 \
ip4 192.168.10.50/24 \
gw4 192.168.10.1 \
ipv4.dns "8.8.8.8 8.8.4.4" \
ipv4.method manual
# 修改现有连接
nmcli connection modify office-lan \
ipv4.addresses "192.168.10.100/24" \
ipv4.gateway "192.168.10.1" \
ipv4.dns "192.168.10.2 8.8.8.8" \
connection.autoconnect yes
# 激活连接
nmcli connection up office-lan
4. DNS配置深度解析
4.1 配置文件架构
# 主配置文件
/etc/resolv.conf # 由NetworkManager动态管理
# 典型内容:
# nameserver 8.8.8.8
# search example.com
# NetworkManager配置
/etc/NetworkManager/NetworkManager.conf
# 控制DNS处理行为
# 关键参数:
# dns=none|default|systemd-resolved
# rc-manager=resolvconf|symlink|file
# 接口特定配置
/etc/sysconfig/network-scripts/ifcfg-eth0
# 可在接口文件中指定DNS
4.2 永久配置方法
# 方法1:通过NetworkManager
nmcli connection modify eth0 \
ipv4.dns "1.1.1.1 1.0.0.1" \
ipv4.dns-search "example.com"
nmcli connection up eth0
# 方法2:修改NetworkManager配置
echo "[main]" > /etc/NetworkManager/conf.d/dns.conf
echo "dns=none" >> /etc/NetworkManager/conf.d/dns.conf
systemctl restart NetworkManager
然后手动编辑/etc/resolv.conf
# 方法3:使用resolvconf(如有安装)
echo "nameserver 1.1.1.1" | resolvconf -a eth0
5. 防火墙高级配置
5.1 服务管理
# 服务控制
systemctl enable --now firewalld # 启用并立即启动
systemctl mask iptables # 禁用传统iptables
# 运行时状态
firewall-cmd --state # 查看运行状态
firewall-cmd --reload # 重载配置
firewall-cmd --complete-reload # 完全重启(会断开现有连接)
5.2 区域管理实战
# 查看默认区域
firewall-cmd --get-default-zone
# 创建新区域
firewall-cmd --permanent --new-zone=restricted
# 设置区域规则
firewall-cmd --zone=restricted --add-service=ssh
firewall-cmd --zone=restricted --add-port=8080/tcp
firewall-cmd --zone=restricted --add-source=192.168.2.0/24
# 应用区域到接口
firewall-cmd --zone=restricted --change-interface=eth1
6. 网络诊断高级技巧
6.1 连通性测试
# 基础测试
ping -c 4 -I eth0 8.8.8.8 # 指定源接口
ping -M do -s 1472 8.8.8.8 # 测试MTU路径
ping -6 google.com # IPv6测试
# 路由诊断
mtr -n 8.8.8.8 # 实时路由跟踪
traceroute -T -p 443 google.com # TCP方式跟踪
# 端口测试
nc -zv 192.168.1.1 22 # 测试TCP端口
nc -zvu 192.168.1.1 53 # 测试UDP端口
6.2 抓包分析
# 基础抓包
tcpdump -i eth0 -nn -w capture.pcap # 抓取原始数据包
tcpdump -i eth0 port 80 # 只抓HTTP流量
tcpdump -i eth0 host 192.168.1.100 # 特定主机流量
# 高级过滤
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
tcpdump -i eth0 'icmp and src host 192.168.1.1'
# 流量分析
tshark -r capture.pcap -qz io,phs # 协议分层统计
7. 生产环境最佳实践
7.1 网络接口绑定
# 创建bond接口
nmcli connection add type bond con-name bond0 ifname bond0 \
mode active-backup miimon 100
# 添加从属接口
nmcli connection add type bond-slave ifname eth0 master bond0
nmcli connection add type bond-slave ifname eth1 master bond0
# 配置bond IP
nmcli connection modify bond0 \
ipv4.addresses '192.168.1.200/24' \
ipv4.gateway '192.168.1.1' \
ipv4.method manual
7.2 VLAN配置
# 创建VLAN接口
nmcli connection add type vlan \
con-name vlan10 \
ifname eth0.10 \
dev eth0 \
id 10 \
ip4 10.10.10.1/24 \
gw4 10.10.10.254
# 验证配置
ip -d link show eth0.10 # 查看VLAN详细信息
8. 网络性能优化
8.1 调优参数
# 查看当前设置
ethtool -k eth0 # 查看offload功能
ethtool -g eth0 # 查看环形缓冲区
# 优化建议配置
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
echo "net.core.wmem_max=4194304" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time=600" >> /etc/sysctl.conf
sysctl -p # 应用配置
# 接口特定优化
ethtool -C eth0 rx-usecs 100 tx-usecs 100
ethtool -G eth0 rx 4096 tx 4096
9. 网络监控与统计
9.1 实时监控工具
# 带宽监控
nload -m -i 102400 -o 102400 eth0 # 以MB为单位显示
iftop -nN -i eth0 # 按流量排序显示
# 连接监控
ss -s # 连接数统计
netstat -nat | awk '{print $6}' | sort | uniq -c # 按状态统计
# 高级统计
sar -n DEV 1 5 # 间隔1秒采样5次
vnstat -l -i eth0 # 实时流量监控
10. 故障处理流程
10.1 系统化排查步骤
物理层检查
ip link show eth0
确认接口状态ethtool eth0
检查链路协商- 检查网线、交换机端口
网络层验证
ping 127.0.0.1
验证本地协议栈ping <网关IP>
验证本地连接traceroute 8.8.8.8
验证路径
传输层测试
nc -zv <IP> <PORT>
测试端口telnet <IP> <PORT>
交互测试tcpdump -i eth0 port <PORT>
抓包分析
应用层诊断
curl -v http://example.com
详细HTTP请求openssl s_client -connect example.com:443
SSL测试- 检查应用日志获取详细信息