本文介绍了如何通过编程实现对IP数据包进行精细化筛选的方法,涵盖端口过滤、黑名单机制及基于网段的访问控制,并提供相关代码供读者参考与实践。
规则函数:addRule(char *driver_name, USHORT type, USHORT protocol, char *sourceIp, char *sourceMask, USHORT sourcePort, char *destinationIp, char *destinationMask, USHORT destinationPort, BOOLEAN isDrop);
规则说明:
- **type** 参数:
- LOCAL_PORT_FILTER 类型:端口过滤。
- BLANK_IP_FILTER 类型:IP 黑名单过滤。
- NET_FILTER 类型:子网过滤。
- **protocol** 参数:协议号
协议可以指定类型,TCP=6, UDP=17, ICMP=1。如果指定为0,则表示对所有协议生效。
- **sourceIp、sourceMask参数**: 源 IP 地址和掩码。
- **sourcePort** 参数:源端口号。等于 0 表示不指定端口。
- **destinationIp、destinationMask 参数**: 目的地址及目的掩码。
- **destinationPort** 参数:目的端口。等于 0 表示不指定端口。
- **isDrop参数** :是否丢弃这个数据分组。TRUE: 丢弃;FALSE:放过。