草庐IT

华为DHCP解析

诗与~彼方 2023-07-12 原文

DHCP
  作用:网络参数配置过程的自动化
  优点:
    1、效率高
    2、灵活性强
    3、易于管理

DHCP基于UDP协议,端口号为67/68,工作模式C/S;

一、工作过程:
   1、发现阶段

        以0.0.0.0 为 SIP , 255.255.255.255 为DIP 发出discover报文;
        如果客户端一直获取不到IP地址,WIN系统的PC会自动生成169.254.X.X的IP地址。

   2、提供阶段
     分配地址顺序:
        1、静态绑定
        2、之前使用过的
        3、在可用的地址池中从大到小依次分配
        4、从已经过期、之前发生冲突的寻找

   3、请求阶段:在收到的所有Offer中选择接受第一个到达的Offer,并向相应的DHCP Server发送DHCP Request消息,表示自己愿意接受该Offer。

       报文中会携带服务器的IP地址,如果DHCP服务器收到报文中服务器的IP地址与自己的IP地址不同,则会把之前发送给客户端的租约删除。

   4、确认阶段


  收到DHCP ACK报文之后,会对获取的IP地址发送免费ARP进行检测,如果地址没有冲突则使用,如果地址出现冲突,则不使用该地址重新进行获取,并且会发送DHCP Decline报文给服务器,用于通知服务器该地址有冲突。


二、续租过程:
     华为设备默认IP地址的租约为1天,当地址使用时间到达一半时会进行续租;
     通过DHCP Request报文进行续租(单播);
     当地址使用时间到达7/8时会以广播的方式发送DHCP Request报文进行续租。

三、地址池:
   接口地址池:分配的地址为接口下的网段范围内IP地址,网关为接口的IP地址;
   配置简单
interface Vlanif10
 ip address 192.168.10.254 255.255.255.0
 dhcp select interface

display ip pool interface vlanif10 used  

   全局地址池:自定义分配地址的范围,最终应用在相应的接口下;

ip pool 1
 gateway-list 192.168.20.254
 network 192.168.20.0 mask 255.255.255.0
 static-bind ip-address 192.168.20.20 mac-address 5489-9881-3ddf
 dns-list 8.8.8.8 114.114.114.114
#
interface Vlanif20
 ip address 192.168.20.254 255.255.255.0
 dhcp select global
#
display ip pool name 1 used


四、DHCP Relay(DHCP中继)
    应用场景:服务器和客户机不在同一广播域时使用,使用DHCP 中继可以减少DHCP服务的数量以及方便管理。
    实现原理:负责转发客户机和客户机之间的报文
      
   注意问题:
      1、客户机和中继要在同一广播域;
      2、中继要服务器要保证可达;
      3、服务器到客户机处于网段也要可达。

配置步骤:
1、服务器配置全局地址池:
ip pool 10
 gateway-list 192.168.10.254
 network 192.168.10.0 mask 255.255.255.0
 dns-list 8.8.8.8
#
ip pool 20
 gateway-list 192.168.20.254
 network 192.168.20.0 mask 255.255.255.0
 dns-list 114.114.114.114

2、服务器开启基于全局地址分配并且配置到达客户机的路由
interface GigabitEthernet0/0/0
 dhcp select global
#
ospf 1
 area 0.0.0.0
  network 100.0.0.0 0.255.255.255

3、配置中继到服务的路由可达
interface Vlanif100
 ip address 100.1.1.2 255.255.255.0
#
ospf 1
 area 0.0.0.0
  network 0.0.0.0 255.255.255.255

4、配置中继的地址以及开启中继功能
dhcp server group 123         配置DHCP 服务器组
 dhcp-server 100.1.1.1 0
#
interface Vlanif10
 ip address 192.168.10.254 255.255.255.0
 dhcp select relay
 dhcp relay server-select 123
#
interface Vlanif20
 ip address 192.168.20.254 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 100.1.1.1
#


五、DHCP 攻击与防范

1、 DHCP 存在的攻击
   1-1:DHCP饿死攻击
     攻击原理:攻击者不断修改报文的CHADDR值进行申请IP地址,服务器针对不同的CHADDR值分配的地址为不同;

   CHADDR客户端硬件地址,也就是MAC地址;
   


   1-2:仿冒DHCP Server攻击
      攻击原理:攻击者仿冒DHCP Server,向客户端分配错误的IP地址参数
      


   1-3:DHCP中间人攻击

2、 DHCP 攻击防范
   DHCP Snooping技术,部署在交换机;
 
  1、信任功能
      在交换机开启DHCP Snooping功能,会把所有的接口设置为非信任接口,非信任接口不会接口来自任何服务器的报文,针对连接服务器的端口可以设置信任接口,信任接口可以接收所有DHCP的报文。
     信任功能主要用于防止仿冒DHCP Server攻击

   配置:
     dhcp enable
     dhcp snooping enable
     dhcp snooping enable vlan 10 20
      
   interface Ethernet0/0/2
     dhcp snooping trusted

   dhcp server detect   检查DHCP SEVER    的位置


  2、监听功能
     通过查看服务器和客户端交换的报文形成DHCP SNOOPING绑定表,绑定表包含客户端获取的IP地址和租期,客户端MAC地址,客户端所连接的接口和VLAN。
    1、用于防止DHCP饿死攻击
interface Ethernet0/0/3
 dhcp snooping check dhcp-chaddr enable   \\用于检查报文中的chaddr和PC的MAC地址是否是一致,不一致则丢弃
 dhcp snooping max-user-number 1    \\限制接口最大获取的IP地址数量

    2、用于防止中间人攻击
      需要启用DAI(动态ARP监测)功能与DHCP SNOOPING绑定表进行联动;
      一旦启用DAI后,交换机针对ARP报文进行检查,也就是检查ARP报文中的IP地址与MAC地址的对应关系和DHCP SNOOPING绑定表的中是否一致,如果不一致则丢弃ARP报文。
    vlan 1
     dhcp snooping enable
     arp anti-attack check user-bind enable

user-bind static ip-address 192.168.1.4 mac-address 5489-986F-4975 inter
face GigabitEthernet 0/0/4 vlan 1     \\配置静态DHCP snooping绑定表

display dhcp static user-bind  all   查看静态DHCP snooping绑定表

    3、可以与IPSG功能联动,防止仿冒源攻击
     一旦启用IPSG(IP源防护)后,交换机针对IP报文进行检查,检查IP报文中的源IP和MAC地址和DHCP SNOOPING绑定表的对应中是否一致,如果不一致则IP报文。
   
    配置:
     vlan 1
 dhcp snooping enable
 ip source check user-bind enable    \\vlan下开启IP源防护功能

有关华为DHCP解析的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

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

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

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

  7. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  8. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

    我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

  9. python - 帮我找到合适的 ruby​​/python 解析器生成器 - 2

    我使用的第一个解析器生成器是Parse::RecDescent,它的指南/教程很棒,但它最有用的功能是它的调试工具,特别是tracing功能(通过将$RD_TRACE设置为1来激活)。我正在寻找可以帮助您调试其规则的解析器生成器。问题是,它必须用python或ruby​​编写,并且具有详细模式/跟踪模式或非常有用的调试技术。有人知道这样的解析器生成器吗?编辑:当我说调试时,我并不是指调试python或ruby​​。我指的是调试解析器生成器,查看它在每一步都在做什么,查看它正在读取的每个字符,它试图匹配的规则。希望你明白这一点。赏金编辑:要赢得赏金,请展示一个解析器生成器框架,并说明它的

  10. ruby - 如何用 Nokogiri 解析连续的标签? - 2

    我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(

随机推荐