我如何判断(或证明)数据包被我的路由器或 ISP 丢弃?

我如何判断(或证明)数据包被我的路由器或 ISP 丢弃?

我有一台 ISP 提供的 Hitron 路由器,我已将其配置为将端口转发到 LAN 上的设备。我用过的能够通过路由器的 WAN IP 从 LAN 上的机器访问 LAN 上的机器。例如

curl https://$(curl icanhazip.com)

事实上,假设我有一个在路由器后面监听的服务器,就会建立 HTTPS 连接。

例子:

client (192.168.0.42) ---> router (192.168.0.1) ---> dns for me.example.com, returns my WAN IP - same thing curl icanhazip.com returns. Example 203.0.113.42
client (source:192.168.0.42, dest:203.0.113.42:443) ---> nothing. Hangs forever. Or until timeout.

以前这个方法很好用。

现在我只能通过网关 192.168.0.1 访问路由器,但这只会直接连接到路由器,而不会连接到路由器后面的任何机器。如果我想连接到 LAN 上的服务器,我必须直接使用 IP。

但奇怪的是,如果我不是连接到我的 wifi - 实际上是任何其他网络 - 然后我可以连接到我的外部 IP 并且流量被正确转发。

client(source: 192.0.2.42, dest: 203.0.113.42:443) ---> router ---> web server (192.168.0.42)

是否有可能找出我的数据包被丢弃的位置?我已经在路由器本身中查找了各种信息,但一无所获。我也在 Twitter 上联系了我的 ISP,但他们也没有提供太多帮助。我使用了 ping 和 traceroute - 尝试连接到路由器的公共 IP 都失败了。我还启动了 wireshark,可以看到 ping 数据包和其他流量尝试,但我对它不够熟悉,不知道是否有办法使用它来表示“啊,是的,这些数据包肯定在 X 被丢弃”。我还完全禁用了路由器级别的防火墙,并弄乱了任何看起来有点希望的设置(甚至把我的路由器搞得一团糟,不得不对其进行硬重置,我想那是配置 IP 直通)。

我是否可以验证数据包是被路由器丢弃,还是在 ISP 级别丢弃?如果可以,我该怎么做?

编辑

为了获得更多的乐趣和刺激,显然这仅有的适用于较低的端口。我不知道确切的范围是多少,但看起来较高的端口仍然允许连接。

答案1

听起来问题在于错误配置的发夹式 NAT,有些 SOHO 路由器会自动正确配置发夹式 NAT,而其他路由器则需要特定的路由和 NAT 规则。

https://serverfault.com/a/557776

相关内容