草庐IT

华为防火墙ipsec vp*实例配置

竹子的神秘微笑 2023-12-02 原文

拓扑介绍

FW1模仿某集团公司总部公网出口,FW3模仿其分公司公网出口

通过在inter上搭建IPSec实现双方内网互通

配置思路

1、预配底层,VLAN10与VLAN20网关起在FW1与FW2上;FW1、AR2、FW3模拟Inter公网环境实现FW1与FW3出接口互通,此处配置省略。

2、IPSEC配置

a、ipsec proposal(ipsec安全提案),指定封装模式,使用的数据加密协议,协议的认证算法与加密算法。

b、ike proposal(ike提案),如果是通过IKE自动协商秘钥则需要配置IKE提案,用于指定秘钥交互的认证方式与算法。

c、ike peer ,绑定ike proposal,指定ike交互模式与对端用于接收IPSEC报文地址,指定共享秘钥,还可以设定dpd消息(类似Keepalive报文)。

d、创建ACL抓取IPSEC感兴趣流量。

e、创建ipsec policy,绑定ipsec proposal、Ike peer、ACL感兴趣流、配置本地站点地址。

f、接口下启用ipsec policy。

配置注意事项

1、双方站点使用的加密协议与算法要保持一致,否则协商不通过。

2、ACL抓取的兴趣流必须源目地址都精确,若只有源没有目的会导致隧道协商不通过(可以配置any)。

3、当NAT和IPSEC同时配置在一台设备上,会先执行NAT再执行IPSEC,所以需要在NAT的ACL中deny掉IPSEC的感兴趣数据流。

4、不同厂商间设备缺省加密算法以及认证模式不同,可以先使用命令查看缺省值比对后再配置。

配置开始

a、ipsec proposal(ipsec安全提案)

FW1上:

ipsec proposal 1  

 transform esp      //封装协议为ESP协议(ESP既支持认证也可进行数据加密相对于SA更安全)

 encapsulation-mode tunnel         //数据封装模式为隧道模式

 esp authentication-algorithm sha2-256    //ESP的认证算法

 esp encryption-algorithm aes-256    //ESP的加密算法

FW2上:

ipsec proposal 1  

 transform esp      //封装协议为ESP协议(ESP既支持认证也可进行数据加密相对于SA更安全)

 encapsulation-mode tunnel         //数据封装模式为隧道模式

 esp authentication-algorithm sha2-256    //ESP的认证算法

 esp encryption-algorithm aes-256    //ESP的加密算法

配置技巧:当我们配置ipsec proposal 时可以先查看缺省的模式,省略配置命令

命令:dis ipsec proposal

 b、ike proposal(ike提案)

FW1上:

ike proposal 1
 encryption-algorithm aes-256   //加密算法
 dh group14        //最大支持的秘钥宽度
 authentication-algorithm sha2-256   //认证算法
 authentication-method pre-share    //认证方式
 integrity-algorithm hmac-sha2-256   //完整性算法(选择配置)
 prf hmac-sha2-256   //prf算法(选择配置)

FW2配置相同

查看ike proposal

dis ike proposal 

c、ike peer

FW1:

ike peer 1
 undo version 2   //使用版本1,不使用版本2
 pre-shared-key huawei@123   //预共享秘钥
 ike-proposal 1      //绑定IKE提案
 dpd type periodic    //dpd消息为周期发送
 dpd idle-time 10    //检测包发送时间为10S,缺省为30
 remote-address 23.0.0.3  //对端IPSEC地址

 local-id-type ip  //本地ID类型指为IP

 exchange-mode main   //ike在1阶段交互模式为主模式

配置完成后可以通过命令进行比对 :dis ike peer 

FW3:

ike peer 1
 undo version 2   //使用版本1,不使用版本2
 pre-shared-key huawei@123   //预共享秘钥
 ike-proposal 1      //绑定IKE提案
 dpd type periodic    //dpd消息为周期发送
 dpd idle-time 10    //检测包发送时间为10S,缺省为30
 remote-address 12.0.0.1  //对端IPSEC地址

 local-id-type ip  //本地ID类型指为IP

 exchange-mode main   //ike在1阶段交互模式为主模式

d、创建ACL抓取IPSEC感兴趣流量。

FW1:

acl number 3000
 rule 0 permit ip source 10.0.10.0 0.0.0.255 destination 10.0.20.0 0.0.0.255

FW3:

acl number 3000
 rule 0 permit ip source 10.0.20.0 0.0.0.255 destination 10.0.10.0 0.0.0.255

e、创建ipsec policy,绑定ipsec proposal、Ike peer、ACL感兴趣流、配置本地站点地址。

FW1:

ipsec policy FW1 1 isakmp
 security acl 3000
 ike-peer 1
 proposal 1
 tunnel local 12.0.0.1   //设置隧道本地地址,(华为路由器是在ike-peer 视图下指定)

FW3:

ipsec policy FW3 1 isakmp
 security acl 3000
 ike-peer 1
 proposal 1
 tunnel local 23.0.0.3

d、接口下启用

FW1:

interface GigabitEthernet1/0/1
 ipsec policy FW1

FW3:

interface GigabitEthernet1/0/0
 ipsec policy FW3

此时IPSEC隧道参数已经配置完成,接下来配置防火墙策略与路由。

路由

FW1:

ip route-static 10.0.20.0 255.255.255.0 23.0.0.3

FW3:

ip route-static 10.0.10.0 255.255.255.0 12.0.0.1

防火墙策略

FW1上:(FW3配置类似)

区域配置:

firewall zone trust
 set priority 85
 add interface GigabitEthernet1/0/0

firewall zone untrust
 set priority 5
 add interface GigabitEthernet1/0/1

策略配置:

security-policy
 rule name local_untrust
  source-zone local
  destination-zone untrust
  action permit
 rule name untrust_local
  source-zone untrust
  destination-zone local
  action permit
 rule name trust_untrust
  source-zone trust
  destination-zone untrust
  action permit
 rule name untrust_trust
  source-zone untrust
  destination-zone trust
  action permit

策略解释:

local区域与UNtrust区域双向放通是为了ipsec隧道能正常建立收发IPSEC协商报文(如果有协议管控需要放开UDP、ESP协议)

Trust区域与UNtrust区域双向放通是为了两个区域间内外互访

此时我们可以查看防火墙上的会话表:

dis firewall session table   

会话表中UDP协议传输的为dpd保活报文

 

 使用PC1pingPC2:

查看FW会话表

此时看数据就非常明显了,如何放区域策略也一目了然

查看抓包数据

在FW1上的G1/0/1上抓包

每10S循环的dpd消息报文 

 

有关华为防火墙ipsec vp*实例配置的更多相关文章

  1. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  2. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  3. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  4. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  5. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  6. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  7. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

  8. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  9. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  10. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

随机推荐