服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-11-01 简米科技 4,256 字 10 分钟阅读

虚拟机怎么配置域名访问,内网映射与DNS怎么设置?

导读把虚拟机网络调通、用反向代理或内网穿透把域名映射到虚拟机端口、再做DNS解析指向对应公网地址,整个过程拆成三块来看并不复杂,关键是把网络模型、端口转发和解析记录这三件事捋顺,配置前需要先搞清楚的三个基础问题有些朋友上来就改配置文件,结果域名死活不通,回头检查才发现虚拟机连外网都不行,这一步别急,先把基础环境确认……

把虚拟机网络调通、用反向代理或内网穿透把域名映射到虚拟机端口、再做DNS解析指向对应公网地址。整个过程拆成三块来看并不复杂,关键是把网络模型、端口转发和解析记录这三件事捋顺。

配置前需要先搞清楚的三个基础问题

有些朋友上来就改配置文件,结果域名死活不通,回头检查才发现虚拟机连外网都不行,这一步别急,先把基础环境确认好。

确定虚拟机的网络模式

虚拟机软件里常见的三种网络模式NAT、桥接、仅主机决定了你的域名访问方案。

  • NAT模式:虚拟机通过宿主机上网,外部设备看不到虚拟机,域名访问基本走不通,只能做端口转发,访问形式是“宿主机IP+端口”,对域名支持不友好。
  • 桥接模式:虚拟机直接接入局域网,和宿主机平级,有自己的IP,家里或者公司局域网内想用域名访问虚拟机,优先选这个模式。
  • 仅主机模式:只有宿主机和虚拟机互通,用处比较局限,做测试可以,对外访问不合适。

行业共识认为,面向家宽或办公网部署虚拟机服务,桥接模式是稳妥起点。 不过要注意,桥接模式下虚拟机需要独立IP,IP冲突问题也会随之而来,建议手动固定IP,不要让DHCP飘来飘去。

固定虚拟机的内部IP

既然要拿域名访问,IP地址就不能老变,以VMware虚拟机和Ubuntu系统为例,最简单的做法是直接改DHCP分配规则,让路由器或虚拟机管理平台把同一个IP始终分给这台虚拟机。

命令行方式也很好用,在虚拟机里执行:

nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5
nmcli connection up "Wired connection 1"

Windows Server虚拟机就在“网络适配器 → IPv4属性”里填写固定IP、掩码和网关,固定之后,后续所有端口映射和反向代理配置都围绕这个IP展开。

准备域名和DNS解析

域名商选择上,国内常见的有简米云、酷番云、华为云;不确定用哪家的话,就看自己服务器或云主机在哪里,就近搭配即可。

这里的核心思路是:域名的A记录指向你路由器的公网IP或云服务器的公网IP,别指向虚拟机IP,虚拟机IP是内网地址,外部解析不到。

虚拟机域名访问还是本机建站?两种方案的取舍

很多人在虚拟机跑网站和直接在宿主机跑服务之间纠结,这两者到底怎么选,其实取决于你的资源分配和隔离要求。

对比项 虚拟机方案 本机方案
资源占用 较高,需分配独立CPU和内存 较低,直接使用宿主机资源
环境隔离 完全隔离,系统坏了不影响宿主机 依赖宿主机的系统稳定性
部署迁移 快照和克隆方便,适合测试多套环境 迁移成本高,换个机器要重装环境
域名访问复杂度 需要额外做端口映射或代理 直接监听80/443端口即可

如果你同时跑三四套站要切换,虚拟机方案绝对更合适,隔离带来的安全性也是本机直接跑比不了的,反过来,单纯就是折腾一个博客或个人项目,本机装Nginx反而省事。

内网映射:把域名指向虚拟机

光有域名和固定IP不够,域名请求进来后,得有人“接住”这个流量再转给虚拟机,两个常用手段是反向代理和端口映射。

用Nginx反向代理同一个IP的多个域名

如果你只有一台物理机或一个公网IP,但想用不同域名访问不同虚拟机,Nginx反向代理是最干净的方案。

在宿主机或一台有公网访问能力的机器上装Nginx,编辑配置文件:

