Доброго времени суток!
Имеется вопрос, нужно «ограничить» входящий трафик на роутере, роутер это компьютер с установленной Ubuntu server 18.04.
Причина довольно банальна, за роутером есть сервер Тимспика и WEB сервер, периодически всякие «творческие» личности DDOS-ят, я понимаю что от таких атак простыми средствами не защитится, но мне захотелось кое-что проверить.
Допустим у меня канал 200мбит, одна из «творческих» личностей посылает на любой из прокинутых портов до любого сервера трафик в 100мбит, по скольку порт прокинут то трафик не оседает на самом роутере, а проходит до сервера и серверу «плохеет».
Если я за компом, то естественно я его заблокирую, а вот для случаев когда меня нет на месте и нужно ограничить поступление трафика к серверу.
ingress police - может ограничивать или весь канал или только IP и подсети, а мне хотелось чтобы любой пытающийся соединиться с серверами получал ограничение на передачу трафика к серверу, но не буду же я создавать кучу фильтров с кучей подсетей со всего интернета.
На этом же форуме я прочитал что советуют поднять виртуальный интерфейс IFB и перенаправить весь трафик на него и потом уже на этом интерфейсе работать как с обычным egress трафиком.
Вот что у меня получилось:
###########################################################################################################################################
tc qdisc del dev ifb0 root &> /dev/null
tc filter del dev ifb0 &> /dev/null
tc class del dev ifb0 &> /dev/null
tc qdisc del dev ppp0 ingress &> /dev/null
tc qdisc del dev ppp0 handle ffff: ingress &> /dev/null
modprobe ifb numifbs=1
ip link set dev ifb0 up
tc qdisc add dev ifb0 root handle 1: htb default 30
tc class add dev ifb0 parent 1: classid 1:1 htb rate 200mbit burst 256k
tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 10mbit ceil 100mbit burst 128k prio 1
tc class add dev ifb0 parent 1:10 classid 1:110 htb rate 800kbit ceil 1200kbit burst 10k prio 1
tc class add dev ifb0 parent 1:10 classid 1:120 htb rate 2mbit ceil 4mbit burst 20k prio 2
tc class add dev ifb0 parent 1:1 classid 1:30 htb rate 100mbit ceil 200mbit burst 256k prio 3
tc qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
tc qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
tc qdisc add dev ifb0 parent 1:30 handle 20: sfq perturb 10
tc filter add dev ifb0 pref 1 parent 110: protocol ip handle 2 flow hash keys src divisor 1024
tc filter add dev ifb0 pref 1 parent 120: protocol ip handle 2 flow hash keys src divisor 1024
tc filter add dev ifb0 pref 1 parent 20: protocol ip handle 2 flow hash keys src divisor 1024
tc filter add dev ifb0 parent 1: protocol ip prio 1 u32 match ip protocol 0x11 0xff match ip dport 9988 0xffff match ip dst xx.xx.xx.xx/32 flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip protocol 0x6 0xff match ip dport 30033 0xffff match ip dst xx.xx.xx.xx/32 flowid 1:120
tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip protocol 0x6 0xff match ip dport 80 0xffff match ip dst xx.xx.xx.xx/32 flowid 1:120
tc filter add dev ifb0 parent 1: protocol ip prio 3 u32 match ip src 0.0.0.0/0 flowid 1:1
tc qdisc add dev ppp0 ingress handle ffff:
tc filter add dev ppp0 parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
###########################################################################################################################################
Вроде бы даже работает, но некоторые пользователи говорят что не могут зайти на ТС сервер когда эти правила включены, потому хотел бы чтобы знающие люди поглядели и указали мне на возможные ошибки.
p.s.
Даже при практически не загруженном сервере я вижу что у меня постоянно увеличиваются overlimits на корневом классе, на остальных (dropped, overlimits и requeues) нулёвые, хотя счётчики пакетов меняются, это нормально или нет.
qdisc htb 1: dev ifb0 root refcnt 2 r2q 10 default 48 direct_packets_stat 0 ver 3.17 direct_qlen 1000
Sent 66261555 bytes 685628 pkt (dropped 0, overlimits 741 requeues 0)