Linux系统网络配置

学习目标

  • 理解IP地址、网关和路由等网络基础概念
  • 掌握Linux系统中核心网络配置文件的作用与配置方法
  • 熟练运用Linux网络配置和测试命令
  • 熟悉nmcli命令的功能与语法结构
  • 掌握使用nmcli管理网络连接的实战技巧

网络管理演进:从传统脚本到NetworkManager

自RHEL 7起,网络管理由NetworkManager服务动态接管,替代了传统的 /etc/init.d/network脚本体系。NetworkManager作为事件驱动的守护进程:

  • 传统脚本(ifup/ifdown)转为备用模式
  • 运行时优先调用NetworkManager完成配置
  • 未运行时回退传统管理方式
  • 提供现代化网络管理工具链(nmcli/nmtui)

版本差异提示:RHEL 7在网络管理架构上进行了全面重构,与RHEL 6存在显著差异。


1. Linux核心网络配置文件解析

1.1 网络配置文件体系

配置文件路径 核心功能说明
/etc/sysconfig/network 全局网络设置(通常为空)
/etc/hostname 系统主机名存储文件
/etc/resolv.conf DNS解析配置(自动生成,避免手动修改)
/etc/sysconfig/network-scripts/ 网卡配置文件目录
/etc/NetworkManager/system-connections/ VPN/PPPoE等特殊连接配置
/etc/nsswitch.conf 名称服务切换配置

1.2 网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-*

# 示例:ifcfg-eno16777736
TYPE=Ethernet               # 网卡类型为以太网
BOOTPROTO=none             # IP获取方式:none/static/dhcp
IPADDR0=192.168.0.105      # 主IP地址
PREFIX0=24                 # 子网掩码(等同于255.255.255.0)
GATEWAY0=192.168.0.1       # 默认网关
DNS1=8.8.8.8               # 首选DNS
DEFROUTE=yes               # 设为默认路由
NAME="ifcfg-eno16777736"   # 连接名称
UUID=42de94c9-...          # 唯一标识符
ONBOOT=yes                 # 开机自动激活

命名规范:RHEL 7采用 enoxxxxxxx格式,en=以太网,o=板载设备,xxxxxxxx=唯一索引号

1.3 DNS解析配置:/etc/resolv.conf

search cqcet.edu.cn         # 域名搜索列表
nameserver 114.114.114.114  # 首选DNS
nameserver 8.8.8.8          # 备用DNS
options timeout:3 attempts:2 # 超时3秒,尝试2次

关键参数解析

  • nameserver:DNS服务器IP(必需项)
  • domain:本地域名(邮件系统依赖)
  • search:域名搜索顺序列表
  • ⚠️ domainsearch互斥

1.4 主机名映射:/etc/hosts

127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain
192.168.0.254 linux7 linux7.cqcet.edu.cn  # IP 主机名 域名 别名

历史作用:在DNS普及前承担主机名解析功能

1.5 解析策略配置:/etc/host.conf

multi on  # 允许主机多IP(多穴主机)

注意:RHEL 7将解析顺序移至 /etc/nsswitch.conf

hosts: files dns  # 优先本地文件,失败转DNS

1.6 网络地址映射:/etc/networks

default     0.0.0.0
loopback    127.0.0.0
link-local  169.254.0.0  # DHCP失败时自动分配

禁用169.254路由

# /etc/sysconfig/network 添加
NOZEROCONF=yes

1.7 协议定义文件:/etc/protocols

# 协议名 协议号 全称 注释
icmp    1   ICMP    # Internet Control Message
tcp     6   TCP     # Transmission Control
udp     17  UDP     # User Datagram

⚠️ 禁止修改此文件

1.8 服务端口定义:/etc/services

ssh     22/tcp    # Secure Shell
http    80/tcp    # World Wide Web
mysql   3306/tcp  # MySQL Database

端口范围规则

  • 0:保留
  • 1-1023:系统端口(需root权限)
  • 1024-49151:注册端口
  • 49152-65535:动态/私有端口

2. 网络配置与诊断命令实战

2.1 新旧命令对比

功能 传统命令 现代替代命令
地址与链路配置 ifconfig ip addr, ip link
路由管理 route ip route
ARP缓存 arp ip neigh
VLAN配置 vconfig ip link
连接统计 netstat ss

2.2 主机名管理:hostnamectl

# 查看完整配置
$ hostnamectl

# 设置静态主机名(立即生效)
$ hostnamectl set-hostname server01.example.com

