在测试 Zscaler POC 时(从安全角度来看),我很难理解CGNAT是如何在客户端上路由的。
我主要关心(和问题)是100.64.xy 路由不在路由表中(Windows 10)。默认网关位于我的本地网络网关上,因此流量也无法到达那里。
CGNAT 流量的路由方式有什么特别之处?
客户端的路由表是
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.43.1 192.168.43.107 50
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
172.22.208.0 255.255.240.0 On-link 172.22.208.1 271
172.22.208.1 255.255.255.255 On-link 172.22.208.1 271
172.22.223.255 255.255.255.255 On-link 172.22.208.1 271
192.168.43.0 255.255.255.0 On-link 192.168.43.107 306
192.168.43.107 255.255.255.255 On-link 192.168.43.107 306
192.168.43.255 255.255.255.255 On-link 192.168.43.107 306
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.43.107 306
224.0.0.0 240.0.0.0 On-link 172.22.208.1 271
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.43.107 306
255.255.255.255 255.255.255.255 On-link 172.22.208.1 271
下面是在 zscaler 上设置的内部公司服务的解析(因此通过 CGNAT 路由)。zscaler 之外的同名指向一个经典的 RFC1918 地址。
> nslookup internalcorporatesite.com
Server: xxx.com
Address: 192.168.43.1
Non-authoritative answer:
Name: internalcorporatesite.com
Address: 100.64.1.9
请注意,默认网关192.168.43.1
不知道 CGNAT - 它是一个本地网络,并且 zscaler 使用 CGNAT。
它使用过滤器驱动程序从网络堆栈中提取数据包并重定向它。因此没有用于 zScaler 连接的虚拟 NIC。
这也意味着通过 ZPA 的目的地不会出现在路由表中。
zScaler 并不真正使用 CGNAT。它只需要一个地址范围,该地址范围不应该有发往它的合法流量,它可以劫持和重定向,而后果最小。数据包进入 zScaler 后如何处理基本上是他们的秘诀。