为什么ISP的坏路由器不转发某些数据包?

我正在pipe理一个局域网( 192.168.0.0/24 ),我有:

  • 路由器192.168.0.1 ),由ISP提供的一个路由器,可以访问互联网,作为交换机和接入点。 这个路由器是非常糟糕的:它甚至不允许我closuresIPv6或使用自定义名称服务器…
  • SWITCH( 192.168.0.2 ),一个像样的路由器,用作交换机和接入点。
  • GW( 192.168.0.41 ),我想用作整个networking网关的计算机。 GW需要通过它是客户端的VPN发送数据包到互联网。 服务器DHCP正在这里运行。
  • 所有其他主机(例如LAPTOP( 192.168.0.101 ))的IP地址范围为192.168.0.100-192.168.0.200

示例图:

  +----+ +--------+ | GW | | Laptop | +--+-+ +----+---+ | | | | -+ +----+---+ +----+---+ Internet +---------+ ROUTER +------------+ Switch | -+ +--------+ +--------+ 

我有一个非常类似的configuration已经build立和运行在不同的地方。 那里没有SWITCH,路由器是不同的型号,一切工作正常

这里一切正常,只要LAPTOP和GW都直接连接到开关。 如果一个或两个都连接到ROUTER,事情就会停止。

如果LAPTOP和GW之间至less有一个连接到ROUTER,则LAPTOP可以ping通互联网,但TCP不起作用。

在浪费了很多时间之后,我开始在LAPTOP和GW上嗅探,并且我注意到ROUTER不转发一些数据包…
在以下示例中,LAPTOP通过WiFi连接到ROUTER,而GW通过以太网电缆直接连接到ROUTER; LAPTOP尝试通过HTTP下载某些内容:

  1. LAPTOP发送一个TCP SYN数据包给HTTP服务器(在Internet上)。 GW收到数据包。 以太网帧=源:LAPTOP – >目的地:GW。
  2. GW发送VPN数据包到它所连接的VPN服务器。 VPN数据包将封装上面收到的TCP SYN。
  3. GW从VPN服务器接收打包。 这个数据包包含下面的TCP SYNACK。
  4. GW向LAPTOP发送一个TCP SYNACK:这是在步骤1中收到的TCP SYN的ACK。 以太网帧=源:GW – >目的地:LAPTOP。
    笔记本电脑从来没有收到任何东西。

由于GW没有收到对TCP SYNACK#4的响应,所以在延迟后它会一直发送相同的数据包,但是它们永远不会被LAPTOP接收到。

因为如果SYNACK数据包没有stream过ROUTER,所有东西都能正常工作,我确信ROUTER不会正确地转发这些SYNACK。

如何发生,为什么?

我做错了什么? 我可以做任何事情,使一切工作,或者我不得不得到一个新的路由器,并使用ISP的只有一个调制解调器?