DHCP 侦听

DHCP 侦听是一项网络安全功能,可防止未经授权的 DHCP 服务器分配 IP 地址,防止 DHCP 欺骗和 IP 地址冲突,并增强整体网络安全性。通过确保只有受信任的 DHCP 服务器可以分配 IP 地址并维护 IP 地址到 MAC 地址映射的绑定表,DHCP 侦听有助于保护网络完整性和可靠性。

Cumulus Linux 充当 DHCP 基础设施和 DHCP 客户端之间的中间层,通过扫描 DHCP 控制数据包并构建 IP-MAC 数据库。Cumulus Linux 仅接受来自受信任接口的 DHCP Offer。

  • Cumulus Linux 不支持 DHCP 选项 82 处理。
  • 您必须将 DHCP 侦听 VLAN 添加到网桥。
  • DHCP 侦听仅支持单网桥模式。

配置 DHCP 侦听

要配置 DHCP 侦听

  • 将 DHCP 侦听 VLAN 添加到网桥。
  • 在网桥下的 VLAN 上启用 DHCP 侦听。
  • 添加受信任的接口。Cumulus Linux 仅允许来自受信任接口的 DHCP Offer,以防止恶意 DHCP 服务器在网络内部署 IP 地址。该接口必须是您指定的网桥的成员。

以下示例在 VLAN 10 上启用 DHCP 侦听,并将受信任接口设置为 swp3。swp3 是网桥 br_default 的成员

cumulus@switch:~$ nv set bridge domain br_default vlan 10
cumulus@switch:~$ nv set bridge domain br_default dhcp-snoop vlan 10 
cumulus@switch:~$ nv set bridge domain br_default dhcp-snoop vlan 10 trust swp3
cumulus@switch:~$ nv config apply

对于 IPv6,运行 nv set bridge domain <bridge> dhcp-snoop6 vlan <vlan> 命令。

要禁用网桥下 VLAN 上的 DHCP 侦听,请为 IPv4 运行 nv unset bridge domain <bridge> dhcp-snoop vlan <vlan> 命令,或为 IPv6 运行 nv unset bridge domain <bridge> dhcp-snoop6 vlan <vlan> 命令。

创建 /etc/dhcpsnoop/dhcp_snoop.json 文件,然后在网桥下添加 DHCP 侦听配置。

以下示例在 VLAN 10 上为 IPv4 启用 DHCP 侦听,并将受信任接口设置为 swp3。swp3 是网桥 br_default 的成员

cumulus@switch:~$ sudo nano /etc/dhcpsnoop/dhcp_snoop.json
{
  "bridge": [
    {
      "bridge_id": "br_default",
      "vlan": [
        {
          "vlan_id": 10,
          "snooping": 1,
          "ip_version": 4,
          "trusted_interface": [
            "swp3"
          ],
        }
      ]
    }
  ]
}

以下示例在 VLAN 10 上为 IPv6 启用 DHCP 侦听,并将受信任接口设置为 swp6。swp6 是网桥 br_default 的成员

cumulus@switch:~$ sudo nano /etc/dhcpsnoop/dhcp_snoop.json
{
  "bridge": [
    {
      "bridge_id": "br_default",
      "vlan": [
        {
          "vlan_id": 10,
          "snooping": 1,
          "ip_version": 6,
          "trusted_interface": [
            "swp6"
          ],
        }
      ]
    }
  ]
}

显示 DHCP 侦听表

要显示 DHCP 侦听表,请为 IPv4 运行 nv show bridge domain <bridge> dhcp-snoop 命令,或为 IPv6 运行 nv show bridge domain <bridge> dhcp-snoop6 命令。

以下示例显示 IPv4 的 DHCP 侦听表

cumulus@switch:~$ nv show bridge domain br_default dhcp-snoop
DHCP Snooping Table
======================
    Vlan  Port  IP           MAC                State  Lease  Bridge    
    ----  ----  -----------  -----------------  -----  -----  ----------
    10    swp1  10.1.10.100  48:b0:2d:fa:6b:a1  ACK    3600   br_default

要显示特定 VLAN 的 DHCP 侦听表,请为 IPv4 运行 nv show bridge domain <bridge> dhcp-snoop vlan <vlan-ID> 命令,或为 IPv6 运行 nv show bridge domain <bridge> dhcp-snoop6 vlan <vlan-id> 命令。

以下示例显示 VLAN 10 的 IPv4 DHCP 侦听表

cumulus@switch:~$ nv show bridge domain br_default dhcp-snoop vlan 10
DHCP Snooping Vlan Trust Ports Table
=======================================
    Port 
    -----
    swp51

DHCP Snooping Vlan Bind Table
================================
    Port  IP           MAC                State  Lease  Bridge    
    ----  -----------  -----------------  -----  -----  ----------
    swp1  10.1.10.100  48:b0:2d:fa:6b:a1  ACK    3300   br_default

要显示 DHCP 侦听表中的受信任端口信息,请为 IPv4 运行 nv show bridge domain <bridge-id> dhcp-snoop trust-ports 命令,或为 IPv6 运行 nv show bridge domain <bridge> dhcp-snoop6 trust-ports 命令。

以下示例显示 IPv4 DHCP 侦听表中的受信任端口信息

cumulus@switch:~$ show bridge domain br_default dhcp-snoop trust-ports
Vlan               Ports
----------    --------------------
100           swp1, swp2
200           swp3, swp4