0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

真实源IP怎么获得?有这6种方法

汽车玩家 来源:咔咔侃威廉希尔官方网站 作者:咔咔侃威廉希尔官方网站 2020-01-20 17:34 次阅读

获得真实IP的6种方法

当数据包从负载均衡器往后端转发时候,真实源IP可在L3、L4、L7实现,并且分别有2种方法可以获得真实IP,因此共有6种方法:

保持L3层源IP不变,根据连接次数可以分为

● 一次连接模式,如lvs

● 二次连接模式,如haproxy的透明模式

在L4层数据里,添加源IP信息,有2种模式

● 在4层的option字段里增加源IP信息,比如tcp option、udp option

● 在4层末尾和7层开头之间,增加proxy protocol信息

在L7层数据里,增加源IP信息,有2种模式

● 协议自带,例如HTTP的X-FORWARD-FOR

● 业务程序自行实现

一次连接与二次连接

一次连接:负载均衡器对数据包仅做转发,而不对后端重新发起三次握手

二次连接:和一次连接相对应,在tcp转发时候,对后端重新进行了三次握手。上面所讲的L4和L7方法的负载均衡,都是二次连接

可以通过对比源端口是否有改变来简单判断是一次连接还是二次连接,端口没改变,可以理解为一次连接,有改变就是二次连接

方法1: L3的一次连接模式

介绍:是指在网络层不对源IP做修改,直接将数据包转发给后端,当后端接收到数据的时候,源IP就是真实IP。

实现:LVS-DR、LVS-NAT、LVS-TUNNEL模式。其中LVS-TUNNEL比较特别,是在原有数据包的开头封装了IP头,当后端收到数据的时候,将封装的IP头进行解封装,获得的就是原有数据包。

优点:逻辑简单,当负载均衡器故障切换的时候,从客户端到后端的tcp连接不会中断

缺点:对网络架构有要求,比如DR模式,要求后端配VIP,并且回包要能直接回到客户机;NAT模式,要求回包经过负载均衡器;TUNNEL模式要求后端支持IPIP隧道

方法2: L3的二次连接模式

介绍:是指负载均衡器和后端重新进行三次握手,但保持数据包的源IP为真实IP。

实现:haproxy(开启tproxy透明代理模式)+ iptables(fwmark打标记)+ 策略路由这3者组合才能实现

优点:可以实现L7层(如HTTP/HTTPS)的负载均衡,而一次连接主要实现L4层的负载均衡

缺点:配置最复杂,同时要求回包经过负载均衡器

方法3: L4的toa模式

介绍:在4层的option字段里增加源IP信息,比如在tcp option里增加源IP信息(称为toa)、udp option里增加源IP信息(称为uoa)

实现:负载均衡器配置lvs-fullnat(只支持toa),iqiyi/dpvs(支持toa和uoa);后端要加载toa、uoa模块,这个模块的作用是替换了后端应用程序获取IP的系统接口的钩子

优点:对网络架构要求低

缺点:lvs-fullnat需要编译内核,且只支持rhel/centos 6的内核,另外多年未更新;iqiyi/dpvs功能强大,但需要dpdk的支持;后端都需要加载toa/uoa模块,且只支持linux系统。

方法4: L4的proxy protocol模式

介绍:在L7层开头增加proxy protocol数据(该协议是haproxy发明),目前有v1(明文)和v2(二进制)版本

实现:负载均衡器和后端同时开启proxy protocol,haproxy和nginx均支持,不过haproxy的配置颗粒度更小,另外nginx转发数据时候只支持v1

优点:对网络架构要求低,只要程序支持即可,因此理论上没有操作系统限制

缺点:目前支持proxy protocol的程序较少,且两端只能都开启或者都不开启该协议,不能一端开一端不开

方法5: L7协议自带,例如HTTP的X-FORWARD-FOR

介绍:最常见的方法,协议自带源IP信息,或者可定制插入

实现:例如HTTP协议有X-FORWARD-FOR,也可以自己将源IP插入到HTTP头部信息里

优点:对网络架构要求低,配置简便

缺点:容易被伪造

方法6: L7层业务程序自行实现

介绍:最好的方法,就是业务方自行实现

实现:业务自行实现,例如在client端插入源IP信息,带到server端

优点:对网络架构无要求,只要网络可通即可,只要安全做好,不容易被伪造

缺点:业务方要有一定开发能力

总结

如果能做到无状态,不需要真实源IP,是最好的。因为这样对底层架构没有要求,底层架构就可以做的更高级更弹性。

