dhcp 2019

网络

Posted by Secssion on December 10, 2019

前言

DHCP简单整理

DHCP过程

  • discovery阶段:客户端以广播的形式请求IP。如果没有DHCP回应,最长间隔65s重新发送,直到有响应。discovery可以携带dhcp option50用来请求上一次的IP地址。
  • offer阶段:DHCP服务器以单播或广播的形式回复一个IP地址。
  • request阶段:客户端以广播的形式通知所有的DHCP服务器请求使用该IP。
  • ack阶段:DHCP服务器以单播或广播的形式通知是否可以使用IP。DHCP客户端在接收到ack之后,发送arp检测该IP是否已经存在,如果冲突则发送decline报文。DHCP客户端接收到nak之后,重新进入discovery阶段。
  • dhcp客户端获取到地址之后,会在租约期的1/2 、7/8时间重发request请求续约该IP。
  • 对于一个dhcp过程,它们的 Transaction ID都一致,如下。

dhcp_process

问题

  • dhcp服务器回复的offer包和ack可以单播也可以是广播,由客户端的标记为决定。为0则使用单薄,为1则使用广播。

dhcp_unicast

  • dhcp过程中一直收其他服务器的干扰,可以选择忽略其他服务器nak包。

  • dhcp客户端发送 discovery携带option60,来标识特定产商的dhcp服务器。如果,dhcp服务器能识别该option,则回复的request数据包中的option43中复制option60内容作为识别。该过程可以实现只从某产商设备上获取ip地址。

option60

option43

ip配置

在特定的使用场景下,需要用dhcp给一个接口配置多个IP来达到目的,通常是dhcp获取ip之后,用脚本配置静态路由。 如分别从dhcp服务器192.168.10.1和dhcp服务器192.168.100.1上获取地址 192.168.10.2, 192.168.100.2 则需要以下配置。

ip addr add dev br0 192.168.10.2/24 192.168.10.255 //set up interface ip
ip ro rep default via  192.168.10.1 dev br0 //set gateway

/*对于192.168.10.0配置路由*/
ip ru add from 192.168.100.2 lookup 100 //本地出数据包为src为192.168.10.2添加路由表100
ip ro flush table 100 //清空该表
ip addr add dev br0 192.168.100.2/24 broadcast 192.168.100.255 //添加ip
ip ro rep default via 192.168.100.1 dev br0 table 100 //为表添加默认路由
ip ro rep to 192.168.100.0/24 dev br0 src 192.168.100.2 table 100 //数据包为src为192.168.10.2走路由表100

接口设置网关问题

  • 一个网络接口如果没有配置网关,则发送报文先发送arp报文,找到对方mac地址后再发送。
  • 网络接口已配置网关,发送报文能直接发送就直接发送。不能的话,直接发往网关。