您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375修改CentOS网卡配置需编辑/etc/sysconfig/network-scripts/下的ifcfg-文件,如ifcfg-eth0,设置静态IP或DHCP;对于多网卡绑定,需创建ifcfg-bond0并配置BONDING_OPTS,将物理网卡设为从属接口,最后重启网络服务生效。
在CentOS系统中,修改网卡配置的核心操作是编辑位于
/etc/sysconfig/network-scripts/目录下的
ifcfg-文件,例如
ifcfg-eth0或
ifcfg-enpXsY,然后通过重启网络服务或特定的网卡接口来应用更改。对于多网卡绑定(Bonding),则需要创建新的
ifcfg-bond0配置文件,并相应地修改物理网卡的配置,将它们设定为Bonding接口的从属设备,以实现网络冗余或带宽聚合。
修改CentOS网卡配置通常涉及几个步骤,这取决于你是要配置单网卡,还是进行多网卡绑定。在我看来,直接编辑配置文件是最直接也最能理解其原理的方式,尽管图形界面工具也很方便。
1. 单网卡配置修改
首先,我们需要找到要修改的网卡配置文件。通常,它们位于
/etc/sysconfig/network-scripts/目录下,命名格式为
ifcfg-加上网卡名称,比如
ifcfg-eth0或
ifcfg-enp0s3。
静态IP配置示例: 假设我们要将
eth0配置为静态IP地址。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
文件内容大致会是这样,你需要根据实际情况修改或添加:
TYPE=Ethernet BOOTPROTO=static # 设置为静态IP DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eth0 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 每个网卡都有一个唯一的UUID DEVICE=eth0 ONBOOT=yes # 系统启动时激活网卡 IPADDR=192.168.1.100 # 你的IP地址 NETMASK=255.255.255.0 # 子网掩码 GATEWAY=192.168.1.1 # 网关 DNS1=8.8.8.8 # 首选DNS服务器 DNS2=8.8.4.4 # 备用DNS服务器
如果想使用DHCP,只需将
BOOTPROTO=static改为
BOOTPROTO=dhcp,并删除
IPADDR、
NETMASK、
GATEWAY和
DNS相关的行即可。
应用更改: 修改完配置文件后,需要重启网络服务或仅重启该网卡。 对于CentOS 7/8,通常使用
NetworkManager或
network服务:
sudo systemctl restart network # 如果使用传统的network服务 # 或者 sudo nmcli connection reload # 重新加载NetworkManager配置 sudo nmcli connection up eth0 # 激活eth0连接
检查网络状态:
ip a或
ifconfig(如果已安装)。
2. 多网卡绑定(Bonding)配置
多网卡绑定能提供冗余或增加带宽,这在服务器环境中非常常见。我个人偏爱
active-backup模式,因为它配置简单,且能有效防止单点故障。
加载Bonding模块: 首先确保Bonding模块已加载。
sudo modprobe bonding
为了让它在系统重启后依然生效,需要将其添加到模块加载配置中:
echo "bonding" | sudo tee /etc/modules-load.d/bonding.conf
创建Bonding接口配置文件: 创建一个名为
ifcfg-bond0的新文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-bond0
文件内容示例(以
mode=1,即
active-backup为例):
DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes BOOTPROTO=static IPADDR=192.168.1.200 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes BONDING_OPTS="mode=1 miimon=100" # mode=1表示active-backup,miimon=100表示每100ms检查一次链路状态
BONDING_OPTS是关键,它定义了Bonding模式和其他参数。
修改物理网卡配置文件: 将需要绑定的物理网卡(如
eth0和
eth1)配置为
bond0的从属接口。 对于
ifcfg-eth0:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改为:
TYPE=Ethernet BOOTPROTO=none # 物理网卡本身不再获取IP NAME=eth0 DEVICE=eth0 ONBOOT=yes MASTER=bond0 # 指定主接口为bond0 SLAVE=yes # 标记为从属接口 # UUID等其他行保持不变或删除IP相关配置
对于
ifcfg-eth1,进行类似的修改:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改为:
TYPE=Ethernet BOOTPROTO=none NAME=eth1 DEVICE=eth1 ONBOOT=yes MASTER=bond0 SLAVE=yes
应用更改:
sudo systemctl restart network # 或者 sudo nmcli connection reload sudo nmcli connection up bond0
验证Bonding状态:
cat /proc/net/bonding/bond0
这将显示Bonding模式、从属接口以及它们的状态(哪个是活动的,哪个是备用的)。
理解CentOS网卡配置文件的每一个参数,对于进行精细化调整和故障排查至关重要。这些
ifcfg-文件,在我看来,是系统网络配置的“基因组”,每一个字段都承载着特定的功能。
常见配置参数详解:
TYPE: 定义接口类型,如
Ethernet、
Bridge、
Bond等。对于物理网卡,通常是
Ethernet。
DEVICE: 指定设备名称,如
eth0、
enp0s3、
bond0。
NAME: 连接名称,
NetworkManager使用此名称。通常与
DEVICE相同。
UUID: 设备的唯一标识符,
NetworkManager用来识别连接。通常无需手动修改。
ONBOOT: 设置为
yes表示系统启动时激活此接口;
no则不激活。
BOOTPROTO: 引导协议。
none:不使用任何协议,通常用于从属接口或需要手动配置的情况。
static:静态IP配置。
dhcp:通过DHCP服务器获取IP地址。
IPADDR: 静态IP地址。
NETMASK: 子网掩码。
PREFIX: CIDR格式的子网掩码,例如
PREFIX=24等同于
NETMASK=255.255.255.0。与
NETMASK二选一。
GATEWAY: 默认网关。
DNS1,
DNS2: DNS服务器地址。
MASTER,
SLAVE: 用于Bonding或Bridge配置,
MASTER指向主接口,
SLAVE=yes表示当前接口是从属接口。
BONDING_OPTS: Bond接口的特定选项,如
mode、
miimon等。
NM_CONTROLLED:
yes或
no,表示该接口是否由
NetworkManager管理。设置为
no可以避免
NetworkManager的干扰,但会失去其便利性。
常见问题排查:
当网络配置出现问题时,我通常会从以下几个角度入手:
vi编辑器通常不会报错,所以要仔细核对。
sudo systemctl status network或
sudo systemctl status NetworkManager:查看网络服务的运行状态和日志,这往往能直接指出问题所在。
sudo journalctl -xe | grep -i network:更详细地查看系统日志中与网络相关的错误信息。
ip route show:检查默认网关和路由表是否正确。
ping <网关IP>:测试与网关的连通性。
ping 8.8.8.8:测试外部网络的连通性,同时检查DNS解析是否正常。
sudo systemctl status firewalld:如果
firewalld正在运行,它可能会阻止某些流量。
sudo firewall-cmd --list-all:查看当前的防火墙规则。
sudo systemctl stop firewalld。
lspci -k | grep -EA3 'Ethernet|Network':查看网卡及其正在使用的内核模块。
sudo dmesg | grep -i eth:查看启动时网卡相关的内核消息。
NetworkManager与
network服务冲突: 在某些旧版本的CentOS或特定配置下,这两个服务可能会相互干扰。通常建议只启用其中一个来管理网络。
Bonding不仅仅是简单的聚合,其内部的模式选择直接决定了你的网络性能、冗余能力和实现复杂度。在我多年的实践中,选择合适的Bonding模式是确保高可用性和性能的关键。
Bonding模式详解:
mode=0
(balance-rr / Round-robin):
mode=1
(active-backup):
mode=2
(balance-xor):
mode=0和
mode=4理想,可能出现某个链路负载过高的情况。
mode=3
(broadcast):
mode=4
(802.3ad / LACP):
mode=5
(tlb / Adaptive Transmit Load Balancing):
mode=6
(alb / Adaptive Load Balancing):
mode=5的基础上,增加了入站流量的负载均衡(通过ARP欺骗实现)。
mode=5类似,但对入站负载均衡也有需求。
最佳实践:
mode=1是首选;如果追求最大带宽和智能管理,且交换机支持,
mode=4是最佳。
miimon参数: 务必设置
miimon参数(例如
miimon=100),它定义了Bonding驱动检查从属接口链路状态的频率(毫秒)。这对于快速检测链路故障至关重要。
mode=0和
mode=4,必须确保交换机的端口组配置与Bonding模式相匹配,否则可能导致网络不通或性能异常。
cat /proc/net/bonding/bond0是一个很好的起点。
虽然直接编辑配置文件能让我们深入理解网络配置的底层逻辑,但在日常管理中,
nmcli和
nmtui这两个工具无疑是效率的利器,尤其是在
NetworkManager作为默认网络管理服务的CentOS 7/8中。它们提供了一种更现代化、更友好的交互方式。
nmtui
:图形化文本界面,快速上手
nmtui(NetworkManager Text User Interface)是一个基于文本的图形化界面工具,非常适合那些不习惯命令行参数或需要快速进行网络配置的场景。它的交互式菜单,在我看来,大大降低了配置错误的风险。
启动nmtui
:
sudo nmtui
启动后,你会看到一个主菜单,包含“Edit a connection”、“Activate a connection”、“Set system hostname”等选项。
编辑连接: 选择“Edit a connection”,然后选择你想要修改的网卡连接(例如
eth0或
bond0),按下回车。 在这里,你可以直观地修改IP地址、子网掩码、网关、DNS服务器,以及设置是否自动启动(
Automatically connect)。对于Bonding,你也可以在这里添加或修改从属接口。 修改完成后,选择“OK”,然后回到主菜单,选择“Activate a connection”来激活你修改的连接。
nmcli
:命令行工具,强大且可脚本化
nmcli(NetworkManager Command Line Interface)是
NetworkManager的命令行接口,它功能强大