У меня есть сервис, который из-за плохой безопасности со стороны большой компании, которую я не хочу называть, мне нужно ограничить скорость для неавторизованных 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