前言
CentOS 系统网络配置是服务器运维的基础,本文详细介绍 CentOS 7/8 下的网络配置方法。
不同 CentOS 版本的网络管理方式略有差异,CentOS 7 默认使用 NetworkManager,CentOS 6 使用 network 服务。
查看网络信息
查看 IP 地址
示例输出:
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
| 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 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" 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" PREFIX="24" GATEWAY="192.168.1.1" DNS1="223.5.5.5" DNS2="223.6.6.6"
|
参数说明:
BOOTPROTO:static 静态IP,dhcp 动态获取
ONBOOT:yes 开机启动网卡
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
| 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"
nmcli connection modify ens33 ipv4.method auto
nmcli connection up ens33
|
重启网络服务
1 2 3 4 5 6 7
| systemctl restart NetworkManager
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 2
| nameserver 223.5.5.5 nameserver 223.6.6.6
|
注意:如果使用 NetworkManager 且 /etc/NetworkManager/NetworkManager.conf 中 dns=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
| vi /etc/NetworkManager/NetworkManager.conf
[main] dns=none
systemctl restart NetworkManager
|
配置主机名
查看主机名
修改主机名
1 2 3 4 5
| hostnamectl set-hostname my-server
bash
|
配置 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
| 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
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
| nmcli connection add type vlan con-name vlan100 ifname vlan100 dev ens33 id 100
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
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
| yum install -y tcpdump
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 查看系统日志定位错误。