卢美美 发表于 2022-3-13 09:49
  
感谢楼主的精彩分享,有助工作!!!
梁家少爷 发表于 2022-3-13 10:16
  
感谢楼主的精彩分享,有助工作!
何茂源 发表于 2022-3-14 10:28
  
感谢分享,有助于工作,学习了!!!
飞翔的苹果 发表于 2022-3-15 07:37
  
感谢楼主的精彩分享,有助工作!!!
ring33290 发表于 2022-3-20 09:28
  
感谢楼主分享正好需要这样的资料
头像被屏蔽
新手031815 发表于 2022-3-28 21:21
  
提示: 作者被禁止或删除 内容自动屏蔽
杨胜双 发表于 2023-1-30 09:35
  

感谢楼主的精彩分享,有助工作!!!
【记录】用AD替换F5
  

wxy 88656人觉得有帮助

{{ttag.title}}
本帖最后由 wxy 于 2022-2-11 09:33 编辑

实施记录
前言
本次替换涉及4台F5,都是以主备部署。通过4台AD进行替换。其中内网F5给内网提供虚拟服务,外网F5为外网提供虚拟服务以及负载均衡功能。两边没有任何关联。其中外网涉及到300+的dns映射规则以及350+虚拟服务。iRules有30+条件判断。
一、 F5配置的转换
获取F5相关配置,通过tftp进入F5后台。下载Config目录下的bigip.conf(从其中获取虚拟服务、节点池、iRules等相关信息)文件以及bigip_gtm.conf(从其中获取dns的相关信息)
利用转换工具的话,通过页面下载ucs文件按照文档进行转换即可。这边会转换虚拟服务和相关地址池。以及一些自定义的监视器。如果F5虚拟服务中使用的是默认监视器,那没办法进行转换。其中会出现转换失败的虚拟服务,因为该虚拟服务没有默认的节点池(我这边客户遇到的情况),此时需要查看该虚拟服务是否关联iRules进行节点池调度。这边节点池基本都是可以导入成功的。
二、 对于F5配置的数据梳理以及相关工具的使用
使用到的工具:
       Notepad++,Excel
通过notepad++,打开bigip.conf的配置文件。file:///C:/Users/**I~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png
找到前缀为Itm virtual的标签的地方,对Itm virtual /Common 进行搜索标记,然后复制标记行。粘贴到Excel,通过Excel将数据进行分列处理。此时,可以拿到F5设备中所有的虚拟服务。
file:///C:/Users/**I~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
前缀为Itm rule标签的地方为iRules;前缀为Itm pool为地址池;Itm monitor为监视器;ltm persistence为会话保持。
可以用相同的方式获取到该信息。标签内的内容,通过共同点也可以将内容取出。
对于条数较多的简单的iRules可以通过iPro进行替换(因为一个虚拟服务会调度到不同20多个节点池,个人比较懒就直接用ipro进行替换了)
       根据host指调度到不同的节点.lua
vhost2pool= {
       ["yezhang.nju.edu.cn"] ="219.219.122.23_80" ,
       ["qoqi.nju.edu.cn"] =  "219.219.122.23_80"  ,
       ["sgforum.nju.edu.cn"] =  "219.219.122.23_80"      
}
-- 将host值与节点池的对应关系以键值对的形式放入到数组当中。
-- 域名与单个服务器IP的对应表, 格式为["HOST域名"] = {"服务器IP","服务器端口"},
vhost2server = {
       ["yezhang.nju.edu.cn"] ={"219.219.122.23","80"},
}这边在该项目中并没有用到所以我就直接删除掉的。


-- 调试日志开关和 SYSLOG,记录相关日志。
localdebug = true
localfunction log(msg)
       if debug then
              LOG.log(LOG.DEBUG, msg)
       end
       syslog.syslog("LOG_INFO",msg)
end
-- 发生request事件触发事件
eventHTTP_REQUEST {
    local rqst_uri = HTTP.uri() -- 获取请求的uri
    local rqst_hdr =HTTP.header("Host")  --获取请求头中的host值

       -- lua中数组的下标是从1开始的;这边进行非法判断
    if table.getn(rqst_hdr) ~= 1 or rqst_uri ==nil then
           HTTP.close()
              return
    end
    --获取头部的值
       rqst_hdr = rqst_hdr[1]

    local pool_name = vhost2pool[rqst_hdr]
    --local server = vhost2server[rqst_hdr] --该项目没有使用进行了删除操作。
--由于该项目由跳转,这边先进行了一次跳转的判断,host匹配到后进行跳转。
if rqst_hdr == “” then
       HTTP.redirect(url)
end
    if pool_name then
           log("[" .. HTTP.method() .. "] [" ..rqst_hdr.. HTTP.uri()  .. "] [" .. pool_name  .. "]" )
           pool(pool_name)

    --[elseif server then
           log("[" .. HTTP.method() .. "] [" .. rqst_hdr .. HTTP.uri()  .. "] [" .. server[1] ..":" .. tostring(server[2])  .."]" )
           node(server[1],server[2])该项目中没有使用进行了删除操作
      --]   
    else
           log("[" .. HTTP.method() .. "] [" .. rqst_hdr ..HTTP.uri()  .. "] [defaultpool]" )
              --可选参数,这边我直接在这里调用了默认的节点池或者直接关闭连接
              pool()
              HTTP.close()
    end
}

这边虚拟服务相关的大体替换就已经完成了。对于网络相关的信息,直接手动替换即可。
三、智能DNS配置
对于F5用作域名负载配置,需要手动将信息梳理出来,根据后台脚本进行配置(因为客户处300多条dns映射,表示个人很懒,手动配置需要很久,另辟蹊径,通过查看虚拟服务转换的文档发现,是可以通过后台的命令去配置的)。
四、梳理截图以及脚本截图
通过excel进行梳理
根据节点池调度的iPro脚本(从400获取的模板,自己改动的)
根据命令行手册编写的dns映射的脚本
将该脚本传入后台后
chmod +x 文件名 ---给文件增加可执行权限
sfcli -f 文件名   ---运行该文件
或者使用AD的命令行模式,将脚本复制获取即可


参考文档:
《Sangfor iPro.chm》--- 可以从AD控制台下载
《深信服AD命令行手册v7.0.8R1.pdf》---可以找400获取

打赏鼓励作者,期待更多好文!

打赏
37人已打赏

发表新帖
热门标签
全部标签>
西北区每日一问
安全效果
高手请过招
【 社区to talk】
社区新周刊
产品连连看
每日一问
干货满满
技术咨询
标准化排查
GIF动图学习
纪元平台
新版本体验
社区帮助指南
信服课堂视频
功能体验
技术盲盒
安装部署配置
解决方案
SDP百科
自助服务平台操作指引
玩转零信任
S豆商城资讯
秒懂零信任
每周精选
畅聊IT
答题自测
专家问答
技术笔记
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
2023技术争霸赛专题
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
技术晨报
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版达人

新手61940...

本周建议达人

zhao_HN

本周分享达人

ZSFKF

本周提问达人