告别踩坑!手把手教你用VMware在CentOS 8.5上配置静态IP和关闭SELinux(保姆级图文)
从零到实战:CentOS 8.5基础运维配置全指南
刚完成CentOS 8.5系统安装的兴奋感还没消退,你可能就遇到了第一个拦路虎——为什么我的服务器无法远程连接?为什么网络时断时续?这些问题往往让新手措手不及。本文将带你一步步解决这些"安装后遗症",让你的系统真正达到可用状态。
1. 网络配置:静态IP设置详解
CentOS 8.5与早期版本在网络配置上有显著差异,特别是引入了NetworkManager的nmcli工具作为主要网络管理方式。我们先来理解几个关键概念:
- NetworkManager:新一代网络管理服务,取代了传统的network服务
- nmcli:NetworkManager的命令行接口
- 连接(connection):网络配置的逻辑表示,可以绑定到特定接口
要查看当前网络接口信息,可以使用以下命令:
nmcli connection show典型的输出可能如下:
NAME UUID TYPE DEVICE ens33 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet ens331.1 配置静态IP地址
假设我们要为ens33接口配置静态IP,以下是详细步骤:
首先查看当前连接属性:
nmcli connection show ens33修改IP配置(假设我们要设置为192.168.1.100/24,网关192.168.1.1):
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 "8.8.8.8 8.8.4.4" nmcli connection modify ens33 ipv4.method manual应用配置并重启连接:
nmcli connection down ens33 && nmcli connection up ens33
注意:在生产环境中,建议先备份原始配置,可以使用
nmcli connection export ens33 > ens33_backup.nmconnection命令。
1.2 验证网络配置
配置完成后,使用以下命令验证:
ip addr show ens33 ping -c 4 192.168.1.1如果一切正常,你应该能看到配置的IP地址,并且能够ping通网关。
2. 防火墙与SELinux管理
2.1 防火墙配置
CentOS 8使用firewalld作为默认防火墙。对于开发环境,我们可能需要临时或永久关闭防火墙:
临时关闭:
systemctl stop firewalld永久关闭:
systemctl disable firewalld如果只需要开放特定端口(如SSH的22端口),更安全的方式是:
firewall-cmd --permanent --add-service=ssh firewall-cmd --reload2.2 SELinux管理
SELinux是Linux的安全子系统,但在开发环境中可能会带来不便。查看当前状态:
getenforce可能的返回值:
- Enforcing:强制执行安全策略
- Permissive:仅记录违规不阻止
- Disabled:完全禁用
临时设置为Permissive模式:
setenforce 0永久禁用(需要重启):
- 编辑配置文件:
vi /etc/selinux/config - 修改为:
SELINUX=disabled
重要提示:在生产环境中,建议保持SELinux为Enforcing模式,并学习正确配置策略,而不是直接禁用它。
3. 远程访问配置
3.1 SSH服务优化
默认安装后,SSH服务可能不允许root登录或密码认证。编辑SSH配置:
vi /etc/ssh/sshd_config常见修改项:
PermitRootLogin yes PasswordAuthentication yes然后重启服务:
systemctl restart sshd3.2 密钥认证设置
更安全的方式是使用密钥认证:
在客户端生成密钥对:
ssh-keygen -t rsa将公钥复制到服务器:
ssh-copy-id root@服务器IP在服务器上禁用密码认证:
PasswordAuthentication no
4. 系统优化与常用工具
4.1 基础工具安装
dnf install -y epel-release dnf install -y vim wget curl net-tools lsof telnet4.2 系统更新
dnf update -y4.3 时间同步
dnf install -y chrony systemctl enable --now chronyd chronyc sources4.4 性能监控工具
dnf install -y htop iotop iftop nmon5. 常见问题排查
5.1 网络连接问题
检查步骤:
- 物理连接是否正常
- IP配置是否正确
- 防火墙是否阻止
- 路由是否可达
常用命令:
ip addr ip route ping traceroute netstat -tulnp5.2 SSH连接失败
可能原因:
- 服务未启动
- 防火墙阻止
- SELinux阻止
- 配置文件错误
检查命令:
systemctl status sshd journalctl -u sshd -f5.3 服务启动失败
查看日志:
journalctl -xe检查依赖:
systemctl list-dependencies 服务名6. 进阶配置
6.1 网络绑定(Bonding)
创建绑定接口:
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup添加从属接口:
nmcli connection add type bond-slave ifname ens33 master bond0 nmcli connection add type bond-slave ifname ens34 master bond06.2 网络桥接
创建桥接:
nmcli connection add type bridge con-name br0 ifname br0添加接口:
nmcli connection add type bridge-slave ifname ens33 master br06.3 磁盘管理
查看磁盘:
lsblk fdisk -l格式化磁盘:
mkfs.xfs /dev/sdb1挂载磁盘:
mkdir /data mount /dev/sdb1 /data永久挂载:
echo "/dev/sdb1 /data xfs defaults 0 0" >> /etc/fstab7. 安全加固建议
虽然我们为了方便关闭了一些安全功能,但在生产环境中应该:
- 保持防火墙开启,只开放必要端口
- 使用SELinux的targeted策略
- 禁用root的SSH登录
- 使用密钥认证代替密码
- 定期更新系统
- 配置日志监控
- 设置强密码策略
实现这些安全措施的命令:
# 密码策略 vi /etc/security/pwquality.conf # 设置: minlen = 12 dcredit = -1 ucredit = -1 ocredit = -1 lcredit = -1 # 日志配置 vi /etc/rsyslog.conf systemctl restart rsyslog8. 备份与恢复
8.1 重要配置文件备份
mkdir /backup cp -a /etc /backup/etc-$(date +%F)8.2 系统快照
如果使用LVM,可以创建快照:
lvcreate -s -n snap_root -L 1G /dev/centos/root8.3 定时备份
设置cron任务:
crontab -e # 添加: 0 2 * * * /usr/bin/rsync -a /etc /backup/etc-$(date +\%F)9. 性能调优
9.1 内核参数调整
编辑sysctl配置:
vi /etc/sysctl.conf常见优化参数:
net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ip_local_port_range = 1024 65000 net.core.somaxconn = 32768应用更改:
sysctl -p9.2 文件系统优化
对于XFS文件系统:
mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 -d agcount=16 /dev/sdb19.3 服务优化
禁用不需要的服务:
systemctl list-unit-files | grep enabled systemctl disable 不需要的服务10. 容器化支持
10.1 Podman安装
CentOS 8默认包含Podman:
dnf install -y podman10.2 Docker兼容性设置
如果需要docker-cli:
dnf install -y docker-ce docker-ce-cli systemctl disable docker使用podman-docker兼容层:
ln -s /usr/bin/podman /usr/bin/docker10.3 基本容器操作
运行容器:
podman run -d --name nginx -p 8080:80 nginx查看容器:
podman ps进入容器:
podman exec -it nginx /bin/bash11. 开发环境配置
11.1 Python环境
CentOS 8默认安装Python 3.6:
dnf install -y python3 python3-devel安装pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py11.2 Java环境
安装OpenJDK:
dnf install -y java-11-openjdk-devel设置环境变量:
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk" >> /etc/profile source /etc/profile11.3 Node.js环境
安装Node.js 14:
dnf module install -y nodejs:1412. 监控与告警
12.1 基础监控
安装sysstat:
dnf install -y sysstat systemctl enable --now sysstat查看报告:
sar -u 1 512.2 日志监控
安装logwatch:
dnf install -y logwatch配置日报:
/usr/sbin/logwatch --output mail --format html --detail high12.3 进程监控
使用htop:
htop关键指标:
- CPU使用率
- 内存使用
- 磁盘I/O
- 网络流量
13. 自动化运维
13.1 Ansible安装
dnf install -y ansible13.2 基础Playbook示例
创建playbook.yml:
--- - hosts: all become: yes tasks: - name: Ensure nginx is installed dnf: name: nginx state: present - name: Ensure nginx is running service: name: nginx state: started enabled: yes运行playbook:
ansible-playbook -i inventory.ini playbook.yml13.3 定时任务管理
使用Ansible管理cron:
- name: Add daily backup job cron: name: "Daily backup" minute: "0" hour: "2" job: "/usr/bin/rsync -a /etc /backup/etc-$(date +\%F)"14. 虚拟化支持
14.1 KVM安装
dnf install -y qemu-kvm libvirt virt-install virt-viewer systemctl enable --now libvirtd14.2 创建虚拟机
virt-install \ --name centos8 \ --ram 2048 \ --vcpus 2 \ --disk size=20 \ --os-variant centos8 \ --network bridge=br0 \ --graphics none \ --console pty,target_type=serial \ --location /path/to/centos8.iso14.3 虚拟机管理
查看虚拟机列表:
virsh list --all启动虚拟机:
virsh start centos815. 故障恢复
15.1 单用户模式
如果系统无法正常启动:
- 在启动时按e编辑启动参数
- 在linux行末尾添加
rd.break - 按Ctrl+x启动
挂载并修改:
mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot15.2 救援模式
使用安装ISO进入救援模式:
- 从ISO启动
- 选择"Troubleshooting" > "Rescue a CentOS system"
- 按照提示操作
15.3 重要文件恢复
从备份恢复/etc:
rsync -a /backup/etc-2023-01-01/ /etc/16. 系统清理
16.1 清理缓存
dnf clean all16.2 清理日志
journalctl --vacuum-time=7d16.3 清理临时文件
rm -rf /tmp/*17. 文档与帮助
17.1 手册页
查看命令帮助:
man nmcli17.2 系统文档
CentOS文档:
dnf install -y centos-release-docs17.3 在线资源
- CentOS官方Wiki
- Red Hat文档(大部分适用于CentOS)
- Stack Overflow
- 官方邮件列表
18. 社区支持
18.1 论坛与邮件列表
- CentOS官方论坛
- Red Hat开发者社区
- Server Fault
18.2 本地用户组
查找本地Linux用户组:
# 可以尝试在Meetup或其他社区平台搜索18.3 专业支持
对于生产环境,考虑:
- 购买Red Hat订阅
- 雇佣专业Linux管理员
- 使用托管服务
19. 持续学习建议
19.1 推荐书籍
- 《Linux命令行与shell脚本编程大全》
- 《鸟哥的Linux私房菜》
- 《UNIX环境高级编程》
19.2 在线课程
- Red Hat官方培训
- Linux Foundation课程
- Udemy/Coursera上的Linux课程
19.3 认证路径
- RHCSA(Red Hat认证系统管理员)
- LFCS(Linux基金会认证系统管理员)
- CompTIA Linux+
20. 实际应用案例
20.1 Web服务器配置
安装LAMP栈:
dnf install -y httpd mariadb-server php php-mysqlnd systemctl enable --now httpd mariadb20.2 数据库服务器
MySQL安全配置:
mysql_secure_installation20.3 文件服务器
安装Samba:
dnf install -y samba配置共享:
vi /etc/samba/smb.conf添加:
[share] path = /srv/share writable = yes browsable = yes guest ok = yes创建目录并设置权限:
mkdir -p /srv/share chmod 777 /srv/share systemctl enable --now smb