如何从外部网络访问Linux虚拟机上的Apache2服务?
让外网访问虚拟机中Apache网站的操作步骤
调整虚拟机网络模式
虚拟机默认的NAT模式仅支持内网访问,需切换为桥接模式(Bridge):- 在虚拟机管理工具(VMware/VirtualBox)的网络设置中选择桥接模式,确保绑定到宿主机当前联网的网卡
- 重启虚拟机网络服务(
sudo systemctl restart networking),执行ip addr确认虚拟机获取到与宿主机同网段的内网IP
开放虚拟机防火墙端口
Linux防火墙会默认拦截外部请求,需开放HTTP/HTTPS端口:- 若使用ufw防火墙:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload - 若使用firewalld防火墙:
sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload - 同时确认Apache监听地址:编辑
/etc/apache2/ports.conf,确保Listen指令为Listen 80(监听所有网卡),而非仅127.0.0.1:80
- 若使用ufw防火墙:
配置路由器端口转发(内网环境必备)
若宿主机处于家庭/企业内网(通过路由器联网),需在路由器后台设置端口转发:- 登录路由器管理页面(通常为192.168.1.1或192.168.0.1)
- 找到「端口转发」「虚拟服务器」选项,添加两条规则:
- 外部端口80 → 内部IP(虚拟机内网IP)→ 内部端口80,协议TCP
- 外部端口443 → 内部IP(虚拟机内网IP)→ 内部端口443,协议TCP
- 保存设置后重启路由器生效
验证外网访问
- 获取公网IP:在虚拟机或宿主机执行
curl ifconfig.me获取当前公网IP - 用外网设备(如手机关闭Wi-Fi使用流量)访问该公网IP,测试网站是否可正常打开
- 获取公网IP:在虚拟机或宿主机执行
可选:配置动态域名解析
若公网IP为动态分配(家庭宽带常见),可使用动态域名服务绑定域名与IP,避免频繁更换IP的麻烦:- 注册动态域名账号,在路由器或虚拟机中配置DDNS客户端,实现IP变更时自动同步域名解析
内容的提问来源于stack exchange,提问作者ItzK3ky
相关产品推荐
相关产品推荐

