无法找到外部 IP 地址被阻止的位置(nginx、nodejs、linksys 路由器)

无法找到外部 IP 地址被阻止的位置(nginx、nodejs、linksys 路由器)

因此,虽然这不是最理想的,但我目前在 Linksys 路由器后面有一个运行 Ubuntu 14.04 的 Web 服务器。在路由器上,我分别转发了 SSH、HTTP 和 HTTPS 的端口 22、80 和 435。

现在,运行一个非常简单的 nginx 反向代理,将端口 80 路由到监听本地端口 3001 的非常简单的节点脚本,我可以从本地网络上的任何位置打开 Web 浏览器并访问端口 80 上的服务器公共 IP 并获取正确的响应。

当我尝试通过 iPhone 信号连接到相同的公共 IP 时(对我来说,使用外部 IP 是最简单的方法),我收到一条错误消息,提示“网络连接丢失”。我尝试禁用 ufw,但这是我当前的 ufw 状态:

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
80                         ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

我最近刚刚启用了该Nginx Full配置文件,希望它能够有所帮助,但事实并非如此。

运行tcpdump -i em1 port 80 -s 0 -w capture.cap,尝试在我的 iPhone 上连接,然后运行tcpick -C -yP -r capture.cap得到以下结果:

Timeout for connections is 600
tcpick: reading from capture.cap
1      SYN-SENT       IPHONE_IP:12649 > LOCAL_IP:http
1      SYN-RECEIVED   IPHONE_IP:12649 > LOCAL_IP:http
2      SYN-SENT       IPHONE_IP:12649 > LOCAL_IP:http
3      SYN-SENT       IPHONE_IP:12649 > LOCAL_IP:http
4      SYN-SENT       IPHONE_IP:21998 > LOCAL_IP:http
4      SYN-RECEIVED   IPHONE_IP:21998 > LOCAL_IP:http
5      SYN-SENT       IPHONE_IP:21998 > LOCAL_IP:http
6      SYN-SENT       IPHONE_IP:21998 > LOCAL_IP:http
7      SYN-SENT       IPHONE_IP:9256 > LOCAL_IP:http
7      SYN-RECEIVED   IPHONE_IP:9256 > LOCAL_IP:http
8      SYN-SENT       IPHONE_IP:9256 > LOCAL_IP:http
9      SYN-SENT       IPHONE_IP:9256 > LOCAL_IP:http
tcpick: done reading from capture.cap

下面是我最基本的 nginx 配置:

server {
    listen 80;

    server_name mgmcdermott.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_read_timeout 180s;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

我的直觉告诉我,因为我可以在本地访问该网站,所以一定是我的路由器阻止了外部请求,但是,我能够通过路由器远程 SSH,并尝试禁用所有防火墙,但没有成功。

我具有编程知识和服务器端设置的基本知识,但我对在路由器后面使用 Ubuntu 和 nginx 进行全新安装还不熟悉。

如果需要的话,我愿意彻底清除 Ubuntu 并重新安装

最后,我想说的是,在发布 StackExchange 问题方面,我有点缺乏经验。我读过上千个问题,但很少发现这里没有的问题可以发布,所以如果我漏掉了什么,请多包涵。

谢谢!

编辑:

使用 traceroute 命令,它显示网络超时,其中 !X 表示“管理上禁止通信”:

1-4. Pings across work network
5. * * *
6. * * *
7. * * *
...
19. * * * LAST_PINGED_IP_AT_STEP_4 1.491 ms !X
...

我看到出现了 !X,意思是通信被行政禁止,不确定是否有帮助。

更多信息...

$ sudo netstat -tclp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 localhost:mysql         *:*                     LISTEN      1339/mysqld
tcp        0      0 *:http                  *:*                     LISTEN      1301/nginx
tcp        0      0 *:ssh                   *:*                     LISTEN      1262/sshd
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      1262/sshd
tcp6       0      0 [::]:3001               [::]:*                  LISTEN      1395/node

答案1

经过进一步的调试后,我发现对端口 80 的请求被以下程序阻止了:

ool-4353e70a.dyn.optonline.net (67.83.231.10)

这个 IP 解析到我的 ISP。结果发现 Optimum 会阻止端口 80,除非你升级服务。*捂脸*

来自文档。目前,Optimum Online Ultra 50、Optimum Online Ultra 75 或 Optimum Online Ultra 101 均可激活端口 80。

相关内容