CentOS 虚拟机网络配置指南(通用版):宿主机任意网络环境下均可通过固定 IP 访问

张开发
2026/4/30 17:36:22 15 分钟阅读
CentOS 虚拟机网络配置指南(通用版):宿主机任意网络环境下均可通过固定 IP 访问
核心目标宿主机Windows无论连接 WiFi、网线还是完全断网都能通过一个您自定义的固定 IP访问 CentOS 虚拟机SSH 及 Docker 容器服务。联网时CentOS 可访问外网yum、Docker pull 等。断网时CentOS 无法访问外网但本地服务依然可通过固定 IP 连接。关键原理使用VirtualBox Host-Only 网络创建一条独立的虚拟链路不依赖宿主机物理网卡。宿主机上会生成一块虚拟网卡您可以为其指定一个静态 IP例如192.168.56.1虚拟机内第二块网卡配置同网段的另一个静态 IP例如192.168.56.101。虚拟机第一块网卡使用NAT 网络用于上网其 IP 由 VirtualBox 内部 DHCP 分配如10.0.2.x与宿主机物理网络无关。一、确定您要使用的 Host-Only 网段在开始配置前请先决定一个私有网段例如VirtualBox 默认192.168.56.0/24或者自定义192.168.99.0/24、10.10.10.0/24等。本文以192.168.56.0/24为例您可以根据需要替换成自己的网段。二、VirtualBox 全局设置配置 Host-Only 网络打开 VirtualBox 主界面 →管理→主机网络管理器。点击创建系统会自动生成一个 Host-Only 网络通常名为VirtualBox Host-Only Ethernet Adapter。选中该网络点击属性按钮扳手图标IPv4 地址设置为该网段的一个地址例如192.168.56.1IPv4 网络掩码255.255.255.0DHCP 服务器可以禁用因为我们将手动配置虚拟机 IP点击应用→关闭。此时宿主机上会多出一块虚拟网卡在 Windows 的“更改适配器设置”中可以看到其 IP 已固定为您设置的地址。三、VirtualBox 虚拟机网络设置3.1 网卡1NAT 网络用于上网作用让虚拟机通过宿主机访问外网。配置关闭虚拟机。打开虚拟机设置→网络→网卡1。勾选“启用网络适配器”连接方式选择“NAT 网络”。如果下拉框无可用网络请先在全局 NAT 网络中创建默认NatNetwork网段10.0.2.0/24。保存。3.2 网卡2仅主机Host-Only网络用于固定 IP 访问作用提供宿主机与虚拟机之间的稳定虚拟链路。配置在网卡2选项卡中勾选“启用网络适配器”。连接方式选择“仅主机(Host-Only)网络”。名称选择您在第 2 步中创建或配置的 Host-Only 网络如VirtualBox Host-Only Ethernet Adapter。点击高级→ 确保“电缆已连接”已勾选。保存。四、CentOS 内部网络配置启动虚拟机以 root 登录。4.1 配置网卡1例如enp0s3自动获取 IPDHCP编辑/etc/sysconfig/network-scripts/ifcfg-enp0s3TYPEEthernet BOOTPROTOdhcp NAMEenp0s3 DEVICEenp0s3 ONBOOTyes4.2 配置网卡2例如enp0s8静态 IP选择一个与 Host-Only 网段同段的、未被占用的 IP例如192.168.56.101。编辑/etc/sysconfig/network-scripts/ifcfg-enp0s8TYPEEthernet BOOTPROTOnone IPADDR192.168.56.101 # 替换为您自定义的 IP PREFIX24 # 对应掩码 255.255.255.0 NAMEenp0s8 DEVICEenp0s8 ONBOOTyes注意不要设置GATEWAY。4.3 重启网络服务systemctl restart network4.4 验证ip addr show enp0s3 # 应显示 10.0.2.x ip addr show enp0s8 # 应显示您设置的静态 IP如 192.168.56.101 ip route show # 应有 default via 10.0.2.1 dev enp0s3 和 192.168.56.0/24 dev enp0s8五、防火墙配置5.1 CentOS 防火墙建议关闭简化配置systemctl stop firewalld systemctl disable firewalld5.2 开启 IP 转发Docker 需要echo net.ipv4.ip_forward 1 /etc/sysctl.conf sysctl -p六、SSH 服务优化解决断网连接慢编辑/etc/ssh/sshd_config添加UseDNS no GSSAPIAuthentication no重启 SSH 服务systemctl restart sshd七、Docker 容器配置示例7.1 安装 Docker 并设置开机自启yum install -y docker systemctl start docker systemctl enable docker7.2 运行容器并映射端口确保端口映射到0.0.0.0例如 MySQLdocker run -d --name mysql8 -p 3306:3306 --restartalways -e MYSQL_ROOT_PASSWORDyourpass mysql:8.0其他容器类似。7.3 设置容器开机自启docker update --restartalways 容器名八、Windows 宿主机防火墙配置关键宿主机上的 Host-Only 虚拟网卡 IP 是您在第 2 步设置的例如192.168.56.1。需要放行来自同一网段例如192.168.56.0/24的入站流量。以管理员身份运行 PowerShell执行以下命令请将网段替换为您自己的# 放行 SSH22 New-NetFirewallRule -DisplayName Allow SSH from Host-Only -Direction Inbound -Protocol TCP -LocalPort 22 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 MySQL3306 New-NetFirewallRule -DisplayName Allow MySQL from Host-Only -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 Oracle1521 New-NetFirewallRule -DisplayName Allow Oracle from Host-Only -Direction Inbound -Protocol TCP -LocalPort 1521 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 Redis6379 New-NetFirewallRule -DisplayName Allow Redis from Host-Only -Direction Inbound -Protocol TCP -LocalPort 6379 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 MongoDB27017 New-NetFirewallRule -DisplayName Allow MongoDB from Host-Only -Direction Inbound -Protocol TCP -LocalPort 27017 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 ClickHouse HTTP8123 New-NetFirewallRule -DisplayName Allow ClickHouse HTTP from Host-Only -Direction Inbound -Protocol TCP -LocalPort 8123 -RemoteAddress 192.168.56.0/24 -Action Allow ​ # 放行 ClickHouse Native9000 New-NetFirewallRule -DisplayName Allow ClickHouse Native from Host-Only -Direction Inbound -Protocol TCP -LocalPort 9000 -RemoteAddress 192.168.56.0/24 -Action Allow如果您使用了其他端口请相应添加。九、测试验证9.1 宿主机联网时在 Windows 命令提示符中ping 您设置的虚拟机IP例如ping 192.168.56.101→ 通MobaXterm SSH 连接该 IP → 快速成功连接数据库如mysql -h 192.168.56.101 -P 3306 -u root -p在 CentOS 内ping 8.8.8.8→ 通9.2 宿主机断网时断开所有物理网络ping 虚拟机IP→ 仍然通MobaXterm SSH 连接 → 仍快速成功无延迟连接数据库 → 成功在 CentOS 内ping 8.8.8.8→ 不通符合预期十、常见问题排查现象可能原因解决方法宿主机 ping 不通虚拟机 IPHost-Only 虚拟网卡 IP 与虚拟机 IP 不在同一网段虚拟机内网卡未正确配置检查 Windows 中 Host-Only 网卡的 IPv4 地址在 CentOS 内ip addr show enp0s8确认 IPSSH 连接慢断网时SSH 服务端开启了 DNS 反向解析修改/etc/ssh/sshd_configUseDNS no并重启服务数据库端口连不上Windows 防火墙未放行CentOS 防火墙未关闭容器未正确映射端口添加防火墙规则见第八步关闭 CentOS 防火墙docker ps检查端口映射重启后配置丢失网卡配置文件ONBOOTnoDocker 容器未设置--restartalways修改ifcfg-*中ONBOOTyes执行docker update --restartalways十一、总结宿主机物理网卡 IP 可任意变化连接不同网络不影响通过固定 IP 访问虚拟机。Host-Only 虚拟网卡在宿主机和虚拟机中各有一个同网段的静态 IP形成独立通信链路。NAT 网卡负责虚拟机上网宿主机联网时虚拟机即可访问外网。配置完成后无论网络环境如何您都可以稳定地使用 MobaXterm 和数据库客户端连接 CentOS。请根据本文的通用步骤选择合适的网段和 IP 进行配置。如有任何问题欢迎进一步咨询。

更多文章