Advertisement
Guest User

Скрипт

a guest
May 7th, 2013
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.02 KB | None | 0 0
  1. #!/bin/sh -x
  2.  
  3. ##################################################################
  4. # 0 Setup modules on boot
  5. #
  6. insmod ip_queue 2> /dev/null > /dev/null
  7. insmod sch_htb 2> /dev/null > /dev/null
  8. insmod sch_esfq 2> /dev/null > /dev/null
  9. insmod cls_u32 2> /dev/null > /dev/null
  10. insmod sch_ingress 2> /dev/null > /dev/null
  11. insmod cls_fw 2> /dev/null > /dev/null
  12. insmod ipt_TOS 2> /dev/null > /dev/null
  13. insmod sch_prio 2> /dev/null > /dev/null
  14. insmod act_mirred 2> /dev/null > /dev/null
  15. insmod act_police 2> /dev/null > /dev/null
  16. insmod sch_htb 2> /dev/null > /dev/null
  17.  
  18. echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
  19.  
  20. ##################################################################
  21. # 1 CONFIG
  22. #
  23.  
  24. LAN_IFACE="br-lan"
  25. WAN_IFACE="pptp-vpn"
  26.  
  27. GLOB_RATE="1000mbit"
  28. LAN_RATE="100mbit"
  29.  
  30. WAN_RATE="34000kbit"
  31. WAN_BW="3072kbit"
  32.  
  33. LAN_NET="192.168.0.0/24"
  34. LOCAL_NETS="10.0.0.0/8 172.16.0.0/16"
  35.  
  36. ##################################################################
  37. #
  38. # 2 LAN (Incoming traffic)
  39. #
  40. # 2.1 Root qdsc
  41. tc qdisc del dev $LAN_IFACE root 2> /dev/null > /dev/null
  42. tc qdisc add dev $LAN_IFACE root handle 1:0 htb default 103
  43. tc class add dev $LAN_IFACE parent 1:0 classid 1:1 htb rate $GLOB_RATE \
  44. burst 20k
  45.  
  46. #
  47. # 2.2 Speed for lan traffic
  48. #
  49. tc class add dev $LAN_IFACE parent 1:1 classid 1:2 htb rate $LAN_RATE \
  50. burst 10k prio 3
  51. tc qdisc add dev $LAN_IFACE parent 1:2 handle 2: esfq perturb 2 hash dst
  52. tc filter add dev $LAN_IFACE parent 1:0 prio 3 protocol ip handle 2 fw \
  53. classid 1:2
  54.  
  55. #
  56. # 2.3 Speed for inet traffic
  57. #
  58. tc class add dev $LAN_IFACE parent 1:1 classid 1:10 htb rate $WAN_RATE \
  59. burst 6k prio 2
  60.  
  61. ##################################################################
  62. #
  63. # 3 WAN (Outgoing traffic)
  64. #
  65. # 3.1 Root qdsc
  66. tc qdisc del dev $WAN_IFACE root 2> /dev/null > /dev/null
  67. tc qdisc add dev $WAN_IFACE root handle 1:0 htb default 103
  68. tc class add dev $WAN_IFACE parent 1:0 classid 1:1 htb rate $GLOB_RATE \
  69. burst 20k
  70.  
  71. #
  72. # 3.2 Speed for lan traffic
  73. #
  74. tc class add dev $WAN_IFACE parent 1:1 classid 1:2 htb rate $LAN_RATE \
  75. burst 10k prio 3
  76. tc qdisc add dev $WAN_IFACE parent 1:2 handle 2: esfq perturb 2 hash src
  77. tc filter add dev $WAN_IFACE parent 1:0 prio 3 protocol ip handle 2 fw \
  78. classid 1:2
  79.  
  80. #
  81. # 3.3 Speed for inet traffic
  82. #
  83. tc class add dev $WAN_IFACE parent 1:1 classid 1:10 htb rate $WAN_RATE \
  84. burst 6k prio 2
  85.  
  86. ##################################################################
  87. #
  88. # 4 Priorites
  89. #
  90.  
  91. #
  92. # 4.1 Prio
  93. #
  94. # Incoming
  95. tc class add dev $LAN_IFACE parent 1:10 classid 1:101 htb rate $WAN_BW \
  96. ceil $WAN_RATE burst 2k prio 1
  97. tc qdisc add dev $LAN_IFACE parent 1:101 handle 101: esfq perturb 2 hash dst
  98. tc filter add dev $LAN_IFACE parent 1:0 prio 1 protocol ip handle 101 fw \
  99. classid 1:101
  100.  
  101. # Outgoing
  102. tc class add dev $WAN_IFACE parent 1:10 classid 1:101 htb rate $WAN_BW \
  103. ceil $WAN_RATE burst 2k prio 1
  104. tc qdisc add dev $WAN_IFACE parent 1:101 handle 101: esfq perturb 2 hash src
  105. tc filter add dev $WAN_IFACE parent 1:0 prio 1 protocol ip handle 101 fw \
  106. classid 1:101
  107.  
  108. #
  109. # 4.2 Prio
  110. #
  111. # Incoming
  112. tc class add dev $LAN_IFACE parent 1:10 classid 1:102 htb rate $WAN_BW \
  113. ceil $WAN_RATE burst 2k prio 2
  114. tc qdisc add dev $LAN_IFACE parent 1:102 handle 102: esfq perturb 2 hash dst
  115. tc filter add dev $LAN_IFACE parent 1:0 prio 2 protocol ip handle 102 fw \
  116. classid 1:102
  117.  
  118. # Outgoing
  119. tc class add dev $WAN_IFACE parent 1:10 classid 1:102 htb rate $WAN_BW \
  120. ceil $WAN_RATE burst 2k prio 2
  121. tc qdisc add dev $WAN_IFACE parent 1:102 handle 102: esfq perturb 2 hash src
  122. tc filter add dev $WAN_IFACE parent 1:0 prio 2 protocol ip handle 102 fw \
  123. classid 1:102
  124.  
  125. #
  126. # 4.3 Prio
  127. #
  128. # Incoming
  129. tc class add dev $LAN_IFACE parent 1:10 classid 1:103 htb rate $WAN_BW \
  130. ceil $WAN_RATE burst 2k prio 3
  131. tc qdisc add dev $LAN_IFACE parent 1:103 handle 103: esfq perturb 2 hash dst
  132. tc filter add dev $LAN_IFACE parent 1:0 prio 3 protocol ip handle 103 fw \
  133. classid 1:103
  134.  
  135. # Outgoing
  136. tc class add dev $WAN_IFACE parent 1:10 classid 1:103 htb rate $WAN_BW \
  137. ceil $WAN_RATE burst 2k prio 3
  138. tc qdisc add dev $WAN_IFACE parent 1:103 handle 103: esfq perturb 2 hash src
  139. tc filter add dev $WAN_IFACE parent 1:0 prio 3 protocol ip handle 103 fw \
  140. classid 1:103
  141.  
  142. ##################################################################
  143. #
  144. # 5 IPTABLES
  145. #
  146.  
  147. #
  148. # 5.1 Delete Chains
  149. #
  150. iptables -t mangle -D POSTROUTING -o $LAN_IFACE -j qos_tc
  151. iptables -t mangle -D PREROUTING -i $LAN_IFACE -j qos_tc
  152. iptables -t mangle -F qos_tc
  153. iptables -t mangle -X qos_tc
  154. iptables -t mangle -F
  155. iptables -t mangle -X
  156.  
  157. #
  158. # 5.2 Create Chain
  159. #
  160. iptables -t mangle -N qos_tc
  161. iptables -t mangle -I POSTROUTING -o $LAN_IFACE -d $LAN_NET -j qos_tc
  162. iptables -t mangle -I PREROUTING -i $LAN_IFACE -s $LAN_NET -j qos_tc
  163.  
  164. # ICMP
  165. iptables -t mangle -A qos_tc -p icmp -j MARK \
  166. --set-mark 101
  167. # ACK & Other small packets
  168. iptables -t mangle -A qos_tc -p tcp -m length \
  169. --length :64 -j MARK --set-mark 101
  170. # DNS
  171. iptables -t mangle -A qos_tc -p tcp --dport 53 \
  172. -j MARK --set-mark 101
  173. iptables -t mangle -A qos_tc -p udp --dport 53 \
  174. -j MARK --set-mark 101
  175. iptables -t mangle -A qos_tc -p tcp --sport 53 \
  176. -j MARK --set-mark 101
  177. iptables -t mangle -A qos_tc -p udp --sport 53 \
  178. -j MARK --set-mark 101
  179. # Web-client
  180. iptables -t mangle -A qos_tc -m multiport -p tcp \
  181. --dports 80,443 -j MARK --set-mark 102
  182. iptables -t mangle -A qos_tc -m multiport -p tcp \
  183. --sports 80,443 -j MARK --set-mark 102
  184. # IM-client && SSH-Client
  185. iptables -t mangle -A qos_tc -m multiport -p tcp \
  186. --dports 22,5190,5222,5223 -j MARK --set-mark 102
  187. iptables -t mangle -A qos_tc -m multiport -p tcp \
  188. --sports 22,5190,5222,5223 -j MARK --set-mark 102
  189.  
  190. #
  191. # 5.X LAN-to-LAN
  192. #
  193. iptables -t mangle -A qos_tc -s $LAN_NET -d $LAN_NET -j MARK --set-mark 1
  194. iptables -t mangle -A qos_tc -d $LAN_NET -s $LAN_NET -j MARK --set-mark 1
  195.  
  196. for net in $LOCAL_NETS;
  197. do
  198. iptables -t mangle -A qos_tc -s $net -d $LAN_NET -j MARK --set-mark 2
  199. iptables -t mangle -A qos_tc -d $net -s $LAN_NET -j MARK --set-mark 2
  200. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement