我找到了 tc,它允许您按 ip、端口等进行过滤,然后限制速率。但我想知道是否有任何东西可以按应用程序进行过滤或根据另一个进程的套接字限制速率。
谢谢!
好吧,看起来
我可以使用 lsof -iTCP 和 ipfw 管道...想知道它的效率如何..
lsof-iTCP:http://danielmiessler.com/study/lsof/
IPFW:http://www.macgeekery.com/hacks/software/traffic_shaping_in_mac_os_x
C 语言中的 ipfw:http://psb.sbras.ru/cgi-bin/www/unix_help/unix-man?ipfw+4
具有速率限制(dummynet):http://www.opensource.apple.com/source/network_cmds/network_cmds-115.2/ipfw.tproj/ipfw.c
答案1
Netfilter (iptables) 有owner
(如果你想使用的话,还有一个socket
) 模块。有了它,如果用户 ID 或组 ID 匹配,你可以应用标准防火墙规则,如果数据包与套接字相关联,则可以选择匹配。
iptables -t mangle -A PREROUTING -m owner -u some_user --socket-exists -j MARK --set-mark 100
然后只需以捕获的方式使用 tc 即可mark 100
:
tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match mark 100 ...
这只是我的想法,我不知道是否有效,但请尝试一下。:)