
Linux系统网络配置
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
:域名搜索顺序列表- ⚠️
domain
和search
互斥
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 |
恢复传统命名:
- 编辑
/etc/default/grub
:GRUB_CMDLINE_LINUX="net.ifnames=0"
- 重建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正确加载
附录:网络故障诊断流程图
本文档完整覆盖RHEL/CentOS 7+网络管理体系,所有命令均在生产环境验证通过
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 牧之小岛-Allende
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果