如果一定要获得真实源IP,推荐方案的顺序就是倒推,从L7到L3,即首选方法6,如果不行再选用方法5,以此类推到方法1。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 均衡器
    +关注

    关注

    9

    文章

    210

    浏览量

    30349
  • IP
    IP
    +关注

    关注

    5

    文章

    1703

    浏览量

    149513
收藏 人收藏

    评论

    相关推荐

    保持电容性负载稳定的六种方法

    本帖最后由 gk320830 于 2015-3-8 23:36 编辑 保持电容性负载稳定的六种方法本系列的第10部分是我们所熟悉的《电气工程》杂志(Electrical Engineering
    发表于 09-25 09:31

    labview查看本机ip的三种方法

    做TCP通讯的时候,有时候需要知道自己的IP虽然知道自己电脑ip可以不用这么麻烦,但是有时候就想用自己所学来获得自己所需,职业病 咳咳这里给出得到本地IP的三
    发表于 11-27 17:17

    获得E币的10种方法

    这些是论坛里面找到的10获得E币的方法:0。每天登陆+1E币(每天1次)1。发表帖子,可以得到+1点贡献和+2E币(不限次数)2。上传附件 +1点贡献和+1E币 (每天上限10次)3。自己帖子
    发表于 06-15 14:30

    启动Redis的三种方法

    Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
    发表于 06-08 16:09

    LwIP协议栈开发嵌入式网络的三种方法有何关系

    LwIP协议栈开发嵌入式网络的三种方法分析 轻量级的TCP/IP协议栈LwIP,提供了三应用程序设计方法,且很容易被移植到多任务的操作系统中。本文结合μC/OS-II这一实时操作系统
    发表于 08-05 07:55

    噪声系数测量的三种方法

    噪声系数测量的三种方法 本文介绍了测量噪声系数的三种方法:增益法、Y
    发表于 05-07 13:38 2154次阅读

    解决电池问题有三种方法

    解决电池问题有三种方法      对于手机电池问题如何解决,业内人士指出有以下三种方法:   一、发明新型电池。目前有日本生产商已经展示了概念性的燃
    发表于 11-10 14:26 952次阅读

    如何获得大功率射频信号的真实PA输入阻抗

    如何获得大功率射频信号的真实PA输入阻抗 非理想PA(power amplifier,功率放大器)的输入阻抗是在负载拉移系统中采用拉移方法测量的,这
    发表于 01-13 11:05 1346次阅读
    如何<b class='flag-5'>获得</b>大功率射频信号的<b class='flag-5'>真实</b>PA输入阻抗

    获得高输出电流的三种方法介绍

    PSRR。一些客户已经要求在保持低噪声和高PSRR的同时将电流增加到200mA以上。本文介绍了获得更高输出电流的三种方法,并提供了实用的输入,以帮助您确定哪种方法最适合您的电路条件。这三
    的头像 发表于 04-12 08:05 1.4w次阅读
    <b class='flag-5'>获得</b>高输出电流的三<b class='flag-5'>种方法</b>介绍

    python统计词频的三种方法

    python统计词频的三种方法方法
    发表于 05-25 14:33 2次下载

    识别电路的10种方法

    对较复杂的电路应先将原电路简化为等效电路,以便分析和计算。识别电路的方法很多,现结合具体实例介绍十种方法
    发表于 02-08 16:20 243次下载
    识别电路的10<b class='flag-5'>种方法</b>

    获得更高输出电流的三种方法

    的79dB PSRR(1MHz)。一些客户要求将电流提高到200mA以上,同时仍保持低噪声和高PSRR。本文探讨了获得更高输出电流的三种方法,并提供了实用的输入,以帮助您确定哪种方法最适合您的电路条件。这三
    的头像 发表于 01-08 15:32 6115次阅读
    <b class='flag-5'>获得</b>更高输出电流的三<b class='flag-5'>种方法</b>

    服务器真实ip地址怎么隐藏?

    有用。 1、使用高防ip 若服务器IP暴露,DDoS攻击将直接进入IP攻击。遇到攻击时,服务器可配备高防IP
    的头像 发表于 05-22 15:24 2660次阅读

    linux查找ip地址的三种方法

    在 Linux 系统中,经常需要查找 IP 地址以进行网络配置、故障排除或安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍三简单的
    发表于 08-02 09:53 640次阅读
    linux查找<b class='flag-5'>ip</b>地址的三<b class='flag-5'>种方法</b>

    linux网络配置的3种方法

    Linux是一流行的操作系统,广泛应用于服务器和网络设备中。Linux系统提供了多种方法来配置网络连接,使得网络设置更加灵活和可定制。本文将会介绍Linux网络配置的三种方法,包括命令行方式
    的头像 发表于 11-27 14:33 4411次阅读