贴几个自己写的BigIP F5的iRule

折腾了几天的BigIP F5的iRule,终于折腾出了项目需要的,顺便也把几个练习和测试的iRule在这儿贴一下,给有需要的兄弟参考吧。

Tcl/Tk  代码
  1. #======================================#   
  2. #    几个BigIP F5 iRule的习作           #   
  3. # Author: BrokenStone                  #   
  4. # mail: wdmsyf@yahoo.co                #   
  5. # 2006.11.30                           #   
  6. #======================================#   
  7.   
  8.  
  9. iRule name: Redirect_when_Busi_Down    
  10. #当业务功能Pool里没有活动成员时,则转向到信息发布Pool   
  11. when LB_FAILED {   
  12.   #如果当前Pool中没有active的成员时才进行转换   
  13.   if { [active_members BUSI_HTTP_POOL] == 0 } {   
  14.     set DEBUG 1   
  15.     set internal_host "145.24.216.106";       #网站内网地址    
  16.      set external_host "www.shineauto.cn";  #网站域名    
  17.      set msg_url "/common/xtwh.do";            #错误提示URL   
  18.     set internal_IP "145.24.216";             #认为是内网地址的关键字   
  19.      set cip [IP::client_addr];                #客户端IP    
  20.     set host $external_host;                  #要转向的服务器地址    
  21.   
  22.     #如果客户端IP包含 $internal_IP (内部IP),则使用内部IP进行转向;   
  23.     #否则认为是外部用户,使用域名进行转向   
  24.      if { $cip starts_with $internal_IP }{   
  25.       set host $internal_host   
  26.     } else {   
  27.       set host $external_host   
  28.     }   
  29.     if { $DEBUG } {   
  30.       log local0. "URL:  http://$host/$msg_url"   
  31.     }   
  32.     HTTP::fallback "http://$host/$msg_url"   
  33.   } else {   
  34.     #如果当前Pool中还有Active的member,则重新选择   
  35.     LB::reselect   
  36.   }   
  37. }   
  38. #这是测试rule   
  39. when HTTP_REQUEST {   
  40.   set DEBUG 1   
  41.   if { $DEBUG } {   
  42.     set internal_IP "145.24.216";             #认为是内网地址的关键字   
  43.     set cip [IP::client_addr];                #客户端IP    
  44.     if { $cip starts_with $internal_IP } {   
  45.       log local0. "From internal..."   
  46.     } else {   
  47.       log local0. "From external..."   
  48.     }   
  49.   }   
  50. }   
  51.   
  52. ##====================================   
  53. iRule name: Insert_ClientIP_to_header   
  54. #在往服务器上提交的Http请求头中增加客户端实际IP地址,   
  55. #在应用中可以这样取客户端IP(java代码):   
  56. #String clientIP = request.getHeader("Client-IP");   
  57. when HTTP_REQUEST {   
  58.   HTTP::header insert Client-IP [IP::client_addr];   
  59. }   
  60. #when HTTP_RESPONSE {   
  61. #  #HTTP::header insert Server-IP [IP::server_addr]   
  62. #  clientside { HTTP::header replace Host [IP::server_addr] }   
  63. #}   
  64.   
  65. ##====================================   
  66. iRule name: Select_Pool_By_Query_String   
  67. #根据URI中的关键字选择相应的POOL   
  68. when HTTP_REQUEST {   
  69.   #报表报送功能转向到报表专用POOL   
  70.   if { [HTTP::uri] starts_with "/bbbs" } {   
  71.     pool REPORT_HTTP_POOL   
  72.   }   
  73.   #其他要特殊处理的情况   
  74.   #elsif {} {}   
  75. }   
  76.   
  77. ##======================================   
  78. iRule name: Replace_Host_String_For_External    
  79. #对于外部访问的请求,把页面中本地地址替换成域名   
  80. when HTTP_RESPONSE_DATA  {   
  81.   set find "145.24.216.106"   
  82.   set replace "www.shineauto.cn"   
  83.   set payload [HTTP::payload]   
  84.   set cip "[IP::client_addr]"   
  85.   #if { not ( [IP::addr [IP::remote_addr] equals 145.24.0.0 netmask 255.255.248.0] ) } {   
  86.   #  if {[regsub -all $find $payload $replace new_response] > 0} {   
  87.   #    HTTP::payload replace 0 [HTTP::payload len] $new_response    
  88.   #  }   
  89.   #}   
  90.   
  91.   #下面是测试时内部地址时使用的   
  92.   #if { [ $cip starts_with 145.24.32] } {   
  93.     if {[regsub -all $find $payload $replace new_response] > 0} {   
  94.       HTTP::payload replace 0 [HTTP::payload len] $new_response    
  95.     }   
  96.   #}   
  97. }   
  98.   
  99. ##========================================   
  100. iRule name: Check_Client_IP_Select_POOL    
  101. #根据客户端IP选择不同的Pool   
  102. when CLIENT_ACCEPTED {   
  103.   if { [IP::addr [IP::remote_addr] equals 145.24.32.0/255.255.248.0] } {   
  104.     pool BUSI_HTTP_POOL   
  105.   } else {   
  106.     pool CMS_HTTP_POOL   
  107.   }   
  108. }   
  109.   
  110. ##========================================   
  111. ##替换Server返回页面中的所有匹配内容, 好像别的产品都没法做到吧   
  112. when HTTP_RESPONSE_DATA {   
  113.   set find "145.24.216.212"   
  114.   set replace "==It's bad(服务器信息)==145.24.216.212"   
  115.   set payload [HTTP::payload]   
  116.   if {[regsub -all $find $payload $replace new_response] > 0} {   
  117.     HTTP::payload replace 0 [HTTP::payload len] $new_response    
  118.   }   
  119. }  
