美文网首页
Linux上搭建支持OPTION 82功能的 DHCP服务器

Linux上搭建支持OPTION 82功能的 DHCP服务器

作者: 软件测试之二叉树 | 来源:发表于2018-02-23 16:06 被阅读0次

    新年伊始,我们要尽快调整好心态投入到工作当中去。

    DHCP Snooping是预防dhcp攻击的一种手段,通过设置信任端口和非信任端口让非法的dhcp服务器无法攻击客户端,同时它还提供对dhcp报文的检查,如dhcp报文中的chaddr字段和以太帧头中的源mac是否匹配。

    DHCP Snooping中还涉及到一个重要的概念是OPTION 82,通过在非信任端口上启用OPTION 82功能,让客户端发出的dhcp报文携带option82字段,然后支持dhcp Snooping option82功能的服务器再根据客户端携带的option82信息分配地址。tw自研交换机的option82支持两个子选项(1)Agent Circuit ID和(2)Agent RemoteID。

    sub-option 1,为代理电路id(即circuitid)子项。子选项通常在dhcp中继设备上配置,定义了在传输报文的时候要携带dhcp客户端所连接交换机端口的vlan-id及二层端口号。通常sub-option 1与sub-option 2子选项要共同使用来标识dhcp源端的信息。

    sub-option 2,为代理远程id(即remoteid)子项。该子选项也通常在dhcp中继设备上配置,定义了在传输报文的时候要携带中继设备的mac地址信息。通常与sub-option1子选项要共同使用来标识dhcp源端的信息。

    这些子选项在报文中的格式是这样的

    代码    长度  代理信息字段

    +------+------+------+------+------+------+--...-+------+

    |   0   |   N   |    s1  |   s2  |   s3  |  s4  |.......| sN  |

    +------+------+------+------+------+------+--...-+------+

    DHCP OPTION82功能的测试

    1、搭建支持option82功能的DHCP服务器

    2、配置tw自研交换机的option82功能

    3、pc是否能根据不同的option82信息获取到不同的地址

    搭建支持option82功能的DHCP服务器

    这里我用的是centos系统下面yum命令安装的dhcp服务器,找到/etc/dhcp/dhcpd.conf文件,进行编辑。

    普通的dhcpd.conf文件

    ddns-update-style interim; #表示dhcp服务器和dns服务器的动态信息更新模式

    ignore client-updates; #忽略客户端更新

    subnet 192.168.1.0

    netmask 255.255.255.0 { #意思是我所分配的ip地址所在的网段为192.168.145.0 子网掩码为255.255.255.0

    range 192.168.1.200 192.168.1.210; #租用IP地址的范围

    option domain-name-servers ns.example.org;

    option domain-name "example.org";

    option routers 192.168.1.1; #路由器地址,这里是当前 dhcp 服务器的IP地址

    option subnet-mask 255.255.255.0; #子网掩码

    default-lease-time 600; #默认租约时间

    max-lease-time 7200; #最大租约时间

    }

    带有option82功能的dhcpd.conf文件

    ddns-update-style interim; #表示dhcp服务器和dns服务器的动态信息更新模式 ignore client-updates; #忽略客户端更新

    class "port1" { match if option agent.circuit-id=00:04:00:01:00:03; }

    class "port2" { match if option agent.circuit-id=00:04:00:01:00:01; }

    subnet 192.168.1.0 netmask 255.255.255.0 {

    pool {

    allow members of "port1";

    default-lease-time 600;

    max-lease-time 7200;

    range 192.168.1.3 192.168.1.100;

    option routers 192.168.1.1;

    option subnet-mask 255.255.255.0;

    option domain-name-servers 8.8.8.8; } }

    subnet 192.168.2.0 netmask 255.255.255.0 {

    pool {

    allow members of "port2";

    default-lease-time 600;

    max-lease-time 7200;

    range 192.168.2.101 192.168.2.199;

    option routers 192.168.2.1;

    option subnet-mask 255.255.255.0;

    option domain-name-servers 8.8.8.8; } }

    选择第二个文件,因为它支持根据option82的circuit id去分配不同的IP地址。

    linux系统下面启用dhcp服务器的命令为service dhcpd restart,通过cat /var/log/messages可以查看日志信息

    配置tw自研交换机的option82功能

    首先开启全局和端口的dhcp snooping功能

    设置连接dhcp服务器的端口为信任端口

    启用端口的option82功能

    pc是否能根据不同的option82信息获取到不同的地址

    pc连接交换机的端口3,抓到的完整报文如下

    pc连接到端口1获到192.168.1.1网段的地址。

    pc连接交换机的端口1,抓到的完整报文如下

    pc连接到端口1获到192.168.2.1网段的地址。

    由此可见,不同端口可以获取到同一DHCP服务器不同网段的地址。

    pc连接端口1携带的circuit id为000400010001,dhcpd.conf文件中

    class "port2" {match if option agent.circuit-id=00:04:00:01:00:01;}

    匹配到的是"port2",该网段为192.168.2.1,地址池为range 192.168.2.101 192.168.2.199

    pc连接端口3携带的circuit id为000400010003,dhcpd.conf文件中

    class "port1" {match if option agent.circuit-id=00:04:00:01:00:03;}

    匹配到的是"port1",该网段为192.168.1.1,地址池为range 192.168.1.3 192.168.1.100

    这是dhcp snooping option82的一个应用场景,通过编辑dhcp.conf文件来获取不同网段的地址。其中还需要注意一个问题,因为dhcp服务器只有一张网卡,要想同时分配两个网段的ip地址也需要网卡支持两个网段的ip,所以我们给网卡配置了一个静态ip后有配了一个虚拟ip。

    option82最基本的功能就介绍到这儿了。

    相关文章

      网友评论

          本文标题:Linux上搭建支持OPTION 82功能的 DHCP服务器

          本文链接:https://www.haomeiwen.com/subject/znvlaxtx.html