端口安全
端口安全是一种链路层 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
命令。