DHCPV6 on linux

蹲街弑〆低调 提交于 2020-01-22 19:25:43

主要有两种技术
一种是传统的有状态(stateful),典型代表就是与IPv4时代相对应的DHCPv6,
一种是IPv6的无状态(stateless)自动配置,典型代表是Radvd。这是IPv6协议的一个突出特点:支持网络节点的地址自动配置.

ipv6基础知识补充(看看这位大佬的):https://cshihong.github.io/2018/01/29/IPv6%E5%9F%BA%E7%A1%80/

先看无状态是如何配置的

1.先安装我们需要的软件Radvd

apt install radvd

2.配置config文件

nano /etc/radvd.confg

这里具体配置还是老样子我们根据自身需求配置就可以了

注意一点接口别配错就行

而且我这里安装完出配置文件并未主动生成,但是没关系我们可以自己创建一个。

interface eth0{
AdvSendAdvert on;           #启用路由器公告(RA)功能
MinRtrAdvInterval 30;       #每隔30-100秒间隔发送公告消息
MaxRtrAdvInterval 100;        #spf
AdvManagedFlag on;          # M值
AdvOtherConfigFlag on;      # O 值#spf
prefix 2001:db8:1:0::/64    #发送的前缀信息
{
AdvOnLink on;
AdvAutonomous on;   #公告的前缀可用来自动位置配置
AdvRouterAddr off;
};

};

3我们把radvd服务重启下 这里你当然也可以用restart 命令

/etc/init.d/radvd stop

/etc/init.d/radvd start

/etc/init.d/radvd status

4.这时候我们在client上看下

可以看到IP地址已经拿到了

无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取

我们下面简单的分析下报文

过程大致分为两步

路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Tpye字段值为133。

路由器通告RA(Router Advertisement)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。

重点在RA报文上,主要要注意下几个flag

▷ Autonomous flag(简称A flag):表示是否配置无状态IP。在一个RA报文中,可存在多个prefix,比如2401::/64、2402::/64、2403::/64,每个prefix都可以独立配置A flag
▪ 为on时(对应bit位为1):表示客户端应当在该prefix范围内自动生成IPv6地址(客户端通过DAD自行保证地址可用),并配置子网路由条目、网关
▪ 为off时(对应bit位为0):表示客户端不应当在该prefix范围内自动生成IPv6地址,但是可以配置子网路由条目、网关
▷ Managed flag(简称M flag):表示是否配置有状态IP。M flag是RA报文的全局参数,一个RA报文只有一个M flag
▪ 为on时(对应bit位为1):表示在stateless流程结束后开始stateful流程,也就是告诉客户端可以通过DHCPv6来获得IPv6地址和其他参数(如DNS列表)
▪ 为off时(对应bit位为0):表示不通过DHCPv6来获得IPv6地址。
▷ Other flag(简称O flag):表示是否通过DHCPv6获得除IP以外的其他参数(如DNS列表)。O flag也是RA报文中的全局参数,一个RA报文只有一个O flag。注意:仅当M flag为off时,该参数才会被读取。
▪ 为on时(对应bit位为1):当M flag为on,或者M flag为off且至少有一个A flag为on时,将通过DHCPv6获得其他参数
▪ 为off时(对应bit位为0):当M flag为on时,依然将通过DHCPv6获得其他参数;当M flag也为off时,将不通过DHCPv6获得其他参数

有状态获取配置

工具dibbler

1.还是一样先安装

apt-get install dibbler.server

2.老套路设置配置文件

nano /etc/dibbler/dibbler.server

修改相对应的接口,其他的设置更具自己的需求设置就可以了。

3.重启服务和网卡

/etc/init.d/dibbler/dibbler-server restart

ifconfig  ens34 down

ifocnfig ens34 up

4.查看client获取情况

可以看到完成了四步交互获得了配置

从图就能看出来和v4的流程是差不多的都是一问一答最后再确认。

1.DHCPv6客户端使用Solicit报文来确定DHCPv6服务器的位置。

2.DHCPv6服务器发送Advertise报文来对Solicit报文进行回应,宣告自己能够提供DHCPv6服务。

3.DHCPv6客户端发送Request报文来向DHCPv6服务器请求IPv6地址和其它配置信息。

4.DHCPv6服务器回应客户端Request的Reply报文。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!