【隧道篇 / IPsec】(6.0) ❀ 01. 点对多星状拓扑IPsec动态BGP路由 ❀ FortiGate 防火墙

2024-01-31 08:10

本文主要是介绍【隧道篇 / IPsec】(6.0) ❀ 01. 点对多星状拓扑IPsec动态BGP路由 ❀ FortiGate 防火墙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  【简介】我们已经了解并熟悉点对多星状IPsec VPN的好处了,它可以非常方便的让各个分支访问中心。但是,分支与分支之间的访问仍需要通过中心转发。另外,当允许访问的中心IP有变动的时候,各个分支都要进行手动修改,有没有什么方法可以解决这些问题呢?


ADVPN

  传统的点对多星状方式中,分支只能和中心建立永久隧道,分支之间的流量需要通过中心来转发,这种方式减轻了分支的负担(只要和中心建立一条连接),但对中心提出了更高的性能要求,同时利于中心对分支间流量的监控。

  ADVPN (Auto Discovery VPN) 是一种基于IETF RFC草案的IPsec技术 。简单地说,ADVPN允许在传统的点对多星状VPN网络中的分支之间相互建立动态的、按需连接的VPN隧道,分支间的流量可以直接转发,从而达到整网完全状态连接。相比而言,中心的负担减轻,同时减少分支间流量的延迟,更有利于VOIP等实时流量的传输,在实际使用的过程中可按照自身需求进行选择。

  ADVPN的主要优势是,它为标准的点对多星状拓扑提供了完全网格化的功能,大大减少了分支到分支的低延迟可达性所需的准备工作,并解决了与非常大的完全网格VPN网络相关的可伸缩性问题。

  ADVPN要求使用动态路由才能正常工作,FortiOS 6.0同时支持BGP和RIP。BGP(特别是iBGP)非常适合ADVPN,因为它的路由反射器机制驻留在VPN中心设备上,并将路由信息从每个分支对等点镜像到彼此。此外,当拓扑中引入新的分支时,动态组对等点会导致几乎零接触中心供应。

 中心配置 - VPN

  首先我们对中心FortiGate进行配置,因为有很多功能需要在CLI中进行配置,所以最好使用命令行接口进行BGP和ADVPN等配置。考虑到每个人的能力程度不同,这里尽量简单一些,先GUI配置,再CLI补充配置。

  ① 首先登录中心FortiGate,这里以位于深圳的200D为例。选择菜单【虚拟专网】-【IPsec向导】,输入自定义的VPN名称,模板类型选择【自定义】,点击【下一个】。

   ② 这里我们将IPsec VPN的阶段一和阶段二都在一个介面上配置。

  (1) 远程网关与接口:由于不知道众多分支的外网IP,中心FortiGate设置为接收方,所以远程网关设置为“拨号用户”,等待分支的拨入。接口选择连接的宽带接口。

   (2) 预共享密钥:双方可以使用预共享密钥的方式对身份进行确认,预共享密钥为自定义,所有接入的FortiGate要求填写一致;

   (3) 模式:分为主模式和野蛮模式,主模式一般采用IP地址方式标识对端设备;而野蛮模式可以采用IP地址方式或者域名方式标识对端设备。

   (4) 第一阶段加密:加密方案,由加密算法、认证算法、DH组三部分组成;所有接入的FortiGate都要设置相同的加密方式。

        (5) 第二阶段加密:内容和功能与第一阶段加密相同,可以设置成与第一阶段不同的加密方式。

   ③ 用config vpn ipsec phase1-interface命令配置和查看IPsec VPN第一阶段的配置。

   ④ set add-route disable 命令禁止控制添加路由到对等目的地选择器。set auto-discovery-sender enable 命令允许向分支发送和接收快捷消息 (中心负责让分支知道它们应该建立这些隧道)。set net-device enable 命令启用为每个拨号实例创建一个内核设备,允许所有流量对通过给定phase1生成的所有实例使用单一接口。

   ⑤ 用config vpn ipsec phase2-interface命令配置和查看IPsec VPN第二阶段的配置。这里不用修改。

  【提示】目前5.6版的ADVPN不支持主动模式,但是从版本6.0.1开始已经实现了支持。

