Формирование трафика под Linux
Где я могу узнать об управлении / опросе сетевого интерфейса в Linux? Я хотел бы получить конкретную скорость загрузки / выгрузки приложения и установить ограничение скорости для конкретного приложения.
Мне особенно нужна информация, которая может помочь мне написать приложение для формирования трафика с использованием Python.
3 ответа
Вам нужен пакет iproute2, в котором вы используете команду tc. команды tc выглядят как
tc class add dev eth2 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit quantum 1600
Вот существующее приложение для формирования трафика Python, которое использует iproute2.
На самом деле это довольно сложное формирование для каждого приложения с использованием инструментов ядра Linux, если только приложение не использует конкретные IP-адреса и / или порты, по которым вы можете сопоставить.
Если предположить, что это так, то вам нужно прочитать iptables
и в частности fwmarks. Вам также нужно будет прочитать о tc
, В сочетании эти два инструмента могут делать то, что вы хотите. Linux Advanced Routing & Traffic Control - хорошее место для начала.
Предполагая, что ваше приложение не использует предсказуемый набор портов / IP-адресов, вам необходимо использовать формирователь пространства пользователя, такой как Trickle. Это вставляет себя между приложением и ядром и формирует трафик для этого приложения в пользовательском пространстве.
Я не думаю, что есть какие-либо прямые привязки Python для любого из этих инструментов, но было бы просто написать их с помощью Python и просто вызвать исполняемые файлы напрямую.
Ограничение пропускной способности для конкретного приложения (в данном случае google-chrome):
trickle -d 600 -u 200 google-chrome
единицы в кбит
Ограничение общей пропускной способности для устройства Ethernet:
sudo wondershaper eth0 600 200
Единицы снова указаны в кбитах. Измените eth0 на имя вашего интерфейса. Он использует tc tbf и htb...
Чтобы освоить подключение к Linux, вам необходимо изучить следующие команды и программы:
ip
ifconfig
route
iptables
netstat
tc
wondershaper
trickle
iftop
iptraf-ng
wget
curl
nslookup
dig
Документ, который вам нужно использовать в качестве ссылки:
https://www.lartc.org/howto/index.html
В этом документе есть хорошие примеры в Cookbook.
Легко читаемая текущая страница блога:
https://www.cnblogs.com/zengkefu/p/5635100.html
Не забывайте с удовольствием экспериментировать с ними;).
Есть ли причина, по которой вы хотите использовать python? Как уже упоминалось, он, скорее всего, будет передаваться только уже разработанным инструментам для этой цели. Тем не менее, если вы посмотрите вокруг, вы можете найти такие вещи, как Click! modular router
, XORP
и другие, которые предоставляют информацию о том, что вы хотите сделать, не говоря уже о всех предложенных предложениях (например, iptables
а также tc
)