我想在ubuntu服务器上运行下面的脚本。 eth1是NAT接口,而eth2是具有静态公有IP的WAN接口:
TCA="tc class add dev eth2" TFA="tc filter add dev eth2" TQA="tc qdisc add dev eth2" SFQ="sfq perturb 10" tc qdisc del dev eth2 root tc qdisc add dev eth2 root handle 1: htb tc class add dev eth2 parent 1: classid 1:1 htb rate 4560kbit $TCA parent 1:1 classid 1:10 htb rate 2280kbit ceil 4560kbit prio 0 $TCA parent 1:1 classid 1:11 htb rate 912kbit ceil 4560kbit prio 1 $TCA parent 1:1 classid 1:12 htb rate 912kbit ceil 4560kbit prio 2 $TCA parent 1:1 classid 1:13 htb rate 10kbit ceil 10kbit prio 4 $TQA parent 1:10 handle 10: $SFQ $TQA parent 1:11 handle 11: $SFQ $TQA parent 1:12 handle 12: $SFQ $TQA parent 1:13 handle 13: $SFQ $TFA parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10 $TFA parent 1:0 prio 1 protocol ip handle 11 fw flowid 1:11 $TFA parent 1:0 prio 2 protocol ip handle 12 fw flowid 1:12 $TFA parent 1:0 prio 4 protocol ip handle 13 fw flowid 1:13 iptables -t mangle -A POSTROUTING -p tcp --sport 80 -j MARK --set-mark 10 iptables -t mangle -A POSTROUTING -p tcp --sport 443 -j MARK --set-mark 11 iptables -t mangle -A POSTROUTING -p tcp --sport 995 -j MARK --set-mark 12 iptables -t mangle -A POSTROUTING -p tcp --sport 1024:65535 -j MARK --set-mark 13 TCAU="tc class add dev imq0" TFAU="tc filter add dev imq0" TQAU="tc qdisc add dev imq0" modprobe imq modprobe ipt_IMQ ip link set imq0 up tc qdisc del dev imq0 root tc qdisc add dev imq0 root handle 1: htb tc class add dev imq0 parent 1: classid 1:1 htb rate 4560kbit $TCAU parent 1:1 classid 1:13 htb rate 10kbit ceil 10kbit prio 4 $TQAU parent 1:13 handle 13: $SFQ $TFAU parent 1:0 prio 4 protocol ip handle 13 fw flowid 1:13 iptables -t mangle -A PREROUTING -p tcp --dport 1024:65535 -j MARK --set-mark 13 iptables -t mangle -A PREROUTING -j IMQ --todev 0
当我做modprobe imq和modprobe ipt_IMQ我得到错误的kernel module is not found 。 有什么办法可以使这个脚本在Ubuntu的服务器上工作?
你应该修补你的内核来增加对IMQ的支持。 在这里你可以find补丁http://www.linuximq.net/patches.html ,在这里你会find详细的说明如何编译它: http : //ubuntuforums.org/showthread.php?t=1404537
问候
Ubuntu中没有开箱即用的解决scheme。 您必须使用应用的imq补丁重新编译您的内核。 有很多关于如何做的教程。 这是我发现的第一个: http : //ubuntuforums.org/showthread.php?t=1404537
据我所知,ifb设备是imq的inheritance者。 我对imq / ifb排队很陌生,但我相信他们可以以相同的方式使用。 你可以通过运行sudo modprobe ifb来加载ifb模块。 另外,我遇到了这样的问题:“IMQ补丁也有,但不推荐,IMQdevise不安全,ifb更好”(来自http://www.spinics.net/lists/netfilter/msg49306.html )。