中心配置 - 隧道接口

  ADVPN要求在连接到拓扑的每个设备上配置隧道IP。这些IP地址对于每个对等点必须是唯一的。

   ① 选择菜单【网络】-【接口】。点击VPN引用宽带接口最左边的加号,可以看到VPN虚拟接口,选择刚才建立的VPN虚拟接口,点击【编辑】按钮。

  ② 给隧道输入一个IP地址,网段不能和防火墙其它接口相同。中心的一个特殊之处在于它需要定义一个伪远程IP地址(在这个示例中是10.10.10.254)。此地址在拓扑中应该是未使用的,它不会被实际视为中心配置的一部分。

   ③ 用config system interface 命令可以查看隧道接口的情况。

中心配置 - BGP

   接下来需要配置iBGP和路由反射。

   ① 选择菜单【网络】-【BGP】,本地AS输入私有号65000,Router ID为隧道IP地址,当需要宣传我们的局域网网络时,在网络下输入本地内网IP地址,可以是多个IP地址。

   ② 用config router bgp命令配置和查看动态路由BGP。

   ③ config neighbor-grout 命令配置一个动态客户端组来减少供应需求。config neigghbor-range 命令配置动态客户端组的IP范围。set next-hop-self enable命令表示将广告发送到IBGP对等点的NEXT_HOP信息中FortiGate设备的IP地址。set route-reflector-client enable命令启用路由反射器客户端。

   BGP中的路由反射器(RR)集中路由更新,因此其他路由器只需与RR通信就可以获得所有更新。这导致路由表更小,路由器之间的连接更少,对网络拓扑变化的响应更快,管理带宽更少。

    ④ BGP完整的配置是这样的。

 中心配置 - 策略

   最后一道工序,配置允许访问的策略。

   ① 选择菜单【策略&对象】-【IPv4策略】,点击【新建】,建立一条由隧道访问内网的策略。

   ② 再建立一条由内网访问隧道的策略。

    ③ 由于中心会有许多分支接入,因此在中心还要建一条允许隧道内部能够互相访问的策略。

   ④ 可以用命令查看刚建好的策略。

  【提示】中心不需要手动建立路由,回程路由会根据分支拨入情况自动生成。

  分支配置

   分支配置与中心配置方法大同小异,这里就不再贴出图形界面的配置方法,只给出命令。

   ① IPsec VPN第一阶段配置,这里的远程网关指定的IP地址113.116.10.246,就是中心的外网IP地址。

   ② IPsec VPN第二阶段配置,set auto-negotiate enable 启用自动协商,VPN会一直保持连接状态。

   ③ 给隧道设置IP地址,远程IP地址就是中心的隧道IP地址。

   ④ 配置BGP,本地ID为10.10.10.2,邻居ID为10.10.10.1,指向中心。set next-hop-self enable命令表示将广告发送到IBGP对等点的NEXT_HOP信息中FortiGate设备的IP地址,set soft-reconfiguration enable命令启用允许IPv4入站软配置。

   ⑤ 和中心不同,分支必须指定静态路由。所有对10.10.10.0的访问都会走隧道。

   ⑥ 最后是建立一进一出的两条策略。

  验证

   首先VPN必须被连通。

   ① 在分支选择【监视器】-【IPsec监视器】,如果看到隧道左边显示的是绿色图标,表示隧道连通,如果没有连接,可以选择隧道,点击【启用】。

   ② 在分支选择【监视器】-【路由监视器】,可以看到得到了BGP路由,该路由的网关地址中心隧道IP地址。

   ③ 在分支命令状态,定义源IP地址为内网接口地址,Ping中心防火墙内网接口地址,可以Ping通,说明IPsec VPN工作正常。

   ④ 在中心防火墙的BGP网络里再加入一个网段。

   ⑤ 在分支防火墙里,用get router info routing-table bgp命令,可以查看获取的BGP动态路由。并且可以访问。

   ⑥ 在分支防火墙内网的电脑里tracert路由,可以看到是经过中心防火墙隧道IP到达的。 

   ⑦ 在分支防火墙的BGP里增一个网络网段。

   ⑧ 在中心防火墙的路由监视里很快就能看到自动获得的BGP路由,是不是很有意思。

   ⑨ 由于目前只有一台分支防火墙与中心防火墙VPN连接,所以在分支防火墙用diagnose vpn tunnel list只看到一条隧道。如果有多个分支连接,就会看到有多条隧道生成。


这篇关于【隧道篇 / IPsec】(6.0) ❀ 01. 点对多星状拓扑IPsec动态BGP路由 ❀ FortiGate 防火墙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配