vim /etc/nginx/conf.d/vm-proxy.conf
server {
    listen 80;
    server_name blog.example.com;
    location / {
        proxy_pass http://192.168.1.100:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

语法检查后重载配置:

nginx -t
systemctl reload nginx

流程逻辑很简单:域名请求到达Nginx,Nginx根据server_name匹配规则,把流量转到对应虚拟机的IP和端口。一个Nginx可以挂十几个server块,对应十几台虚拟机,互不干扰。

家用虚拟机怎么通过域名访问外网

家用宽带大部分没有固定公网IP,甚至没有公网IPv4地址,这时候有两个可选路径:

  • 路由器端口映射:如果路由器WAN口拿到的是公网IP(拨号后能在路由器状态页看到公网IP),就用端口映射,登录路由器后台 → 找到“端口映射”或“虚拟服务器” → 添加规则:外部端口填80或8080,内部IP填虚拟机地址,内部端口填虚拟机服务端口,保存后,外网访问“http://域名:端口”就能到达虚拟机。
  • 内网穿透工具:没有公网IP就用frp或ngrok,以frp为例,你需要一台有公网IP的云服务器(最便宜的轻量服务器也可以),在云服务器上跑frps,在虚拟机里跑frpc。

frps服务端配置:

[common]
bind_port = 7000
vhost_http_port = 8080

frpc客户端配置:

[common]
server_addr = 你的云服务器IP
server_port = 7000
[web]
type = http
local_port = 3000
custom_domains = blog.example.com

注意,云服务器安全组要放行7000和8080端口。frp方案跟云服务器厂商关系不大,只要是Linux系统的云服务器就行,国内主流云厂商价格差别主要体现在带宽上,这个量级远低于买一个固定公网IP的成本。

DNS解析这时候把A记录指向云服务器的公网IP,访问“blog.example.com:8080”就能穿透到家中的虚拟机。

DNS设置方法与解析记录的选择

域名解析本身是等域名生效后,域名商后台控制台里点击几下的事,核心在于选择什么记录类型。

A记录与CNAME记录的取舍

  • A记录:把域名直接指向IP地址,适合有固定公网IP或云服务器IP的场景,解析速度快,没有额外跳转。
  • CNAME记录:把域名指向另一个域名,适合用内网穿透工具时、由穿透服务商提供别名的情况,换IP时不用改解析。

家用宽带场景,如果用了DDNS(动态域名解析),A记录对应的就是DDNS提供的动态域名解析结果,部分路由器自带DDNS功能,和花生壳、简米云DDNS配合使用,能解决公网IP变动的麻烦。

解析生效时间与TTL

TTL值默认600秒就可以,改动解析记录后,正常情况下几分钟到几小时内全球生效。国内访问的域名建议使用国内DNS服务器,解析速度更快,境外DNS在特殊网络环境下反而容易出现解析慢的问题。

安全加固与常见坑位处理

域名能访问只是第一步,虚拟机暴露到公网之后,安全配置也要跟上。

端口别全裸奔

用Nginx反代的时候,只需要对外放行80和443端口,虚拟机的SSH(22端口)、数据库(3306/5432)端口不要直接暴露到公网,用防火墙规则限制访问来源IP。

以Ubuntu的UFW为例:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow from 你的办公IP to any port 22
sudo ufw enable

运营商封锁端口的应对方案

国内相当一部分地区的家宽运营商封禁了80和443端口,排查办法很简单:虚拟机上的网站用8080端口能访问,但换80端口就不通,基本就是被运营商干了。

对策有很多,选一个最不折腾的

  • 改用非标准端口比如8080、8443访问,代价是URL里得带端口号。
  • 用HTTPS证书加密并以443端口对外,部分运营商放行了443,但并不是所有地区都放行。
  • 借助内网穿透工具的HTTPS功能,以frp为例,在frps端启用HTTPS代理,对外暴露的是HTTPS标准端口,通过自定义域名做转发。

反向代理后访问慢的排查周期

有时候域名通了,但打开网页很慢,多数情况下,问题出在DNS解析的服务器响应速度或者Nginx配置里缺少gzip压缩,打开Nginx的gzip开关:

gzip on;
gzip_types text/plain text/css application/json application/javascript;

顺带提一句,后端虚拟机里的数据库连接池配置也会拖慢响应,这个得按各自应用去调,并不全是Nginx的锅。

Q&A:虚拟机的域名访问相关问题

Q:用Nginx反向代理后,虚拟机还需要配置域名吗?

不需要,虚拟机内部的服务监听端口即可,Nginx负责接收域名请求并转发给虚拟机的IP和端口,虚拟机的应用不需要知道自己被哪个域名访问,只要在Nginx的server_name里配置对应域名就行。

Q:内网穿透和路由器端口映射能同时用吗?

能,如果路由器的端口映射已经生效,就不要启用内网穿透工具对同一端口的穿透,否则会冲突,实际使用中,有公网IP就优先走路由器端口映射,没有公网IP才用frp这类穿透工具,两个方案并存的话,注意端口和域名的对应关系,别让两条链路同时监听一个入口。

Q:虚拟机绑定域名访问很慢,换DNS服务商能解决吗?

访问慢不一定是DNS服务商的问题,先看清楚慢在哪个环节用ping命令测试域名解析出来的IP响应时间,如果IP能通但网页加载慢,问题多半在Nginx配置或后端应用,如果ping不通或者解析出来的IP不对,再考虑换DNS服务商,国内用户的常用选择是简米云DNS和酷番云DNSPod,解析速度普遍快于国外服务商。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