端口安全

端口安全是一种链路层 2 流量控制功能,使您能够将端口访问限制为特定数量的 MAC 地址或特定 MAC 地址,从而使端口不会转发来自未定义源地址(静态 MAC)的入站流量。

您可以配置在发生端口安全违规时要采取的操作(丢弃数据包或将端口置于 protodown 状态),并为该操作生效添加超时。默认设置模式是丢弃数据包。

端口安全支持 802.1X 接口、 trunk 或接入模式的链路层 2 接口,但支持 bond 中的接口。有关端口安全和 802.1X 如何协同工作的信息,请参阅 802.1x 多主机模式

配置端口安全

要配置端口安全

要在端口上启用安全,请运行 nv set interface <interface> port-security enable on 命令

cumulus@switch:~$ nv set interface swp1 port-security enable on
cumulus@switch:~$ nv config apply

您可以使用 nv set interface <interface> port-security enable off 命令禁用接口上的端口安全。

要配置允许访问端口的最大 MAC 地址数,请运行 nv set interface <interface> port-security mac-limit 命令。您可以指定介于 1 和 512 之间的值。默认值为 32。

cumulus@switch:~$ nv set interface swp1 port-security mac-limit 100
cumulus@switch:~$ nv config apply 

要配置允许访问端口的特定 MAC 地址,请运行 nv set interface <interface> port-security static-mac 命令。

您可以为每个接口配置最多 450 个静态 MAC 地址。

cumulus@switch:~$ nv set interface swp1 port-security static-mac 00:02:00:00:00:05
cumulus@switch:~$ nv set interface swp1 port-security static-mac 00:02:00:00:00:06
cumulus@switch:~$ nv config apply

要启用粘性 MAC 端口安全以跟踪端口上动态学习的特定 MAC 地址,请运行 nv set interface <interface> port-security sticky-mac enabled 命令。

如果源 MAC 地址仍在发送流量,则 Cumulus Linux 会通过接口闪断和重启来维护学习到的粘性 MAC 地址;否则,学习到的粘性 MAC 地址会根据粘性 MAC 老化时间老化。

cumulus@switch:~$ nv set interface swp1 port-security sticky-mac enabled
cumulus@switch:~$ nv config apply

要启用粘性 MAC 老化,请运行 nv set interface <interface> port-security sticky-aging enabled 命令。

cumulus@switch:~$ nv set interface swp1 port-security sticky-ageing enabled
cumulus@switch:~$ nv config apply

要配置学习到的粘性 MAC 地址老化且不再有权访问端口的时间段,请运行 nv set interface <interface> port-security sticky-timeout 命令。您可以指定介于 0 到 3600 分钟之间的值。默认设置为 1800 分钟。

cumulus@switch:~$ nv set interface swp1 port-security sticky-timeout 20
cumulus@switch:~$ nv config apply

要配置违规模式,可以运行 nv set interface <interface> port-security violation-mode protodown 命令将端口置于 protodown 状态,或者运行 nv set interface <interface> port-security violation-mode restrict 命令来丢弃数据包。

cumulus@switch:~$ nv set interface swp1 port-security violation-mode protodown
cumulus@switch:~$ nv config apply
cumulus@switch:~$ sudo ip link set swp2 protodown_reason portsecurity off
cumulus@switch:~$ sudo ip link set swp2 protodown off

要配置违规模式超时后的分钟数,请运行 nv set interface <interface> port-security violation-timeout 命令。您可以指定介于 0 到 60 分钟之间的值。默认值为 30 分钟。

cumulus@switch:~$ nv set interface swp1 port-security violation-timeout 60
cumulus@switch:~$ nv config apply

将要使用的配置设置添加到 /etc/cumulus/switchd.d/port_security.conf 文件中,然后使用 sudo systemctl reload switchd.service 命令重新加载 switchd 以应用更改。

设置
描述
interface.<port>.port_security.enable启用和禁用端口安全。1 启用端口安全。0 禁用端口安全。默认设置为 0。
interface.<port>.port_security.mac_limit配置允许访问端口的最大 MAC 地址数。您可以指定介于 0 和 512 之间的数字。默认值为 32。
interface.<port>.port_security.static_mac配置允许访问端口的特定 MAC 地址。要指定多个 MAC 地址,请用空格分隔每个 MAC 地址。
interface.<port>.port_security.sticky_mac启用和禁用粘性 MAC 端口安全,以跟踪端口上动态学习的特定 MAC 地址。1 启用粘性 MAC。0 禁用粘性 MAC。
如果源 MAC 地址仍在发送流量,则 Cumulus Linux 会通过接口闪断和重启来维护学习到的粘性 MAC 地址;否则,学习到的粘性 MAC 地址会根据粘性 MAC 老化时间老化。
interface.<port>.port_security.sticky_timeout学习到的粘性 MAC 地址老化且不再有权访问端口的时间段。您可以指定介于 0 到 3600 分钟之间的值。默认老化超时值为 1800。
interface.<port>.port_security.sticky_aging启用和禁用粘性 MAC 老化。1 启用粘性 MAC 老化。0 禁用粘性 MAC 老化。
interface.<port>.port_security.violation_mode配置违规模式:0 (protodown) 将端口置于 protodown 状态。1 (restrict) 丢弃数据包。默认设置为 1。
interface.<port>.port_security.violation_timeout配置违规模式超时后的分钟数。您可以指定介于 0 到 3600 之间的值。默认值为 1800。

以下显示了 /etc/cumulus/switchd.d/port_security.conf 配置文件示例

cumulus@switch:~$ sudo nano /etc/cumulus/switchd.d/port_security.conf
...
## Interface Port security
interface.swp1.port_security.enable = 1
interface.swp1.port_security.mac_limit = 100
interface.swp1.port_security.sticky_mac = 1
interface.swp1.port_security.sticky_timeout = 2000
interface.swp1.port_security.sticky_aging = 1
interface.swp1.port_security.violation_mode = 0
interface.swp1.port_security.violation_timeout = 3600
interface.swp1.port_security.static_mac = 00:02:00:00:00:05 00:02:00:00:00:06

清除 Protodown 状态

如果发生端口安全违规并且端口进入 protodown 状态,您可以在缓解导致违规的 MAC 地址后,使用以下命令清除 protodown 状态

cumulus@switch:~$ sudo ip link set swp1 protodown_reason portsecurity off
cumulus@switch:~$ sudo ip link set swp1 protodown off

故障排除

要显示端口安全配置,请运行 nv show interface <interface-id> port-security 命令

cumulus@switch:~$ nv show interface swp1 port-security
                   operational  applied
-----------------  -----------  --------
enable             on           on
mac-limit          32           32
sticky-mac         disabled     disabled
sticky-timeout     1800         1800
sticky-ageing      disabled     disabled
violation-mode     restrict     restrict
violation-timeout  30           30

mac-addresses
================
    entry-id  MAC address        Type     Status
    --------  -----------------  -------  ---------
    1         00:01:02:03:04:05
    2         00:02:00:00:00:ab  Static
    3         00:02:00:00:00:05  Static
    4         00:02:00:00:01:05  Static
    5         00:02:00:00:01:06  Static
    6         00:02:01:00:01:06  Static
    7         01:02:01:00:01:06  Static
    8         00:02:00:00:00:11  Dynamic  Installed
  • 要显示端口安全静态 MAC 地址信息,请运行 nv show interface <interface-id> port-security static-mac 命令。
  • 要显示端口安全 MAC 地址信息,请运行 nv show interface <interface-id> port-security mac-addresses 命令。