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

端口转发配置完成后,本地Web应用仍无法从外网访问的问题求助

端口转发配置完成后,本地Web应用仍无法从外网访问的问题求助

各位大佬好,我最近遇到一个特别头疼的问题:我开发了一个简单的Golang Web应用,想要让外网的设备(比如手机用移动数据、外地朋友的电脑)能访问,但折腾好几天都没搞定。目前的情况是,局域网内访问完全正常,但外网访问就一直超时,显示ERR_CONNECTION_TIMED_OUT,翻了不少相关问答都没找到解决办法,来这儿求助大家!

具体情况

  • 我用路由器的WAN IPv4地址(188.2.XX.XX)绑定9999端口来访问应用,在局域网内(比如手机连WiFi)输入这个地址能正常打开页面;但切换到手机移动数据,或者让外地朋友访问同一个地址,就会无限等待,最后提示请求超时。
  • 已经避开了可能被ISP封禁的80端口,特意选了9999端口做转发。

我已经排查过的操作

  • 排除CGNAT问题:我对比了路由器后台显示的WAN地址和通过whatismyipaddress查到的公网IP,两者完全一致,应该不是运营商的CGNAT导致的。
  • 设置静态内网IP:通过ipconfig /all查到运行应用的电脑MAC地址和内网IP(192.168.0.11),在路由器DHCP里配置了静态租期,确保这台电脑的内网IP不会变动,避免端口转发失效。
  • 关闭防火墙:已经关闭了电脑的防火墙,排除了本地防火墙拦截外网请求的可能。
  • 配置端口转发:在路由器后台正确设置了端口转发规则,把9999端口指向这台电脑的静态内网IP和9999端口。

我的Web应用代码(Golang)

package main

import (
	"fmt"
	"net/http"
)

func homeHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Welcome to the Home Page!")
}

func main() {
	http.HandleFunc("/", homeHandler)
	port := 9999
	fmt.Printf("Server is running on http://192.168.0.11:%d\n", port)
	http.ListenAndServe(fmt.Sprintf(":%d", port), nil)
}

现在实在搞不清楚问题出在哪里,局域网内一切正常,外网就是连不上,有没有大佬能给我一些排查方向或者解决方案?

备注:内容来源于stack exchange,提问作者Cosmos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 13:23:04