将 tc 过滤器与 Snort 结合使用

将 tc 过滤器与 Snort 结合使用

我需要在使用 SNORT 内联模块进行一些修改后为数据包添加延迟。但是,我似乎无法使用 tc filter 让数据包与过滤器匹配...它始终与默认过滤器匹配。我使用的命令如下:

sudo tc qdisc del dev em1 root
sudo tc qdisc add dev em1 root handle 1: prio
sudo tc filter add dev em1  parent 1:0 protocol all prio 1 u32  match u32 0xac18095a 0xffffffff at 0 flowid 1:1 
sudo tc filter add dev em1 parent 1:0  protocol all prio 2 u32 match ip dst 0.0.0.0/0 classid 1:2 
sudo tc qdisc add dev em1 parent 1:1 handle 10: netem delay 10ms
sudo tc qdisc add dev em1 parent 1:2 handle 20: netem drop 50%

非常感谢您的帮助。

答案1

终于弄清楚该怎么做了。下面的脚本似乎有效。

#!/bin/bash

configure() {
    local device=$1
    local totalrate=$2
    local maxrate=$3
   local limited=$4

    # Delete qdiscs, classes and filters
    tc qdisc del dev $device root 2> /dev/null

    tc qdisc add dev $device root handle 1: cbq avpkt 1000 bandwidth $totalrate
    tc class add dev $device parent 1: classid 1:1 cbq rate $limited allot 1500 prio 3 bounded isolated
    tc class add dev $device parent 1: classid 1:2 cbq rate $maxrate allot 1500 prio 5 bounded isolated
    tc qdisc add dev $device parent 1:2 handle 20: netem delay 1000ms rate $maxrate


    # Classify ICMP into high priority queue
    tc filter add dev $device parent 1:0 protocol all  prio 3 u32 \
        match ip protocol 1 0xff flowid 1:1

    # Classify DNP3 into low priority queue
    tc filter add dev $device parent 1: protocol all prio 1 u32 \
        match ip protocol 6 0xff \
        match ip sport 20000 0xffff \
        flowid 1:2

    tc filter add dev $device parent 1: protocol all prio 2 u32 \
        match ip protocol 6 0xff \
        match u8 0x05 0x0f at 0 \
        match u16 0x0000 0xffc0 at 2 \
        match u8 0x10 0xff at 33 \
        flowid 1:2
}

main() {

    configure em1 1000Mbit 800Mbit 200Mbit
   # configure p24p1 200mbit 100mbit


}

main "$@"

但是我遇到了另一个问题。我尝试了以下设置。第一个设置适用于 snort 的延迟和内联数据包修改。但是,第二个设置不适用。当我从 Windows 计算机 ping Linux 计算机 A 时,Linux 计算机 A 会针对某些请求发送 2 个 ping 回复。然后有些请求没有得到回复。

Setup 1:
 _________               _________            _________               ___________
|Linux PC |             |Linux PC |          |    L2   |             |Windows PC |
|    A    |-------------|Running  |----------|  Switch |-------------|    A      |
|_________|             | Snort & |          |_________|             |___________|
                        | tc netem| 
                        |_________| 
Setup 2:
 _________     _____      _________            _________               ___________
|Linux PC |   |L2 SW|    |Linux PC |          |    L2   |             |Windows PC |
|    A    |---|_____|----|Running  |----------|  Switch |-------------|    A      |
|_________|              | Snort & |          |_________|             |___________|
                         | tc netem| 
                         |_________| 

非常感谢任何帮助。

相关内容