CentOS 网络配置详解

前言

CentOS 系统网络配置是服务器运维的基础,本文详细介绍 CentOS 7/8 下的网络配置方法。

不同 CentOS 版本的网络管理方式略有差异,CentOS 7 默认使用 NetworkManager,CentOS 6 使用 network 服务。

查看网络信息

查看 IP 地址

1
2
3
4
5
# 查看所有网络接口信息
ip addr

# 或者使用旧版命令
ifconfig

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:ab:cd:ef brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feab:cdef/64 scope link
valid_lft forever preferred_lft forever

lo 是本地回环接口,ens33 是物理网卡(不同机器网卡名可能不同,如 eth0、ens192、enp0s3 等)。

查看路由表

1
2
3
4
5
# 查看路由表
ip route

# 或者
route -n

示例输出:

1
2
default via 192.168.1.1 dev ens33 proto static metric 100
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100 metric 100

default via 192.168.1.1 表示默认网关为 192.168.1.1

查看 DNS

1
cat /etc/resolv.conf

示例输出:

1
2
3
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 223.6.6.6

查看网络连接状态

1
2
3
4
5
# 查看网络连接
nmcli device status

# 查看连接详情
nmcli connection show

示例输出:

1
2
3
DEVICE  TYPE      STATE      CONNECTION         
ens33 ethernet 连接 ens33
lo loopback 未管理 --

配置静态 IP

通过网卡配置文件

网卡配置文件位于 /etc/sysconfig/network-scripts/ 目录下。

1
2
3
4
5
# 进入配置目录
cd /etc/sysconfig/network-scripts/

# 查看网卡配置文件
ls ifcfg-*

编辑对应网卡的配置文件:

1
vi /etc/sysconfig/network-scripts/ifcfg-ens33

静态 IP 配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 静态IP,若为 dhcp 则为动态获取
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="f980e452-7c5a-4026-950d-a574da424a04"
DEVICE="ens33"
ONBOOT="yes" # 开机启动

IPADDR="192.168.1.100" # IP地址
PREFIX="24" # 子网掩码(24 即 255.255.255.0)
GATEWAY="192.168.1.1" # 网关
DNS1="223.5.5.5" # 首选DNS
DNS2="223.6.6.6" # 备用DNS

参数说明:

  • BOOTPROTOstatic 静态IP,dhcp 动态获取
  • ONBOOTyes 开机启动网卡
  • PREFIX:子网掩码位数,也可以用 NETMASK=255.255.255.0

DHCP 配置示例

1
2
3
4
5
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"

使用 nmcli 命令行配置

1
2
3
4
5
6
7
8
9
10
11
# 修改为静态IP
nmcli connection modify ens33 ipv4.method manual
nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24
nmcli connection modify ens33 ipv4.gateway 192.168.1.1
nmcli connection modify ens33 ipv4.dns "223.5.5.5 223.6.6.6"

# 修改为DHCP
nmcli connection modify ens33 ipv4.method auto

# 应用配置
nmcli connection up ens33

重启网络服务

1
2
3
4
5
6
7
# CentOS 7/8 重启 NetworkManager
systemctl restart NetworkManager

# CentOS 6 重启 network
service network restart
# 或者
/etc/init.d/network restart

配置 DNS

通过网卡配置文件

ifcfg-ens33 中添加:

1
2
DNS1="223.5.5.5"
DNS2="223.6.6.6"

使用这种方式配置的 DNS,重启网络后会自动写入 /etc/resolv.conf

直接修改 resolv.conf

1
vi /etc/resolv.conf
1
2
nameserver 223.5.5.5
nameserver 223.6.6.6

注意:如果使用 NetworkManager 且 /etc/NetworkManager/NetworkManager.confdns=none 未设置,重启网络后手动修改的 /etc/resolv.conf 可能被覆盖。

使用 nmcli 配置 DNS

1
2
nmcli connection modify ens33 ipv4.dns "223.5.5.5 223.6.6.6"
nmcli connection up ens33

关闭 NetworkManager 的 DNS 覆盖

1
2
3
4
5
6
7
8
9
# 编辑 NetworkManager 配置
vi /etc/NetworkManager/NetworkManager.conf

# 在 [main] 段添加
[main]
dns=none

