1. CentOS 7网络配置基础
在Linux服务器运维中,网络配置是最基础的技能之一。CentOS 7作为企业级Linux发行版,其网络配置方式与早期版本有显著不同,主要采用了NetworkManager服务来管理网络连接。对于服务器环境,我们通常需要配置静态IP地址以确保服务的稳定性。
1.1 网络配置文件解析
CentOS 7的网络配置文件主要存放在/etc/sysconfig/network-scripts/目录下,每个网卡对应一个ifcfg-开头的配置文件。以常见的eth0网卡为例,其配置文件为ifcfg-eth0。这个文件包含了网卡的所有配置参数,我们需要重点关注以下几个关键项:
code复制DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
注意:在实际操作前,建议先备份原始配置文件:
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
1.2 网卡命名规则变化
CentOS 7采用了新的网卡命名规则,不再是简单的eth0、eth1,而是基于固件、拓扑和位置信息生成的持久化名称。这可能导致一些习惯旧命名的管理员感到困惑。常见的命名格式包括:
- eno1:板载网卡
- ens33:PCI-E网卡
- enp0s3:PCI网卡
可以通过以下命令查看当前系统的网卡信息:
bash复制ip link show
nmcli device status
2. 静态IP地址配置详解
2.1 通过配置文件手动配置
这是最传统也是最可靠的方式,适合所有CentOS 7版本。具体步骤如下:
- 使用文本编辑器打开目标网卡配置文件:
bash复制vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改或添加以下关键参数:
code复制TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8
- 保存文件后,重启网络服务使配置生效:
bash复制systemctl restart network
常见问题:如果重启网络服务时报错,可以尝试
systemctl stop NetworkManager然后再次重启network服务。
2.2 使用nmcli命令行工具
NetworkManager提供的nmcli工具是CentOS 7推荐的网络配置方式,特别适合在无GUI环境的服务器上使用。
配置静态IP的基本命令流程:
bash复制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 "192.168.1.1 8.8.8.8"
nmcli connection modify ens33 ipv4.method manual
nmcli connection up ens33
查看当前连接状态:
bash复制nmcli connection show ens33
2.3 使用nmtui文本界面工具
对于不熟悉命令行的用户,CentOS 7提供了基于文本的用户界面工具nmtui:
- 运行命令:
bash复制nmtui
- 选择"Edit a connection",选择要配置的网卡
- 在IPv4 CONFIGURATION中选择"Manual"
- 填写IP地址、网关和DNS信息
- 选择OK保存,Back返回,然后选择"Activate a connection"激活配置
3. 网络配置验证与排错
3.1 基本网络测试命令
配置完成后,需要使用以下命令验证网络是否正常工作:
- 检查IP地址是否配置成功:
bash复制ip addr show ens33
- 测试本地网络连通性:
bash复制ping -c 4 192.168.1.1
- 测试外网连通性:
bash复制ping -c 4 baidu.com
- 检查路由表:
bash复制ip route show
- 测试DNS解析:
bash复制nslookup baidu.com
3.2 常见问题排查
-
网络服务无法启动
- 检查配置文件语法:
cat /etc/sysconfig/network-scripts/ifcfg-ens33 - 查看日志信息:
journalctl -xe - 尝试临时关闭NetworkManager:
systemctl stop NetworkManager
- 检查配置文件语法:
-
IP地址冲突
- 使用arping检测IP是否已被占用:
bash复制
arping -I ens33 192.168.1.100 - 如果发现冲突,需要更换IP地址
- 使用arping检测IP是否已被占用:
-
DNS解析失败
- 检查/etc/resolv.conf文件
- 测试指定DNS服务器:
dig @8.8.8.8 baidu.com
-
配置重启后失效
- 确保ONBOOT=yes
- 检查NetworkManager是否覆盖了配置
4. 高级网络配置技巧
4.1 多IP地址配置
有时我们需要为单个网卡配置多个IP地址,可以通过以下方式实现:
- 创建子接口配置文件:
bash复制cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0
- 修改子接口配置文件:
code复制DEVICE=ens33:0
IPADDR=192.168.1.101
NETMASK=255.255.255.0
- 重启网络服务:
bash复制systemctl restart network
或者使用ip命令临时添加:
bash复制ip addr add 192.168.1.101/24 dev ens33 label ens33:0
4.2 绑定网络接口
对于需要高可用性的服务器,可以配置网卡绑定(bonding):
- 创建绑定接口配置文件:
bash复制vi /etc/sysconfig/network-scripts/ifcfg-bond0
内容如下:
code复制DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
BOOTPROTO=static
BONDING_OPTS="mode=1 miimon=100"
- 修改物理网卡配置文件,将它们加入bond:
bash复制vi /etc/sysconfig/network-scripts/ifcfg-ens33
内容修改为:
code复制DEVICE=ens33
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
4.3 网络性能调优
对于高负载服务器,可以调整以下内核参数优化网络性能:
- 增加TCP缓冲区大小:
bash复制echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf
- 启用TCP窗口缩放:
bash复制echo 'net.ipv4.tcp_window_scaling=1' >> /etc/sysctl.conf
- 应用修改:
bash复制sysctl -p
5. 防火墙与SELinux注意事项
5.1 防火墙配置
CentOS 7默认使用firewalld作为防火墙,配置不当可能导致网络访问问题:
- 查看当前防火墙规则:
bash复制firewall-cmd --list-all
- 添加允许规则示例:
bash复制firewall-cmd --permanent --add-service=http
firewall-cmd --reload
- 完全关闭防火墙(不推荐生产环境):
bash复制systemctl stop firewalld
systemctl disable firewalld
5.2 SELinux影响
SELinux可能会影响网络服务的正常运行,调试时可以临时设置为宽容模式:
bash复制setenforce 0
要永久禁用(需谨慎):
bash复制vi /etc/selinux/config
修改为:
code复制SELINUX=disabled
6. 网络配置持久化与备份
6.1 配置备份策略
建议对网络配置文件进行定期备份:
- 创建备份目录:
bash复制mkdir -p /backup/network
- 设置每日自动备份:
bash复制echo 'cp /etc/sysconfig/network-scripts/* /backup/network/' >> /etc/cron.daily/network-backup
chmod +x /etc/cron.daily/network-backup
6.2 快速恢复配置
当网络配置出现问题时,可以快速从备份恢复:
bash复制cp /backup/network/ifcfg-ens33 /etc/sysconfig/network-scripts/
systemctl restart network
6.3 使用版本控制系统
对于重要服务器,可以考虑将配置文件纳入版本控制:
bash复制yum install -y git
cd /etc/sysconfig
git init
git add network-scripts/
git commit -m "Initial network configuration"
每次修改后提交变更:
bash复制git commit -a -m "Updated network configuration"
