创建TCP监听器-源IP透传

<p>TCP监听器可以支持源IP地址透传,请打开TCP监听器的高级配置选项&ldquo;源IP地址透传&rdquo;开关。</p> <p><img src="https://obs-cn-shanghai.ocftcloud.com/pacloud/20202708095114-13afee9a94db.png" style="height:298px; width:626px" /></p> <p>开启后,ELB会通过TOA字段,将源IP地址携带转发到后端的ECS上,您在ECS上抓包时可以通过识别TOA字段来获取源IP地址。</p> <p>ECS主机侧通过TOA模块识别TOA字段。</p> <p><strong>TOA模块安装</strong></p> <p>1.&nbsp;&nbsp;源码方式安装</p> <p>源码方式安装需要有编译环境,不同linux系统的编译环境安装方式有些差异,以下命令供参考。一般情况在平安金融云平台直接购买的ECS主机的软件仓库都已经设置好,并能正确更新。</p> <p>源代码包名为toa.tar.gz, 请先下载到安装机器(包括ECS主机和Nginx server)并解压:</p> <p><strong>Wget http://yum.cloud.papub/ecs-plugin/toa/toa.tar.gz</strong></p> <p><strong>tar xvf toa.tar.gz</strong></p> <p><strong>演示用例</strong><img src="https://obs-cn-shanghai.ocftcloud.com/pacloud/20202005104917-15c1ed9d975a.png" style="height:616px; width:981px" /><strong>以</strong><strong>下为您提供不同的系统,安装编译环境的用例,如果已安装可以跳过,进入第2步</strong></p> <p>a.&nbsp;安装编译环境(命令仅供参考,如果已安装请跳过)</p> <p>&nbsp; &nbsp; 对于Redhat系linux(centOS/Redhat),请输入以下命令安装编译环境:</p> <p><strong>&nbsp; &nbsp; yum install build-essential</strong></p> <p>b.&nbsp;&nbsp;编译源码: 进入toa源码目录,执行&nbsp;</p> <p><strong>&nbsp; &nbsp; make</strong></p> <p>&nbsp; &nbsp; (<strong>该步骤成功执行后也可以直接输入&ldquo;insmod toa.ko</strong><strong>&rdquo; </strong><strong>装载toa</strong><strong>模块, </strong><strong>跳过步骤c</strong>)</p> <p>c.&nbsp;&nbsp;&nbsp;安装模块(<strong>该步骤跟内核配置有关,可能不能成功,如果出错请使用步骤</strong><strong>b</strong>)</p> <p>&nbsp; &nbsp;i. 安装toa模块进系统目录</p> <p><strong>&nbsp; &nbsp; &nbsp; &nbsp; make install</strong></p> <p>&nbsp; &nbsp;ii.&nbsp;装载toa模块</p> <p><strong>&nbsp; &nbsp; &nbsp; &nbsp; modprobe toa</strong></p> <p>&nbsp; &nbsp; &nbsp;(该命令可以写入自动运行脚本, 以便linux重启时自动装载toa模块)</p> <p>2.&nbsp;&nbsp;&nbsp;模块包方式安装</p> <p>TOA以kernel module方式提供。主机和Nginx server使用同一个模块包:<strong>toa.ko</strong>.</p> <p>TOA模块安装和查询命令如下(需要root权限):</p> <p>a.&nbsp;查询</p> <p>&nbsp; &nbsp; &nbsp;#<strong> lsmod |grep toa</strong></p> <p><em>&nbsp; &nbsp; &nbsp;toa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13252&nbsp; 0</em></p> <p>b.&nbsp;安装</p> <p>&nbsp; &nbsp; &nbsp;# <strong>insmod toa.ko</strong></p> <p>&nbsp; &nbsp; (该命令可以写入自动运行脚本,注意带路径,以便linux重启时自动装载TOA模块)</p> <p><strong>安装用例</strong></p> <p><img src="https://obs-cn-shanghai.ocftcloud.com/pacloud/20202005153141-1f1a03ae9bdd.png" style="height:482px; width:896px" /></p> <p>至此,TOA模块安装成功。</p> <p><strong>ECS主机使用方法</strong></p> <p>加载TOA模块后,accept和getpeername返回的都是Nginx通过TOA设置的真实客户端client ip/port。如果不加载TOA, 则拿到的是Nginx发包的接口地址。</p> <p>Example:</p> <pre> <code>struct sockaddr_in client_addr; … new_fd=accept(sockfd,(struct sockaddr *)(&amp;client_addr), &amp;sin_size); </code></pre> <p>或者:</p> <pre> <code>getpeername(new_fd, (struct sockaddr *)(&amp;client_addr), &amp;sin_size);</code></pre>
以上内容是否解决了您的问题?
请补全提交信息!
联系我们

电话咨询

400-151-8800

邮件咨询

fincloud@ocft.com

在线客服

工单支持

解决云产品相关技术问题