You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Open vSwitch中配置流规则阻止端口A到端口B的流量?

解决方案:阻止OVS端口A到端口B的流量

OVS的流表规则**默认基于入站流量(in_port)**进行匹配,无法直接在匹配条件中指定out_port(因为此时交换机还未确定转发目标端口)。要实现「阻止端口A发往B的所有流量,但B可接收其他端口流量」的需求,可通过以下步骤操作:

核心思路

添加一条高优先级流规则,匹配从端口A进入、且目的是端口B的流量,并执行丢弃动作;同时保留默认的正常转发规则,确保其他端口到B的流量不受影响。

具体操作步骤

1. 获取必要信息

首先获取交换机桥名、端口A/B的编号或MAC地址:

  • 查看桥名:ovs-vsctl show
  • 查看端口编号:ovs-ofctl show <桥名>(输出中每个端口会标注编号,如port 1: portA)
  • 查看端口B的MAC地址:ovs-vsctl get port <portB名称> hw_addr

2. 添加流规则

示例(假设桥名为br0,端口A编号为1,端口B的MAC为aa:bb:cc:dd:ee:ff)

先添加默认转发规则(确保其他流量正常通行):

ovs-ofctl add-flow br0 priority=0,actions=NORMAL

再添加高优先级的拦截规则(优先级需高于默认规则):

ovs-ofctl add-flow br0 priority=100,in_port=1,dl_dst=aa:bb:cc:dd:ee:ff,actions=drop

如果使用OpenFlow 1.3及以上版本,可直接用端口名称代替编号:

ovs-ofctl add-flow br0 priority=100,in_port=portA,dl_dst=aa:bb:cc:dd:ee:ff,actions=drop

3. 验证规则

查看已添加的流规则,确认拦截规则存在:

ovs-ofctl dump-flows br0

关键说明

  • 为什么不能用out_port作为匹配条件?OVS的流规则是在流量进入交换机端口时进行匹配,此时交换机尚未确定要转发到哪个端口,因此out_port不属于入站流量的匹配字段,只能作为动作(如output:portB)使用。
  • 该规则仅拦截从端口A发往B的流量,其他端口到B的流量会通过默认的NORMAL动作正常转发,符合需求。

内容的提问来源于stack exchange,提问作者user3896606

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:15:06