无法在家用路由器上为 ubuntu virtualbox 来宾目的地设置端口转发

Cannot set port forwarding on home router for ubuntu virtualbox guest destination

我有 Windows 10 台主机 运行 VirtualBox,其中 Ubuntu 来宾具有网桥适配器 @ 192.168.1.5。此外,我是 运行 Ubuntu 中的一个 docker 容器,端口绑定到端口 8080。我可以从我的网络(例如从我的手机和桌面主机)。

但是,我无法在我的 mi424wr 路由器上进行端口转发以转发到 ubuntu guest @ 192.168.1.5。我可以让端口转发在我的 Windows 10 机器上工作。

我的路由器是否不喜欢 ubuntu 来宾虚拟机?

已编辑: 以下是我从外部 IP 地址尝试时路由器安全日志中的条目:

端口转发规则:56123 -> 192.168.1.5:8080

  1. 已打开连接:TCP 192.168.1.5:8080 <-->myIp:56123 [74.96.218.140:1024] CLOSED/CLOSED local_dev NAPT 传入静态 UNINIT 不安全
  2. 已打开连接:TCP 192.168.1.5:8080 <-->myIp:56123 [myIp:1025] CLOSED/CLOSED local_dev NAPT 传入静态 UNINIT 不安全
  3. 挂钩的通配符连接:TCP 192.168.1.5:8080 <-->myIp:56123 [myIp:1024] CLOSED/SYN_SENT local_dev NAPT Incoming STATIC BNAPT UNSECURED
  4. 挂钩的通配符连接:TCP 192.168.1.5:8080 <-->myIp:56123 [myIp:1025] CLOSED/SYN_SENT local_dev NAPT Incoming STATIC BNAPT UNSECURED
  5. 已打开连接:TCP 192.168.1.5:8080 <-->myIp:56123 [74.96.218.140:1026] CLOSED/CLOSED local_dev NAPT 传入静态 UNINIT 不安全
  6. 已打开连接:TCP 192.168.1.5:8080 <-->myIp:56123 [myIp:1026] CLOSED/CLOSED local_dev NAPT 传入静态 UNINIT 不安全
  7. 挂钩的通配符连接:TCP 192.168.1.5:8080 <-->myIp:56123 [myIp:1026] CLOSED/SYN_SENT local_dev NAPT Incoming STATIC BNAPT UNSECURED

我的实际ip地址被替换为"myIp"

此外,我已经使用托管静态文件的 http-server npm 包进行了测试。它在我的局域网内工作,但端口转发也失败,这应该否定 Docker 作为罪魁祸首。

这可能是因为 Ubuntu VM、Docker 容器或 Windows 防火墙上的防火墙设置。也许它们设置为允许 192.168.*.* 私有地址但不允许 public IP 地址?
参见:UFWiptables, Docker and iptables, Windows Firewall

我会逐一检查每个防火墙配置,并测试您是否可以在每次更改后通过。请注意,UFW 只是 iptables 的前端,可能启用也可能不启用。

如果 none 这似乎有帮助,也许你会更成功 运行 NAT 模式下的 Ubuntu 虚拟机,除了在你的路由器上通过 Virtual Box 设置端口转发。
参见:Virtual Box Networking(尤其是 6.3.1)。