CentOS 7 虚拟机配置指南:静态IP、代理上网与换源实战


CentOS 7 虚拟机配置指南:静态IP、代理上网与换源实战

在使用 VMware 或 VirtualBox 安装 CentOS 7 虚拟机时,我们经常会遇到三个核心问题:

  1. 如何配置静态 IP,防止重启后 IP 变动?
  2. 宿主机有代理,虚拟机如何通过代理上网?
  3. CentOS 7 官方源停止服务,如何修复 yum 报错并安装软件?

本文将结合实际操作,一站式解决这三个问题。

一、 NAT 模式下配置静态 IP

在 NAT 模式下,虚拟机通过宿主机的虚拟网卡转发数据。配置静态 IP 需要先了解虚拟网络编辑器分配的网段。

1. 查看 VMware 网络信息

打开 VMware -> 编辑 -> 虚拟网络编辑器 -> 选择 **VMnet8 (NAT 模式)**。
记录以下信息(你的环境数值可能不同):

  • 子网 IP:例如 192.168.133.0
  • 子网掩码255.255.255.0
  • 网关 IP:点击“NAT设置”查看,例如 192.168.133.2

2. 修改 CentOS 网卡配置

登录 CentOS 终端,查找网卡名称(通常是 ens33):

1
ip addr

编辑网卡配置文件:

1
vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改以下关键参数,若不存在则手动添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 修改为静态模式
BOOTPROTO=static

# 开机启用
ONBOOT=yes

# 设置静态IP(需在子网范围内,且不与网关冲突)
IPADDR=192.168.133.100

# 子网掩码
NETMASK=255.255.255.0

# 网关(必须与虚拟网络编辑器中的一致)
GATEWAY=192.168.133.2

# DNS(可填网关或公共DNS)
DNS1=192.168.133.2
DNS2=8.8.8.8

保存退出后,重启网络服务:

1
systemctl restart network

验证配置:

1
2
ip addr
# 查看是否显示刚才配置的 192.168.133.100

二、 配置虚拟机通过宿主机代理上网

如果宿主机开启了代理软件(如 Clash、v2rayN),虚拟机默认无法直接使用该代理。我们需要通过环境变量将流量转发给宿主机。

1. 宿主机侧准备

打开代理软件设置,勾选 “允许局域网连接”

2. 获取宿主机 NAT 网卡 IP

在 Windows 宿主机命令行输入 ipconfig,找到 VMware Network Adapter VMnet8 的 IPv4 地址。假设为 192.168.133.1。同时确认代理软件监听的端口(如 10808)。

3. 虚拟机侧配置代理

为了永久生效,我们将代理写入环境变量配置文件。

1
vi /etc/profile

在文件末尾添加以下内容(IP 和端口替换为你的实际值):

1
2
3
4
5
# Set Proxy
export http_proxy=http://192.168.133.1:10808
export https_proxy=http://192.168.133.1:10808
# 本地地址不走代理
export no_proxy=localhost,127.0.0.1,192.168.133.0/24

使配置立即生效:

1
source /etc/profile

4. 验证代理

注意:ping 命令通常不走代理(使用 ICMP 协议),请使用 curl 测试。

1
2
curl -I https://www.google.com
# 如果返回 HTTP/1.1 200 OK 或 301,说明代理配置成功

三、 解决 yum 报错与依赖冲突(更换 Vault 源)

配置好网络后,执行 yum install wget 可能会遇到如下报错:
Could not retrieve mirrorlist http://mirrorlist.centos.org...

原因: CentOS 7 已于 2024 年 6 月 EOL(停止服务),官方镜像源已下线。

特别注意: 如果直接使用网上某些教程的 CentOS 8 源配置,会导致严重的依赖冲突报错(例如提示 rpm-libs 需要 librpm.so.8 但系统是 librpm.so.3,或者出现 Depsolving loop limit reached)。这是因为 不能混用 CentOS 7 和 CentOS 8 的软件源

1. 清理错误的源文件(如果之前配置错了)

如果已经配置了错误的源导致报错,先删除:

1
rm -f /etc/yum.repos.d/CentOS-Base.repo

2. 配置正确的 CentOS 7 Vault 源

我们需要使用 CentOS 7 的归档源。执行以下命令直接生成正确的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat > /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
EOF

解释:这里使用的是阿里云的 centos-vault 镜像,路径固定为 7.9.2009(CentOS 7 的最终版本),确保软件包版本与系统匹配,避免依赖冲突。

3. 配置 yum 独立代理(可选但推荐)

虽然环境变量已设置,但为了确保 yum 稳定走代理,可单独配置:

1
echo "proxy=http://192.168.133.1:10808" | sudo tee -a /etc/yum.conf

4. 清理缓存并安装 wget

1
2
3
4
5
6
# 清理旧缓存(非常重要)
sudo yum clean all
# 生成新缓存
sudo yum makecache
# 安装 wget
sudo yum install wget -y

四、 总结

  1. 静态 IP:关键在于网关要与虚拟网络编辑器中的 NAT 网关一致。
  2. 代理上网:核心是开启代理软件的“允许局域网”,并在虚拟机中正确配置 http_proxy 环境变量。
  3. 源失效与冲突:CentOS 7 停服后,千万不要使用 CentOS 8 的源。必须使用 centos-vault 归档源,并锁定 7.9.2009 版本路径,才能避免依赖冲突报错。

通过以上步骤,你的 CentOS 7 虚拟机就已经拥有了一个稳定、可上网的开发环境。