不定期加餐(一) | 八仙过海,各显神通:透传真实源IP的各种方法
杨胜辉
该思维导图由 AI 生成,仅供参考
你好,我是胜辉。这节加餐课,我们来聊聊透传真实源 IP 的各种方法。
在互联网世界里,真实源 IP 作为一个比较关键的信息,在很多场合里都会被服务端程序使用到。比如以下这几个场景:
安全控制:服务端程序根据源 IP 进行验证,比如查看其是否在白名单中。使用 IP 验证,再结合 TLS 层面和应用层面的安全机制,就形成了连续几道安全门,可以说是越发坚固了。
进行日志记录:记下这个事务是从哪个源 IP 发起的,方便后期的问题排查和分析,乃至进行用户行为的大数据分析。比如根据源 IP 所在城市的用户的消费特点,制定针对性的商业策略。
进行客户个性化展现:根据源 IP 的地理位置的不同,展现出不同的页面。以 eBay 为例,如果判断到访问的源 IP 来自中国,那就给你展现一个海淘页面,而且还会根据中国客户的特点,贴心地给你推荐流行爆款。
虽然源 IP 信息有这么多用处,但是现实情况中,这个源 IP 信息还不是那么好拿。这个原因有很多,最主要的还是跟负载均衡(LB)的设计有关系。
一般来说,用户发起 HTTP 请求到网站 VIP,VIP 所在的 LB 会把请求转发给后端,一前一后分别有两个 TCP 连接。
前一个 TCP 连接的客户端 IP 是 CIP,服务端 IP 是 VIP。
后一个 TCP 连接的客户端 IP 是 LB 的 SNAT IP,服务端 IP 是 SIP。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
透传真实源IP是互联网世界中的重要技术,本文介绍了多种方法来实现这一目标。首先,应用层方法通过X-Forwarded-For头部传递真实源IP信息,但存在伪造和重复头部的问题,且无法解决非HTTP协议的需求。其次,传输层方法介绍了TOA和TCP Options的应用,需要通信双方进行改造以支持。此外,还介绍了Proxy Protocol和NetScaler的TCP IP header方案,它们在握手后立即发送包含真实源IP信息的TCP包。另外,网络层方法利用IPIP隧道技术直接传输真实源IP信息到后端。然而,这些方法各有优劣,需要根据具体需求和基础架构特点选择最适合的方法。总的来说,本文通过深入浅出的方式介绍了透传真实源IP的各种方法,为读者提供了全面的技术视角和实现细节,使读者能够快速了解并掌握这一关键技术。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络排查案例课》,新⼈⾸单¥59
《网络排查案例课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- woJA1wCgAASVwFBCYVuFLQY8_9xjIc...toa就算服务器加载内核模块了,但后端应用也需要改造吧
作者回复: LB需要插入这个option,RS需要能读取这个option。你说的后端是指RS还是RS更后面的机器呢?
2022-03-2531 - Realm思考题: 选中tcp option
作者回复: 也是toa的粉丝:)
2022-03-231 - 追风筝的人tcp option address: 它是利用 TCP Options 的字段来承载真实源 IP 信息,这个是目前比较常见的第四层方案。不过,这并非是 TCP 标准所支持的,所以需要通信双方都进行改造。也就是:对于发送方来说,需要有能力把真实源 IP 插入到 TCP Options 里面。对于接收方来说,需要有能力把 TCP Options 里面的 IP 地址读取出来。
作者回复: 这个方案的好处是不改动网络层,但是需要加载内核模块,配置步骤略多一些。确实没有完美的方案,只是根据具体情况来选择一个相对适合的方案~
2022-03-23 - Chao1、http headers 允许使用逗号分隔的值分开成多个。 比如 vary 等。 2、tcp应用可以直接回包给真实源。 如果负载与RS使用IPIP的话。
作者回复: 1. 你的vary的补充很好,这也是一个可以包含多个值的头部。 2. 看来你选择在LB和RS(后端服务器)之间采用IPIP和三角模式:)
2022-03-23 - 潘政宇Toa
作者回复: 可以可以
2022-03-23 - 原则IP 层的方法不太理解,为什么是通过 LB 传递了真实源 IP,后续通信却绕开了 LB 呢?这是什么架构?好像没见过。2023-06-18归属地:广东1
收起评论