草庐IT

华为防火墙的OSPF配置实验

流影@JZ 2023-05-21 原文

华为防火墙的OSPF配置实验

文章目录

实验需求

1.SW1、SW2、OUT和FW之间通过OSPF实现路由互通

2.OUT路由器上配置easy ip,使SW1和SW2的loopbach接口可以访问外网

注:本实验是基于华为USG5500设备

实验拓扑图如下

步骤一:配置地址

按照图示配置好ip地址(两台交换机是用vlanif10配置的地址)

配置过程略

步骤二:配置OSPF

SW1:

[SW1-ospf-1]ospf 1
[SW1-ospf-1] area 0.0.0.0
[SW1-ospf-1-area-0.0.0.0]  network 192.168.1.0 0.0.0.255
[SW1-ospf-1-area-0.0.0.0]  network 1.1.1.1 0.0.0.0

SW2:

[SW2]ospf 1
[SW2-ospf-1] area 0.0.0.0
[SW2-ospf-1-area-0.0.0.0]  network 192.168.2.0 0.0.0.255
[SW2-ospf-1-area-0.0.0.0]  network 2.2.2.2 0.0.0.0
[SW2-ospf-1-area-0.0.0.0]

FW:

[FW]ospf 1 
[FW-ospf-1] area 0.0.0.0 
[FW-ospf-1-area-0.0.0.0]  network 192.168.1.0 0.0.0.255 
[FW-ospf-1-area-0.0.0.0]  network 192.168.2.0 0.0.0.255 
[FW-ospf-1-area-0.0.0.0]  network 192.168.3.0 0.0.0.255 

OUT:

#出口路由器除了配置OSPF外还要配置默认路由访问外网
[OUT]ip route-static 0.0.0.0 0 100.1.1.5
#ospf配置
[OUT]ospf 1
[OUT-ospf-1]default-route-advertise #引入默认路由
[OUT-ospf-1] area 0.0.0.0
[OUT-ospf-1-area-0.0.0.0]  network 192.168.3.0 0.0.0.255
[OUT-ospf-1-area-0.0.0.0]  network 4.4.4.4 0.0.0.0
[OUT-ospf-1-area-0.0.0.0]

配置好OSPF路由后在FW上查看ospf邻居状态,发现所有邻居状态都为Extart,说明了DD报文应该是被防火墙丢弃了,OSPF不能正常的收发LSA更新报文,导致邻居状态卡在Extart状态。

步骤三:配置防火墙策略

[FW]firewall zone trust #进入安全区域trust
[FW-zone-trust]add interface GigabitEthernet0/0/3 #将接口加入到安全区域
[FW-zone-trust]add interface GigabitEthernet0/0/2
[FW-zone-trust]add interface GigabitEthernet0/0/1

此条命令一配置,SW1、SW2和OUT就处于同一个安全区域(Trust),在同一个区域的设备之间进行通信默认是不受防火墙影响的,所以彼此之间能进行正常通信,正常交换DD报文。邻居状态达到Full。

步骤四:配置NAT

[OUT]acl number 2000  #配置acl抓取私网数据包
[OUT-acl-basic-2000] rule 5 permit source 1.1.1.0 0.0.0.255 
[OUT-acl-basic-2000] rule 10 permit source 2.2.2.2 0 

[OUT-GigabitEthernet0/0/1]nat outboud 2000 #应用acl到OUT的出接口批匹配数据包进行地址转换

测试一下是否能正常的学习路由从而访问内外网,在SW1上测试是否能ping通内外网。

带源地址1.1.1.1 能ping通内部SW2的环回地址2.2.2.2。

1)问题描述

带源地址1.1.1.1 ping外网,如下图所示ping失败。为什么会失败?回看一下配置,ACL和接口地址以及下发的接口都是正确的,一时竟摸不着头脑。

PS:这里卡了很久,想过n种可能但都一一排除了

2)问题分析

万般无奈下我想起了ensp的自带神器wireshark。先用wireshark抓个包,出口路由器到外网之间的的包,该数据包理论上只可能有两个地址。

  • 原始地址1.1.1.1
  • 路由器出接口的公网地址100.1.1.4

很显然,从上图抓包情况来看是192.168.3.3,这是什么地址呢?细心的可能发现了,这是防火墙的出接口地址。

因此推测ping包在经过防火墙出去时源地址被修改成了防火墙的出接口ip。

再往上回溯,即OUT的入接口,发现源地址也被修改了,进一步验证猜想。

继续回溯到始发网段,在防火墙和SW1之间的入接口抓包,发现防火墙接收到ping包时的源地址还是原始地址1.1.1.1。

因此咱可以破案了,数据包在经过了防火墙的转发之后,防火墙把数据包的源地址修改成了防火墙的出接口ip。出现这种情况应该是防火墙的安全策略,在出接口匹配所有源ip,将其做了一个类似easy ip的地址转换,将地址转换成路由器的出接口地址。

3)解决办法

由上面的地址溯源追踪,我们找到了问题出现的原因。因此直接对症下药,修改ACL规则匹配的源。

在OUT路由器上重新配置ACL下发到出接口

[OUT]acl 2000
[OUT-acl-basic-2000]rule permit source 192.168.3.0 0.0.0.255
[OUT-GigabitEthernet0/0/1]nat outbound 2000

再次在SW1上使用源地址1.1.1.1 ping外网,如下图网络连通。

至此我们通过OSPF的配置将网络都连通了

有关华为防火墙的OSPF配置实验的更多相关文章

  1. 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

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

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

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

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

  4. 华为常用命令 - 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

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

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

  6. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  7. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  8. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  9. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  10. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

随机推荐