F5 iRule示例综合展示 else { 阅读详情

相关推荐

F5 LTM 知识点和实验 12-使用规则和本地流量策略定制应用程序交付

Tool Command Language(Tcl)可以在http://tmml.sourceforge.net/doc/tcl/index.html上找到Tcl文档。根据客户端的IP地址选择负载均衡池在HTTP请求传递到web服务器之前,插入一个X-Forwarded-For报头当后端服务器返回HTTP 404状态时,发送自定义响应页面使用变量将仅在客户端上下文中可用的值传递给服务器端事件12、在浏览器中请求http://10.10.10.110/ga.html,并查看回显。

cnxhsy的博客 543

F5 Irule学习记1

[背景]以前为一个项目学习过一段时间的Irule,最近又因其他需求,需要将其拾其,但突然发现,以前学的没有做整理,有点遗忘,这次想将学习的过程记录下来.什么是Irule,我想大家google下,肯定会比我说的还详细.对与它能干什么,我想说的是它什么都能做,当然是在进入到流出F5这段时间里.所以,我们可以在数据流进入后,修改相应的数据包,重构请求包,或者在后端服务器相应后,做出相应内容的重写,都是可...

weixin_34306593的博客 473

F5 IRULE 介绍

F5 IRULE

F5和nginx配合转发前端请求

第一步:F5上配置irules匹配规则(在Definition中填写),内容如下: when HTTP_REQUEST {switch -glob [HTTP::uri] {"/exinterface111/*"{pool ...

weixin_33759269的博客 2220

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 197

记F5添加应用负载写法

新建一个应用_pool    再建irules   irule写法 when HTTP_RESPONSE {if {[HTTP::is_redirect]}{         HTTP::header replace Location [string map {:port/ /} [HTTP::header value Location]]HTTP::header replace Lo...

ronon77的专栏 436

软件测试 | 手把手教你如何使用 Charles 抓包工具(电脑+手机端)

软件测试 | 手把手教你如何使用 Charles 抓包工具(电脑+手机端)一、Charles简介二、Charles下载与安装三、Charles配置(1)Charles-PC端的配置如下:(2)过滤网络请求:(3)Charles抓取HTTPS请求包前置条件:(4)Charles抓取HTTPS双向认证包:关注我,免费领取学习资料 嘿。大家好,我是4U: 做过 APP 测试的同学都会接触抓包工具,通过抓包工具可以获取到客户端与服务端接口的交互数据,在实际测试APP的过程中,我们往往会发现服务端返回 的参数字段错

leboxy的博客 4154

强力推荐:redirect.rules - 动态重定向规则工具

强力推荐:redirect.rules - 动态重定向规则工具 项目介绍 在网络安全与网站管理的前线,redirect.rules 站立为一个强大的工具,专门用于动态生成重定向规则文件。这个开源项目源于对既有解决方案的重构和扩展,旨在保护沙盒环境免受来自特定网络源的潜在威胁。通过Python编写,它融合了先进的数据处理逻辑,确保您的网站流量安全无虞,顺利导向指定目的地。 项目技术分析 基于seph...

gitblog_00067的博客 564

电力电子新手必看:COT控制模式的工作原理与典型应用场景解析

本文深入解析了COT控制模式的工作原理及其在电力电子领域的典型应用。COT控制(恒定导通时间控制)通过固定导通时间机制,解决了传统滞环控制的问题,特别适用于需要快速瞬态响应和高效率的应用场景,如CPU/GPU供电和便携设备电源管理。文章详细介绍了COT控制的核心流程、技术特点及设计实践中的关键考量,帮助电力电子新手快速掌握这一技术。

weixin_30745553的博客 522

模型预测控制(MPC)解析(二):单输入单输出系统

在上一篇中,为了便于说明,预测控制系统采用单输入单输出系统为例进行设计。由于系统模型使用的是状态空间方程,于是可以很容易的将这种设计方法可以扩展到多输入、多输出系统。

行者无疆的博客 8223

EFK 监控 F5 BigIP 流量测试

EFK 监控 F5 BigIP 流量测试 EFK 测试环境搭建 F5 BigIP 测试环境搭建 数据源测试脚本 这里使用 Python 发送多个异步 http get requests。 [root@asm-replay network-tester]# cat http-test.py import eventlet eventlet.monkey_patch() import request...

Pzhang的博客 1202

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别的关系。本文改进是基于ResNet18、ResNet34、ResNet50、ResNet101,文章中均以提供,本专栏的改进内容全网独一份深度改进RT-DETR非那种无效Neck部分改进,

Snu77的博客 3170

bigip添加DNS解析日志irule的步骤(不明白原理)

bigip添加DNS解析日志irule的步骤 1.新建一个pool 在Local Traffic中新建一个pool,设置检测方式,设置Members,我理解这里是发送日志服务器的地址及端口。 2.新建一个iRules when DNS_REQUEST { set clientip [IP::client_addr] set clientport [UDP::client_port] set listenerip [IP::local_addr] set requestid

shen12138的博客 946

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 292

如何为 Claude Code 配置代理与网络环境

那么大概率不是软件问题,而是。因为 Claude Code 是运行在终端里的,不是浏览器。

sg_knight的专栏 3480

F5 BIGip 负载均衡 IP算法解密工具

BIGip是对负载均衡的实现,主要通过Virtual Server、iRules、Pool、Node、Monitor和Persistent(会话保持)实现。BIGip在实现会话保持机制时会在用户首次发起请求时,会为用户设置一个cookie,即服务端会添加set-cookie响应头头(比如:Set-Cookie: BIGipServerFinanceAndAdminWebfo.unc.edu=110536896.20480.0000 )。后续的请求会判断并使用这个cookie值,服务端解码该cookie并使用

jast 2213

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

话说 F5-BIGIP

随着3G和宽带接入的高速发展,移动网络带宽都有很快的增长。如此庞大的用户需求强烈刺激各类信息业务的发展,其中手机终端类型迅速增长,基于移动网络的增值业务种类繁多。对于移动运营商面临两个关键的挑战,首先,无线网络正面临核心网架构的调整,使其满足日益增长的签约用户和爆发式的新业务的出现;其次,移动网络运营商不得不面对日益丰富的新业务带来的商机,提供具有个性化的服务来更好的服务于客...

weixin_34232744的博客 214

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

F5 BIG-IP LTM基础资料

F5 BIG-IP LTM相关知识学习

weixin_43445237的博客 5753

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

F5学习笔记

1,首先管理地址 https://192.168.1.245 用户名和密码都为admin命令行用户名/密码: root/default 通过液晶面板配置管理口: 1. 在液晶面板上, 按 X 键 2. 使用上下按钮,找到System 选项并按 √ 键 3. 使用上下按钮,找到Management选项并按 √ 键 4. 配置Mgmt IP, Mgmt 掩码,...

weixin_30556161的博客 2233

F5 BIG-IP

    http://wenku.baidu.com/view/cc6af9315a8102d276a22f0b.html http://wenku.baidu.com/view/e09f9dabd1f34693daef3e77.html   安装调试 配置手册       BIG-IP V9.4.5   BIG-IP 9.4.5 Build 1049.10 Final ...

soyo的专栏 1435

F5 iRule学习之2全局数组变量

变量的定义都很简单,set var "F5",全局变量的定义也是,set ::var "F5",那么全局数组变量呢?如何定义?如何访问呢?首先我们看下,全局数组我们可以理解为class,也就是Data Group,在这里有二种文件存放位置,和三种类型(字符串,地址,整型).一种是内置的存放在bigip.conf文件中,另一种扩展文件是存放在文件系统中,如/var/class/...

weixin_34310127的博客 116

F5 Load Balance问答集

负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。 1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子: LVS,F5

每天积累一点,一年后你会发现,自己变化很大 2773
上一篇: 我终于知道那些大厂商是如何赚钱的了。。。
下一篇: 贴几个F5公司2005 iRule大赛的获奖iRule
benwdm
博客等级 码龄26年 87粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值