【隧道篇 / 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#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