本帖最后由 999的demo 于 2024-3-18 21:32 编辑
旁路部署存在的问题
为什么旁路部署时需要SNAT转换 当AD旁路部署时,并且对外提供虚拟服务的场景,此时配置SNAT时为了保持回包路径一致,client-AD-server,server-AD-client(由于在AD上会将目的地址-虚拟IP转为真实的Server地址,如果此时AD没有做SNAT,则Server直接以自己的真实地址为源发往AF,此时AF没有关于Server真实地址的NAT映射表,只有关于虚拟IP的NAT映射表,此时就造成了Server的数据包无法发送出去)
AD旁路部署时做SNAT会对用户的业务造成什么影响? 如果内网有安全设备做了策略或服务器配置了强策略,则针对于从外网访问服务器的源IP都为同一个,无法知道请求的真实IP,无法进行策略防护
在AD旁路部署并配置了SNAT场景下,如何知道请求的真实IP? AD上不配置SNAT,通过其它方式来解决来回路径不一致的问题,避免真实IP被隐藏/转换 l 在服务器上的网关/内网的AF上做引流,不在AD上做SNAT 如果AD还是配置了SNAT,可以通过XFF字段来得到真实的请求IP地址 l 通过XFF字段识别真实源IP,不过XFF字段的内容是容易伪造的;只针对于HTTP/HTTPS服务 X-Forwarded-For 是一个 HTTP 扩展头部,携带的内容为(客户请求的真实源,代理1的地址,代理2的地址) AD上不配置SNAT(使得数据由AD转发给服务器后,服务器直接交由网关出去) l AD使用三角传输模式(不进行SNAT转换,不修改目的IP地址,将报文的目的MAC替换为真实服务器的MAC),即Server回应的数据包的源就是虚拟IP,即使Server直接将数据传给AF,AF收到后也是有关于该虚拟IP的NAT映射的,可以直接将数据包发给用户;需要AD和Server为二层网络
三角传输
三角传输模式只支持四层模式的虚拟服务(4层TCP或4层UDP),但是不支持七层类型的虚拟服务发布 三角传输又称为DR(Direct Route)或DSR(DirectServer Return)模式 AD设备收到客户端的请求,转发报文时,不改变目的IP地址,而将报文的目的MAC替换为真实服务器的MAC后直接把报文转发给真实服务器 此时服务器的响应报文不经过AD,直接通过前端网关设备转发出去回给客户端 具体的数据包交互流程 AF将外网用户发来的数据包的目的地址转换为AD提供的虚拟IP地址,当虚拟IP地址到达AD后,AD不会讲虚拟IP转为真实服务器IP,而是直接将报文的目的MAC替换为真实服务器的MAC将其调度到真实服务器。
此时真实服务器收到的报文的源为外网IP,目的为虚拟IP,当服务器回包时的源也为虚拟IP,目的为外网IP,此时当数据包到达AF后,AF就根据NAT映射表转为公网地址发给外网用户 主要实现以下两个功能 1、分流,减轻AD的流量负担,因为回来的数据包不经过AD设备,而是通过路由器转发回客户端 2、旁路模式下且服务器网关不为设备地址,服务器需看到客户端真实IP地址 三角传输模式,客户端请求的源IP地址不会改变,服务器收到的请求即为客户端的请求,该模式下服务器看到源IP为客户端真实IP,前提条件为客户端到AD之间没有经过源地址转换 配置的注意事项 虚拟服务发布时只能选择TCP服务 对外发布的虚拟服务端口要和真实服务器的端口一致 服务器上添加Loopback Adapter虚拟网卡,并且设置网卡IP地址为虚拟IP地址 旁路模式部署需要WAN口设置多IP,第一个IP不能是虚拟服务发布的IP,否则节点监视器无法监视节点。因为三角传输发布的虚拟服务的IP是服务器上loopback IP,如果AD设备以这个loopback IP发给服务器时,服务器会无法回包给AD |