# 重启服务
systemctl restart NetworkManager

配置主机名

查看主机名

1
2
3
4
hostname

# 查看详细主机名信息
hostnamectl

修改主机名

1
2
3
4
5
# 设置主机名
hostnamectl set-hostname my-server

# 立即生效
bash

配置 hosts

1
vi /etc/hosts
1
2
3
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 my-server

配置路由

添加默认网关

1
2
3
4
5
# 临时添加
ip route add default via 192.168.1.1

# 永久添加(写入网卡配置文件)
GATEWAY="192.168.1.1"

添加静态路由

临时添加

1
2
3
4
5
# 添加路由
ip route add 10.0.0.0/8 via 192.168.1.254

# 删除路由
ip route del 10.0.0.0/8

永久添加

/etc/sysconfig/network-scripts/ 下创建路由配置文件:

1
vi /etc/sysconfig/network-scripts/route-ens33
1
2
3
4
5
6
7
8
9
10
11
12
# 添加静态路由
10.0.0.0/8 via 192.168.1.254
172.16.0.0/12 via 192.168.1.254

# 或者使用旧格式
ADDRESS0=10.0.0.0
NETMASK0=255.0.0.0
GATEWAY0=192.168.1.254

ADDRESS1=172.16.0.0
NETMASK1=255.240.0.0
GATEWAY1=192.168.1.254

重启网络后生效:systemctl restart NetworkManager

配置双网卡绑定(bond)

多网卡绑定可以提高网络可用性和带宽。

创建 bond 接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建 bond 接口
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup

# 添加从属网卡
nmcli connection add type bond-slave con-name bond0-port1 ifname ens33 master bond0
nmcli connection add type bond-slave con-name bond0-port2 ifname ens44 master bond0

# 配置 bond IP
nmcli connection modify bond0 ipv4.method manual
nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
nmcli connection modify bond0 ipv4.gateway 192.168.1.1
nmcli connection modify bond0 ipv4.dns "223.5.5.5 223.6.6.6"

# 激活
nmcli connection up bond0

bond 模式说明

模式 名称 说明
0 balance-rr 轮询模式,负载均衡,需要交换机支持
1 active-backup 主备模式,只有一块网卡工作
2 balance-xor XOR 哈希负载均衡
3 broadcast 广播模式,所有网卡广播
4 802.3ad 动态链接聚合,需交换机支持 LACP
5 balance-tlb 适配器传输负载均衡
6 balance-alb 适配器负载均衡(包括接收)

推荐模式:普通场景用 active-backup(模式1),高性能场景用 802.3ad(模式4)。

配置 VLAN

1
2
3
4
5
6
7
8
9
# 创建 VLAN 接口
nmcli connection add type vlan con-name vlan100 ifname vlan100 dev ens33 id 100

# 配置 IP
nmcli connection modify vlan100 ipv4.method manual
nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/24

# 激活
nmcli connection up vlan100

网络故障排查

ping 测试

1
2
3
4
5
# 测试连通性
ping -c 4 192.168.1.1

# 测试 DNS 解析
ping -c 4 www.baidu.com

traceroute 路由追踪

1
2
3
4
5
# 安装
yum install -y traceroute

# 路由追踪
traceroute www.baidu.com

查看端口监听

1
2
3
4
5
# 查看监听端口
ss -tlnp

# 或者
netstat -tlnp

抓包分析

1
2
3
4
5
6
7
8
# 安装 tcpdump
yum install -y tcpdump

# 抓取 ens33 网卡 eth0 的 80 端口流量
tcpdump -i ens33 port 80 -nn

# 抓取并保存到文件
tcpdump -i ens33 -w capture.pcap

常用命令总结

命令 功能
ip addr 查看 IP 地址
ip route 查看路由表
nmcli device status 查看网络设备状态
nmcli connection show 查看网络连接
systemctl restart NetworkManager 重启网络服务
hostnamectl set-hostname 修改主机名
ss -tlnp 查看监听端口
ping 网络连通性测试
traceroute 路由追踪
tcpdump 网络抓包
curl -v 测试 HTTP 访问

如果配置过程中遇到问题,建议先检查网卡配置文件语法,再通过 journalctl -xe 查看系统日志定位错误。