端口转发配置完成后,本地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
相关产品推荐
相关产品推荐

