如果从外部 WiFi 连接,我家里的树莓派上的某个端口就会关闭,而使用手机数据时就会打开,有什么解释/解决方法吗?

如果从外部 WiFi 连接,我家里的树莓派上的某个端口就会关闭,而使用手机数据时就会打开,有什么解释/解决方法吗?

我家里有一台树莓派,上面运行着一个小型的 djangorest 应用程序,对于我个人来说,这是非常简单的东西。

今天我想从图书馆访问我的 pi(如果重要的话,使用他们的公共 wifi),但我无法访问;然后我决定通过网络共享切换到我的手机数据,然后它又可以正常工作了。

我对 nmap 进行了测试,结果证实了我刚才所描述的。

使用WiFi:

PORT     STATE    SERVICE
3000/tcp filtered sae-urn

网络共享时:

PORT     STATE SERVICE
3000/tcp open  sae-urn

我不太熟悉 nmap,我想知道“过滤”是否意味着我当前网络上的防火墙正在过滤连接,或者 Raspberry Pi 上的防火墙正在过滤它。

有没有什么可能的解决方法?

编辑:

我也尝试使用旧的 ping 命令,结果如下(连接到 wifi 时):

ping myip -p 3000
PATTERN: 0x3000
PING myip (myip) 56(84) bytes of data.
64 bytes from myip: icmp_seq=1 ttl=56 time=4.28 ms
64 bytes from myip: icmp_seq=2 ttl=56 time=4.33 ms
64 bytes from myip: icmp_seq=3 ttl=56 time=2.77 ms
64 bytes from myip: icmp_seq=4 ttl=56 time=3.82 ms

答案1

我不太熟悉 nmap,我想知道“过滤”是否意味着我当前网络上的防火墙正在过滤连接,或者 Raspberry Pi 上的防火墙正在过滤它。

“过滤”仅表示探测被完全忽略,没有响应。(如果您使用选项运行 nmap --reason,它会告诉您大致相同的信息。)它没有真正告诉您连接尝试在何处被阻止 – 它实际上可能在路径上的任何地方。

现在,公共 Wi-Fi 网络(例如图书馆、学校)经常会阻止所有不常见的端口(例如,以阻止人们在那里运行 BitTorrent),因此您可以放心地认为问题就在这里。

解决方法是使用更常见的端口。例如,如果它是一个 Web 应用程序,请在标准 HTTPS 端口 443 上运行它(如果您的家庭 ISP 允许这样做)。(您可以在“反向代理”模式下使用 Apache/Nginx 在同一端口上多路复用多个 Web 应用程序。)

然而,如果你仅根据 nmap 的输出进行猜测,那么它可以可能是 Pi 的防火墙将它们丢弃(如果通过网络共享工作的话,这种情况不太可能发生,但从技术上讲是可行的),可能是你家的路由器丢了它们(同样),可能是图书馆的 ISP 阻止了数据包(这可能发生在某些“常被滥用”的端口上),可能是你家里的 ISP 无法从图书馆的 ISP 获取任何数据包,可能是 Pi 接收到了你的探测,但是回应没有打通...换句话说,简单的 nmap 扫描不能提供足够的信息来定位问题。

A路由追踪程序可能会提供更多信息,如果您可以告诉它在这个端口上专门使用 TCP 探测(而不是通常的 ICMP),例如traceroute --tcp --port=3000

(Nmap 有自己的--traceroute选项,但不幸的是它似乎没有办法指定用于 traceroute 探测的端口,甚至忽略了规范-p。)

相关内容