【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙

本文主要是介绍【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  【简介】公司有两条宽带用来上网,一条电信,一条联通,访问常用的某些网站速度时快时慢。领导要求,根据上网流量的目标运营商IP归属,将流量送到相应的运营商出口去,避免跨运营商上网。那么应该怎么做?


 地址对象&地址组

  解决方案是:将运营商所属IP创建地址对象和地址组,通过路由走相应的宽带口。

  ① 可以网上找到很多有关于运营商所属IP的网站,例如 https://ispip.clang.cn 。可以看到联通有650条数据,网站会以HTML和TXT等格式显示IP数据,这里我们点击HTML下的联通IP数据。

  ② 可以看到联通所有的IP地址段表,并且是每日更新,值得信赖。但是有一个问题时,如何将这么多地址变成防火墙上的地址对象?一条一条输入显然是不合适,这样就需要用到批量处理工具。

  ③ 批量处理工具推荐NimbleText,可以在官方 https://nimbletext.com 下载免费版本。仅支持Windows。

  ④ 下载界面提示输入名称和邮件,也可以点击【skip that, download anyway.】跳过。

  ⑤ NimbleText程序文件下载成功,只有883KB。

  ⑥ 双击打开NimbleText,选择菜单【Tools】-【Options】。

  ⑦ 默认【Output a new line after each row】选项被钩选,这里要将它取消钩选择。

  ⑧ 将从 https://ispip.clang.cn 网站获取的前10条联通数据复制粘贴到NimbleText的数据区。为什么只复制10条?因为我们需要用少量数据创建一个可以使用的模板,避免后期排错走弯路。

  ⑨ 在模板区输入上图中的命令,第一大段是配置防火墙地址对象,第二大段是配置防火墙地址组。$0是变量,用来引用数据区的数据。$ONCE的作用是只执行一次,$EACH的作用是循环执行,自至$0变量取不到数据。

  ⑩ 点击【Calculate】或钩选【auto】,可以在下方看到最终在防火墙上执行的命令行。第一大段生成配置防火墙地址对象命令,将在防火墙上生成10条地址对象。

  ⑪ 第二大段命令,将10条自动生成的地址对象,加入一个地址组。注意这里地址对象都是连接在一起的,中间空格隔开。如果每个地址对象都是独立的一行,后面执行时会报错。

  ⑫ 选择菜单【File】-【Save result as...】。

  ⑬ 保存类型选择【Text files (*.txt)】,输入文件名,点击【保存】。

  ⑭ 用记事本打开刚刚保存的文本文件,可以看到将在在防火墙上运行的脚本内容。编码为UTF-8。

  执行脚本

  用批量工具创建好命令脚本后,下一步就是在防火墙上执行脚本了。

  ① 登录防火墙,点击右上角管理员旁下拉图标,弹出菜单选择【配置】-【脚本】。 

  ② 点击【运行脚本】。

  ③ 选择由NimbleText生成并保存的文本文件,点击确认。

  ④ 脚本成功运行,在【策略&对象】-【地址】,可以看到自动创建的10条联通IP地址对象。

  ⑤ 选择【Address Group】,可以到新建的地址组Unicom_GRP,由10条地址对象组成。

  批量执行

  少量数据的脚本可以完整执行后,就可以通过模板将其它数据导入了。

  ① 如果我们将剩下的640条数据都粘贴到数据区会怎么样?

  ② 从生成的脚本文件中可以看到,将地址对象加入地址组的命令是一行,所以命令会很长。

  ③ 再次执行脚本,出现报错信息,提示成员数最大为600。

  ④ 选择菜单【策略&对象】-【地址】,可以看到剩于的640条地址对象都已经创建好了,由于加入地址组命令报错,所以640条地址对象的关系项都为0,可以批量选择全部640条地址地象,点击鼠标右键,弹出菜单选择删除。

  ⑤ 因为要将全部650条数据分批创建脚本,那么给数据加上序号,就显得非常重要了。选择并复制全部650条数据。

  ⑥ 打开Execl,新建工作簿,在A1格中点击鼠标右键,弹出菜单选择【选择性粘贴】。

  ⑦ 方式选择【文本】,点击【确定】。

  ⑧ 650条数据显示在Execl中,由于左右有序号,这样就方便我们的选择,前10条数据已经回入防火墙,这次选择11-590,共复制580条数据。我们前面知道最大数据量是600,但是为了避免出错,建议留出一部空间,选择580条数据。

  ⑨ 580条数据粘贴到NimbleText的数据区。

  ⑩ 生成580条数据的脚本。

  ⑪ 这次执行脚本成功了。得到结果是一次性将580条地址对象加入一个地址组。

  ⑫ 查看地址组,里面有580条地址对象。

  ⑬ 再次生成最后60条数据脚本,成功的在防火墙上执行了脚本,但是。。。。地址组也只剩下60条地址对象了。这是为什么?原来每次 set member 命令都是重新设置成员,而不是加入成员,而且每个组的成员不能超过600个,那么联通的650个地址对象怎么办?很显然无法放入一个地址组中。

  ⑮ 建议将前500条数据,加入一个地址组。500是整数,好记,另外给地址组预留一些空间。

  ⑯ 将后150条数据加入另外一个组。分别生成两个脚本文件。

  ⑰ 删除防火墙上前面创建的关于联通的所有地址组和地址对象,然后重新运行脚本。两个脚本都运行成功。

  ⑱ 在菜单【策略&对象】-【地址】下,可以看到有650条联通的地址对象。

  ⑲ 而在地址组窗口,也可以看到有两个关于联通的地址组,一个有500条地址对象,另一个有150条地址对象。

  ⑳ 为了方便操作,可以将两个联通地址组再统一加入到Unicom_GRP组中,这样只要引用一个地址组就可以了。

  路由分流

  当我们拥有地址对象和地址组后,就可以通过路由分流了。

  ① 可以创建静态路由,目标地址选择【地址命名】,下拉选择联通地址组。接口选择联通宽带。这样当访问的IP是联通地址时,会走Wan2联通宽带出去。

  ② 可以创建策略路由,例如内网接口所有IP访问联通IP地址时走Wan2联通宽带出去。

  【总结】 将运营商所属IP网段创建地址对象和地址组,通过路由匹配,访问不同运营商IP时走所属运营商宽带出去,可以加快访问速度。每个地址组最多只能加600个地址对象。地址组可以加入另一个地址组。


这篇关于【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616702

相关文章

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全