利用tc命令在ingress处过滤数据包示例
时间: 2024-11-04 13:15:54 浏览: 15
在Linux网络流量控制(traffic control, tc)中,可以使用`tc`命令对进入网络设备的数据包进行过滤。`ingress`点是指数据包从外部网络流入到内部网络的时候。这里以一个简单的示例来说明如何在ingress处设置过滤器[^1]:
假设你想阻止所有源自特定IP地址的数据包进入,你可以创建一个过滤器(filter chain),并添加一条规则(classifier)来匹配这些IP。首先,创建一个新的Qdisc(queuing discipline)用于分类:
```shell
sudo tc qdisc add dev <interface_name> root handle 1: htb default 1
```
接着,创建一个classifier来识别源IP:
```shell
sudo tc class add dev <interface_name> parent 1: classid 1:1 protocol ip flowid 1:1
sudo tc filter add dev <interface_name> parent 1:1 protocol ip match ip dst <target_ip> prio 1 u32 action drop
```
这里的`<interface_name>`是你要操作的实际网卡名称,`<target_ip>`是你想要阻止的IP地址。
这样,当来自该IP的数据包经过这个接口时,它会被丢弃,因为其匹配到了drop动作。请注意,在实际应用中,可能需要根据具体需求调整策略,比如使用mark或者其他更复杂的匹配条件。
阅读全文