思科无线路由器在路由器模式下不允许完整的 TCP 握手

思科无线路由器在路由器模式下不允许完整的 TCP 握手

我最近购买了一台思科 rv220w 无线路由器。我的设置如下:

Internet -> asa 5505 -> 10.0.1.0 subnet -> wireless router

(子网 10.0.3.0,面向公众的 IP 是 10.0.1.140)。

我可以在两个子网之间正常 ping,但其他的就不行了。我用 wireshark 捕获了数据包,发现了一些非常有趣的事情。如果我尝试从 10.0.1.0 子网中的一台机器连接到 10.0.3.0 子网,比如本例中的远程桌面,我会收到一个 SYN,然后是一个 SYN_ACK,然后没有收到 ACK。只有发起连接的机器发送了一个重置​​ (RST)。

这真是太奇怪了。如有任何帮助,我将不胜感激。如果需要,我有详细的捕获信息。此外,以下是数据包跟踪结果,例如,10.0.1.0 子网上的计算机尝试远程访问 10.0.3.0 子网上的计算机:

数据包跟踪器输入内部 tcp 10.0.1.46 33000 10.0.3.151 3389

阶段1
类型:FLOW-LOOKUP`
子类型:
结果:允许
配置:
附加信息:
未找到匹配的流程,正在创建新的流程

阶段2
类型:ROUTE-LOOKUP
子类型:输入
结果:允许
配置:
附加信息:
在 10.0.3.0 255.255.255.0 里面

阶段:3
类型:访问列表
子类型:日志
结果:允许
配置:
接口内部的 access-group inside_access_in
访问列表 inside_access_in 扩展允许 tcp 任何任何对象组 DM_INLINE_TCP_1
对象组服务 DM_INLINE_TCP_1 tcp
 组对象 ftpdatatls
 组对象 ftptls
 群组对象 gtalk
 组对象 imapssl
 组对象 smtp2
 组对象 smtpssl
 组对象 sqlserver
 端口对象 eq ftp
 端口对象 eq ftp 数据
 端口对象 eq www
 端口对象 eq https
 端口对象 eq imap4
 端口对象 eq pop3
 端口对象 eq smtp
 端口对象 eq ssh
 端口对象 eq telnet
 群组对象互联网电台
 端口对象 eq whois
 群组对象网络邮件
 组对象 rdp
 组对象 mtbogcweb
 组对象 git
 组对象 iCloudSMTP
 组对象 whm
 群组对象 utahsde
 端口对象 eq 1401
 端口对象 eq 5442
附加信息:

阶段:4
类型:IP-OPTIONS
子类型:
结果:允许
配置:
附加信息:

阶段:5
类型:
子类型:
结果:允许
配置:
附加信息:

阶段:6
类型:NAT-EXEMPT
子类型:
结果:允许
配置:
  匹配 ip 10.0.1.0 255.255.255.0 内部 10.0.3.0 255.255.255.0 内部
    NAT 豁免
    翻译命中数 = 23,取消翻译命中数 = 0
附加信息:

阶段:7
类型:NAT-EXEMPT
子类型:rpf-check
结果:允许
配置:
  匹配 ip 10.0.3.0 255.255.255.0 内部 10.0.1.0 255.255.255.0 内部
    NAT 豁免
    翻译命中数 = 0,取消翻译命中数 = 23
附加信息:

阶段:8
类型:NAT
子类型:
结果:允许
配置:
nat (内部) 1 0.0.0.0 0.0.0.0
  匹配 ip inside any inside any
    动态转换至池 1(无匹配的全局变量)
    翻译命中数 = 1,取消翻译命中数 = 0
附加信息:

阶段:9
类型:NAT
子类型:主机限制
结果:允许
配置:
nat (内部) 1 0.0.0.0 0.0.0.0
  匹配 ip inside any inside any
    动态转换至池 1(无匹配的全局变量)
    翻译命中数 = 1,取消翻译命中数 = 0
附加信息:

阶段:10
类型:NAT
子类型:rpf-check
结果:允许
配置:
nat (内部) 1 0.0.0.0 0.0.0.0
  匹配 ip inside any inside any
    动态转换至池 1(无匹配的全局变量)
    翻译命中数 = 1,取消翻译命中数 = 0
附加信息:

阶段:11
类型:NAT
子类型:主机限制
结果:允许
配置:
nat (内部) 1 0.0.0.0 0.0.0.0
  匹配 ip inside any inside any
    动态转换至池 1(无匹配的全局变量)
    翻译命中数 = 1,取消翻译命中数 = 0
附加信息:

阶段:12
类型:IP-OPTIONS
子类型:
结果:允许
配置:
附加信息:

阶段:13
类型:流程创建
子类型:
结果:允许
配置:
附加信息:
新流程创建,ID 为 77684,数据包已发送至下一个模块

结果:
输入接口:内部
输入状态:up
输入线状态:up
输出接口:内部
输出状态:向上
输出线路状态:up
操作:允许

答案1

如果我理解正确的话,您的完整设置是:

互联网 -> asa 5505 -> 10.0.1.0 子网 -> 无线路由器 -> 10.0.3.0 子网

由于无线路由器是新买的,我猜想 10.0.1.0 子网中的所有 PC 都使用 asa 5505 作为默认网关。因此,从 10.0.1.0 到 10.0.3.0 的数据包被转换到池 1,这在某种程度上扰乱了数据包流。

尝试:1. 将 10.0.1.0 子网中所有 PC 的默认网关更改为无线路由器,或 2. 禁用与池 1 的路由

答案2

所以,最终 Reddit 上的某个人给我指明了正确的方向。对我有用的解决方案如下:https://serverfault.com/questions/511059/routing-via-cisco-asa-is-changing-tcp-sequence-ack-numbers

看来 ASA 正在随机化序列号,这让无线路由器感到困惑。具体来说,我添加了

set connection advanced-options tcp-state-bypass

我的全球检查政策。

相关内容