因此,我有一个非常简单的 Express http 服务器,它返回托管在 127.0.0.1 和 6550 端口上的简单 html,在本地主机中完美运行。我将在本文末尾分享代码,但我认为这没什么意义。
我想通过我的公共 IP 地址访问它,但我不能 (ERR_CONNECTION_TIMED_OUT)。使用在线端口检查工具检查时,端口也显示已关闭。
我有一台 TP Link TD-W9970 调制解调器。这是端口转发:
我绝对确定我正在转发到正确的本地 IP 并使用正确的端口:
我注意到我从 Google 获取的公共 IP 与从路由器 WAN 信息获取的 IP 不同。
我的谷歌公共 IP :85.107.**.13
来自路由器面板的 WAN 信息中的我的 IP:100.108.1**.1
我觉得这可以解释这个问题吗?
你能帮我解决这个问题吗?谢谢
快递代码:
const http = require("http");
const hostname = "127.0.0.1";
const port = 6550;
// Create HTTP server
const server = http.createServer((req, res) => {
// Set the response HTTP header with HTTP status and Content type
res.writeHead(200, {'Content-Type': 'text/plain'});
// Send the response body "Hello World"
res.end('Hello World\n');
});
// Prints a log once the server starts listening
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
})
答案1
我发现有两种可能的情况:
您有一个双栈互联网连接,这会使通过 IPv4 进行端口转发变得困难甚至不可能。
另外,您应该确保您的服务器不监听 IP 127.0.0.1,而是监听 0.0.0.0(任何 IP)或适配器的内部网络 IP,我假设是 192.168.1.105。
答案2
您的 WAN 地址100.108.1**.1
是不是公共地址。这是共享地址 (100.64.0.0/10
IANA 已在以下范围内预留了共享地址空间),ISP 通常会将其分配给住宅/家庭用户(此处与主题无关),以便为商业客户节省宝贵的公共地址池。它基本上是 ISP 的私有地址空间。
1。 介绍
IPv4 地址空间已接近耗尽。然而,ISP 必须继续支持 IPv4 的增长,直到 IPv6 完全部署。为此,许多 ISP 将部署运营商级 NAT (CGN) 设备,例如 [RFC6264]。由于 CGN 用于需要公共地址空间的网络,而当前可用的私有地址空间在这种环境下使用时会导致操作问题,因此 ISP 需要一个新的 IPv4 /10 地址块。该地址块将被称为“共享地址空间”,并将用于对将 CGN 设备连接到客户端设备 (CPE) 的接口进行编号。
共享地址空间类似于[RFC1918] 私有地址空间,因为它不是全局可路由的地址空间,可以由多台设备使用。但是,共享地址空间在使用上有局限性,目前的 [RFC1918] 私有地址空间没有。具体来说,共享地址空间只能在服务提供商网络或能够在两个不同接口上的地址相同时跨路由器接口进行地址转换的路由设备上使用。
ISP 并不关心这会破坏您向公共互联网提供的服务,因为您的住宅 ISP 合同禁止从您的网络向公共互联网运行服务。您的 ISP 不会使用公共地址转发其路由器上的端口。您需要签订商业合同才能做您想做的事情。