【控制篇 / 分流】(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个地址对象。地址组可以加入另一个地址组。


最近更新

  1. TCP协议是安全的吗?

    2024-01-17 17:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 17:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 17:42:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 17:42:03       20 阅读

热门阅读

  1. Python八股文总结

    2024-01-17 17:42:03       32 阅读
  2. 明明的随机数【C语言】

    2024-01-17 17:42:03       34 阅读
  3. 多线程应用场景

    2024-01-17 17:42:03       33 阅读
  4. win11使用笔记

    2024-01-17 17:42:03       27 阅读
  5. 四、基础篇 vue条件渲染

    2024-01-17 17:42:03       33 阅读
  6. xadmin基于Django的后台管理系统安装与使用

    2024-01-17 17:42:03       40 阅读
  7. Day 24 回溯算法 1

    2024-01-17 17:42:03       38 阅读
  8. fetch、axios 和 XMLHttpRequest的区别

    2024-01-17 17:42:03       33 阅读
  9. AI协助编程在Rust学习中的个人体验

    2024-01-17 17:42:03       41 阅读
  10. 微信小程序中的基础标签

    2024-01-17 17:42:03       27 阅读