На самом деле это довольно сложное формирование для каждого приложения с использованием инструментов ядра Linux, если только приложение не использует конкретные IP-адреса и / или порты, по которым вы можете сопоставить.
Предполагая, что это так, вам нужно прочитать iptables
и, в частности, fwmarks. Вам также нужно будет прочитать о tc
. В сочетании эти два инструмента могут делать то, что вы хотите. Linux Advanced Routing & Traffic Control - хорошее место для начала.
Если ваше приложение не использует предсказуемый набор портов / IP-адресов, то вам нужно использовать формирователь пользовательского пространства, например Trickle . Это вставляет себя между приложением и ядром и формирует трафик для этого приложения в пользовательском пространстве.
Я не думаю, что есть какие-либо прямые привязки python для какого-либо из этих инструментов, но было бы просто написать их с помощью python и просто вызвать исполняемые файлы напрямую.