You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vagrant虚拟机端口跨网络访问问题(VirtualBox环境)

解决Vagrant端口转发仅限本地访问的问题

嘿,这个问题我太熟了!你遇到的情况核心原因是:Vagrant默认的端口转发规则只会绑定到主机的127.0.0.1回环地址,所以只有运行虚拟机的那台主机能访问,同一网络里的其他设备根本连不上这些转发端口。

具体解决步骤

1. 修改Vagrantfile的端口转发配置

你只需要给每个forwarded_port添加host_ip: "0.0.0.0"参数,让端口绑定到主机的所有网卡上,这样同网设备就能通过主机的局域网IP访问VM内的服务了。修改后的完整配置如下:

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box_check_update = false
  config.vm.box = "trusty64"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  config.ssh.username = 'vagrant'
  config.ssh.password = 'vagrant'
  config.vm.network "private_network", type:"dhcp"
  # 添加host_ip参数,让端口绑定到主机所有网卡
  config.vm.network "forwarded_port", guest: 4242, host: 4242, host_ip: "0.0.0.0"
  config.vm.network "forwarded_port", guest: 3000, host: 3000, host_ip: "0.0.0.0"
  config.vm.provider "virtualbox" do |vb|
    vb.cpus = 4
  end
end

2. 重启虚拟机使配置生效

保存修改后的Vagrantfile,在终端里执行命令:

vagrant reload

3. 检查主机防火墙设置

这一步很容易被忽略!你的主机防火墙(比如Windows Defender防火墙、Linux的ufw/iptables、macOS系统防火墙)需要开放4242和3000这两个端口,否则同网设备的请求会被直接拦截。

4. 测试同网设备访问

同一网络里的其他设备,用你主机的局域网IP地址加上对应端口访问(比如192.168.1.105:4242,具体IP可以通过主机的网络设置查看),就能正常访问VM内的服务了。

额外安全提示

如果你不想让端口对所有网卡开放(比如避免公网访问),也可以把host_ip设为主机的具体局域网IP(比如192.168.1.105),这样端口只会绑定到局域网网卡,安全性更高,同时也能满足同网设备访问的需求。

内容的提问来源于stack exchange,提问作者Ömer Genc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:46:09