刚接触Linux系统管理时,网络配置往往是第一个拦路虎。作为在运维岗位摸爬滚打多年的老手,我清楚地记得自己第一次配置CentOS网络时的手忙脚乱。本文将结合实战经验,详细解析CentOS 7在VMware环境下的三种网络模式配置,特别是工作中最常用的NAT模式。不同于官方文档的抽象说明,这里分享的都是血泪教训换来的实操细节。
桥接模式(Bridged)相当于在物理网络中新增了一台独立设备。配置时需要特别注意网卡选择:
code复制1. 在VMware菜单选择"编辑"->"虚拟网络编辑器"
2. 选中vmnet0,勾选"桥接模式"复选框
3. 关键步骤:在下拉菜单中选择当前宿主机正在使用的物理网卡
- 有线连接通常显示为"Realtek PCIe GbE Family Controller"等
- 无线连接一般为"Intel(R) Wireless-AC 9560"等
4. 在虚拟机设置中将网络适配器改为桥接模式
注意:在办公网络环境中,桥接模式可能导致IP冲突。我曾遇到过因DHCP分配冲突导致整个部门网络异常的情况,建议仅在可控环境使用。
NAT(Network Address Translation)模式通过虚拟网关实现网络共享,是开发环境的首选方案。其拓扑结构相当于:
code复制[物理网络] <- [VMnet8虚拟交换机] <- [NAT设备] <- [虚拟机]
配置时需要特别注意子网划分:
CentOS 7的网络配置文件位于/etc/sysconfig/network-scripts/目录,主接口通常为ifcfg-ens33。以下是一个生产环境可用的配置模板:
bash复制TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.200.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.200.2"
DNS1="8.8.8.8"
DNS2="114.114.114.114"
关键参数说明:
ONBOOT=yes 确保开机自动激活网卡DNS设置建议同时配置国内外DNS提高解析可靠性当出现网络连接问题时,按以下顺序排查:
物理层检查
bash复制ethtool ens33 | grep "Link detected"
确认网卡物理连接状态
IP配置验证
bash复制ip addr show ens33
route -n
网关连通性测试
bash复制ping 192.168.200.2
traceroute 8.8.8.8
血泪教训:曾经耗费3小时排查网络故障,最终发现是VMware的NAT服务未启动。记住这个命令:
bash复制systemctl restart vmware-nat
生产环境中规范的主机名管理至关重要:
bash复制# 查看当前主机名
hostnamectl status
# 永久修改主机名
hostnamectl set-hostname webserver01
# 配置本地域名解析
echo "192.168.200.101 webserver01" >> /etc/hosts
CentOS 7使用systemd管理运行级别:
bash复制# 切换到多用户文本模式(服务器推荐)
systemctl isolate multi-user.target
# 设置默认启动为命令行模式
systemctl set-default multi-user.target
# 临时启动图形界面
startx
实际案例:某次在1U服务器上误启图形界面,导致内存耗尽服务崩溃。切记生产环境慎用图形模式。
配置好网络后,SSH是最常用的管理方式。推荐以下安全加固措施:
修改默认端口:
bash复制sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
禁止root直接登录:
bash复制sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
配置密钥认证:
bash复制ssh-keygen -t rsa
ssh-copy-id -p 2222 user@192.168.200.101
配置完成后记得重启服务:
bash复制systemctl restart sshd
对于高负载服务器,建议调整以下内核参数:
bash复制# 增加TCP缓冲区大小
echo 'net.ipv4.tcp_mem = 94500000 915000000 927000000' >> /etc/sysctl.conf
# 启用TCP快速打开
echo 'net.ipv4.tcp_fastopen = 3' >> /etc/sysctl.conf
# 应用配置
sysctl -p
这些配置在我管理的电商服务器上,将网络吞吐量提升了约15%。
CentOS 7默认使用firewalld,基础规则配置:
bash复制# 放行SSH端口
firewall-cmd --permanent --add-port=2222/tcp
# 放行HTTP/HTTPS
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# 重新加载配置
firewall-cmd --reload
# 查看生效规则
firewall-cmd --list-all
遇到复杂需求时可使用rich rule:
bash复制firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.200.0/24" service name="ssh" accept'
连通性测试:
bash复制mtr -n 8.8.8.8
端口扫描:
bash复制nmap -sT -p 1-1024 localhost
流量监控:
bash复制nload -u M ens33
连接状态统计:
bash复制ss -s
这些工具在排查线上故障时能快速定位问题。记得在某次DDoS攻击中,正是通过nload及时发现异常流量,才避免了服务雪崩。