网络排查案例课
杨胜辉
eBay 资深运维专家,流量系统负责人
22781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
实战三:不用抓包就能做的网络排查篇 (2讲)
网络排查案例课
15
15
1.0x
00:00/00:00
登录|注册

不定期加餐(一) | 八仙过海,各显神通:透传真实源IP的各种方法

仅适用于HTTP/邮件协议
重复的X-Forwarded-For头部
源IP信息的伪造问题
LB无法处理回包
配置繁琐,扩展性不佳
三角模式直接透传源IP
需要服务端代码改造
类似Proxy Protocol,但数据格式不同
Citrix提供的方案
被多个软件支持,如Nginx, AWS, GCP
在TCP握手后发送包含真实源IP的包
HAProxy工程师提出
需要发送方和接收方都进行改造
利用TCP Options字段承载真实源IP
可能存在的问题
HTTP header传递真实源IP
Squid开发者提出
基于TCP的应用,部署在LB后面,选择哪种方法透传真实源IP?
量身定做最为合适
没有普适于一切场景的方案
根据需求和基础架构特点选择合适的方法
隧道技术 (如IPIP)
NetScaler的TCP IP header
Proxy Protocol
TOA (TCP Option Address)
X-Forwarded-For
思考题
小结
网络层方法
传输层方法
应用层方法
透传真实源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
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • woJA1wCgAASVwFBCYVuFLQY8_9xjIc...
    toa就算服务器加载内核模块了,但后端应用也需要改造吧

    作者回复: LB需要插入这个option,RS需要能读取这个option。你说的后端是指RS还是RS更后面的机器呢?

    2022-03-25
    3
    1
  • Realm
    思考题: 选中tcp option

    作者回复: 也是toa的粉丝:)

    2022-03-23
    1
  • 追风筝的人
    tcp option address: 它是利用 TCP Options 的字段来承载真实源 IP 信息,这个是目前比较常见的第四层方案。不过,这并非是 TCP 标准所支持的,所以需要通信双方都进行改造。也就是:对于发送方来说,需要有能力把真实源 IP 插入到 TCP Options 里面。对于接收方来说,需要有能力把 TCP Options 里面的 IP 地址读取出来。

    作者回复: 这个方案的好处是不改动网络层,但是需要加载内核模块,配置步骤略多一些。确实没有完美的方案,只是根据具体情况来选择一个相对适合的方案~

    2022-03-23
  • Chao
    1、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
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部