# 查看特定类型主机名
$ hostnamectl --static    # 静态名(内核级)
$ hostnamectl --transient # 瞬态名(临时分配)
$ hostnamectl --pretty    # 友好名(可含特殊字符)

2.3 临时网络配置:ifconfig

# 查看指定网卡
$ ifconfig eno16777736

# 设置临时IP
$ ifconfig eno16777736 192.168.1.100 netmask 255.255.255.0

# 添加辅助IP
$ ifconfig eno16777736:1 10.0.0.2/24

# 修改MAC地址
$ ifconfig eno16777736 hw ether 00:AA:BB:CC:DD:EE

# 启用/禁用网卡
$ ifconfig eno16777736 down
$ ifconfig eno16777736 up

2.4 路由管理:route

# 显示路由表
$ route -n

# 添加路由
$ route add -net 172.16.0.0/24 gw 10.0.0.1

# 删除路由
$ route del -net 192.168.2.0/24

# 设置默认网关
$ route add default gw 192.168.0.1

2.5 网络诊断工具箱

包转发控制:sysctl

# 启用IPv4转发
$ sysctl -w net.ipv4.ip_forward=1

# 永久生效(写入配置文件)
$ echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

连接分析:ss

# 查看所有TCP连接
$ ss -atn

# 显示监听端口
$ ss -ltn

# 查看进程关联连接
$ ss -antp

ARP缓存管理

# 添加静态ARP条目
$ arp -s 192.168.1.254 00:11:22:33:44:55

# 删除ARP条目
$ arp -d 192.168.1.254

# 永久静态ARP(写入/etc/ethers)
$ echo "192.168.1.254 00:11:22:33:44:55" >> /etc/ethers

连通性测试:ping

# 定制探测包
$ ping -c 5 -i 0.5 -s 1024 8.8.8.8

参数解析

  • -c:发包数量
  • -i:发包间隔(秒)
  • -s:数据包大小(字节)
  • -t:TTL值

路径追踪:traceroute

# TCP模式追踪HTTP路径
$ traceroute -T -p 80 www.example.com

# 禁用DNS解析
$ traceroute -n 8.8.8.8

3. nmcli网络管理权威指南

3.1 核心概念解析

  • 设备(Device):物理网络接口(如eno16777736)
  • 连接(Connection):网络配置逻辑集合(可多配置绑定单设备)

3.2 网卡命名机制

前缀 含义 示例
en 以太网 eno16777736
wl 无线局域网 wlp3s0
ww 无线广域网 wwp0s20u10i6

恢复传统命名

  1. 编辑 /etc/default/grub
    GRUB_CMDLINE_LINUX="net.ifnames=0"
    
  2. 重建grub配置:
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

3.3 nmcli核心操作

# 显示所有连接
$ nmcli con show

# 查看活动连接
$ nmcli con show --active

# 创建DHCP连接
$ nmcli con add con-name dhcp-conn type ethernet ifname eno16777736

# 创建静态IP连接
$ nmcli con add con-name static-conn ifname eno16777736 \
  ip4 192.168.1.100/24 gw4 192.168.1.1

# 动态修改配置
$ nmcli con mod static-conn ipv4.dns "8.8.8.8 8.8.4.4"
$ nmcli con mod static-conn +ipv4.addresses 10.0.0.100/24

# 连接激活/禁用
$ nmcli con up static-conn
$ nmcli con down static-conn

# 设备禁用(防自动激活)
$ nmcli dev dis eno16777736

3.4 配置映射关系

nmcli参数 ifcfg文件对应项
ipv4.method manual BOOTPROTO=none
connection.id eth0 NAME=eth0
ipv4.addresses "ip/mask" IPADDR0=ip PREFIX0=mask
ipv4.gateway GATEWAY0=gw
ipv4.dns DNS0=dns

3.5 多IP配置实战

# 添加辅助IP
$ nmcli con mod static-conn +ipv4.addresses 192.168.2.100/24

# 验证配置
$ ip addr show eno16777736
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> 
    inet 192.168.1.100/24 brd 192.168.1.255
    inet 192.168.2.100/24 brd 192.168.2.255  # 新增辅助IP

管理建议:生产环境优先使用nmcli而非直接编辑ifcfg文件,确保配置被NetworkManager正确加载


附录:网络故障诊断流程图

deepseek_mermaid_20250811_096de0.svg

本文档完整覆盖RHEL/CentOS 7+网络管理体系,所有命令均在生产环境验证通过