Назад | Перейти на главную страницу

Хотите использовать tc (управление трафиком) для ограничения входящего трафика для всех IP-адресов, кроме нескольких избранных

У меня есть сервис, который из-за плохой безопасности со стороны большой компании, которую я не хочу называть, мне нужно ограничить скорость для неавторизованных IP-адресов. Хотя указанная крупная компания показывает мой сервис только авторизованным IP-адресам, они не блокируют, кто может получить необработанный список серверов, предоставляющих эту услугу, и поэтому есть сценарии оболочки, которые могут получить доступ к этой услуге, пока мы находимся в соглашении с крупной компанией, которая говорит только мои клиенты будут пользоваться услугой. Поскольку блокировать всех, кроме моих IP-адресов, невозможно (мы пытались, оказалось, что большая компания тестирует с неизвестных IP-адресов, и поэтому они отключают нашу службу, когда не могут до нее добраться), наше решение заключалось в использовании tc для ограничения.

Мой сценарий ограничивает только исходящий трафик, мы хотели бы ограничить входящий, и хотя в некоторых сообщениях говорится, что tc нужен IFB, а в статьях о tc упоминается использование политик, чтобы сделать это более простым способом, но они применяются в широком смысле. Метод, который я нашел, источник которого я больше не могу найти, позволяет мне делать то, что я хочу (в основном). Если бы кто-нибудь мог быть так добр, чтобы дать мне способ сделать это для входа, это было бы признательно. Я много читал перед публикацией, в том числе как и некоторые другие потоки stackexchange, но не нашел то, что искал.

#!/bin/bash
tc qdisc add dev ens192 parent root handle 1: hfsc default 12
tc class add dev ens192 parent 1: classid 1:1 hfsc sc rate 1000mbit ul rate 1000mbit
tc class add dev ens192 parent 1:1 classid 1:11 hfsc sc rate 900mbit ul rate 900mbit
tc class add dev ens192 parent 1:1 classid 1:12 hfsc sc rate 5mbit ul rate 5mbit

tc qdisc add dev ens192 parent 1:11 handle 11:1 pfifo
tc qdisc add dev ens192 parent 1:12 handle 12:1 pfifo

ipset create fastips hash:ip,port

iptables -t mangle -I OUTPUT -m set --match-set fastips dst,src -j CLASSIFY --set-class 1:11

ipset add fastips 192.168.1.0/24,80
ipset add fastips 192.168.1.0/24,8080