Friday 27 August 2010

Linux IPTables Firewall #3

3o Script (iproute)

#!/bin/bash




#

# Binaries

#



PATH="/bin:/sbin:/usr/bin"



#

# QOS DOWNLOAD

#





#

# Mark Packets

#

iptables -t mangle -A SHAPEIN -p all -d $DB -j MARK --set-mark 3

iptables -t mangle -A SHAPEIN -p all -d $NICK -j MARK --set-mark 4

iptables -t mangle -A OUTPUT -o $LAN -p all -d 192.168.0.0/24 -j MARK --set-mark 5

iptables -t mangle -A SHAPEIN -p tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 1

iptables -t mangle -A SHAPEIN -p icmp -j MARK --set-mark 1

iptables -t mangle -A SHAPEIN -p tcp -m length --length :64 -j MARK --set-mark 1

iptables -t mangle -A SHAPEIN -p tcp --dport 22 -j MARK --set-mark 1 #ssh

iptables -t mangle -A SHAPEIN -p tcp --sport 22 -j MARK --set-mark 1 #ssh

iptables -t mangle -A SHAPEIN -p udp --dport 53 -j MARK --set-mark 1 #dns

iptables -t mangle -A SHAPEIN -p udp --sport 53 -j MARK --set-mark 1 #dns

iptables -t mangle -A SHAPEIN -p tcp --sport 20 -j MARK --set-mark 2 #ftp

iptables -t mangle -A SHAPEIN -p tcp --dport 20 -j MARK --set-mark 2 #ftp

iptables -t mangle -A SHAPEIN -p tcp --dport 21 -j MARK --set-mark 2 #ftp

iptables -t mangle -A SHAPEIN -p tcp --sport 21 -j MARK --set-mark 2 #ftp

iptables -t mangle -A SHAPEIN -p tcp --dport 80 -j MARK --set-mark 2 #web

iptables -t mangle -A SHAPEIN -p tcp --sport 80 -j MARK --set-mark 2 #web

iptables -t mangle -A SHAPEIN -p tcp --dport 6901 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p tcp --sport 6901 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p tcp -m tcp --sport 6891:6900 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p tcp -m tcp --dport 6891:6900 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp --dport 6901 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp --sport 6901 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp --dport 6801 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp --sport 6801 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp -m udp --sport 2001:2120 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp -m udp --dport 2001:2120 -j MARK --set-mark 2 #msn

iptables -t mangle -A SHAPEIN -p udp --sport 5060 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp --dport 5060 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp --sport 11113 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp --dport 11113 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp -m udp --sport 10300:10311 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp -m udp --sport 10300:10311 -j MARK --set-mark 2 #voipbuster

iptables -t mangle -A SHAPEIN -p udp -m udp --sport 6901:6920 -j MARK --set-mark 2 #msn-voipbuster

iptables -t mangle -A SHAPEIN -p udp -m udp --sport 6901:6920 -j MARK --set-mark 2 #msn-voipbuster

iptables -t mangle -A SHAPEIN -p tcp -m multiport --ports 6667,6668,6669,7000 -j MARK --set-mark 2 #irc

iptables -t mangle -A SHAPEIN -p tcp --dport 10001 -j MARK --set-mark 2 #dreambox

iptables -t mangle -A SHAPEIN -p tcp --sport 10001 -j MARK --set-mark 2 #dreambox



#

# Classify Packets

#



iptables -t mangle -A SHAPEIN -m mark --mark 1 -j CLASSIFY --set-class 1:10

iptables -t mangle -A SHAPEIN -m mark --mark 2 -j CLASSIFY --set-class 1:20

iptables -t mangle -A SHAPEIN -m mark --mark 3 -j CLASSIFY --set-class 1:31

iptables -t mangle -A SHAPEIN -m mark --mark 4 -j CLASSIFY --set-class 1:32

iptables -t mangle -A OUTPUT -o $LAN -p all -d 192.168.0.0/24 -m mark --mark 5 -j CLASSIFY --set-class 1:40



#

# TOS

#



iptables -t mangle -A SHAPEIN -m mark --mark 1 -j TOS --set-tos Minimize-Delay

iptables -t mangle -A SHAPEIN -m mark --mark 2 -j TOS --set-tos Maximize-Reliability

iptables -t mangle -A SHAPEIN -m mark --mark 3 -j TOS --set-tos Maximize-Throughput

iptables -t mangle -A SHAPEIN -m mark --mark 4 -j TOS --set-tos Maximize-Throughput

iptables -t mangle -A OUTPUT -o $LAN -p all -d 192.168.0.0/24 -m mark --mark 5 -j TOS --set-tos Maximize-Throughput



#

# QOS UPLOAD

#





#

# Mark Packets

#



iptables -t mangle -A SHAPEOUT -p all -s $DB -j MARK --set-mark 6

iptables -t mangle -A SHAPEOUT -p all -s $NICK -j MARK --set-mark 7

iptables -t mangle -A OUTPUT -o $INET -p all -j MARK --set-mark 8





#

# Classify Packets

#



iptables -t mangle -A SHAPEOUT -m mark --mark 6 -j CLASSIFY --set-class 1:10

iptables -t mangle -A SHAPEOUT -m mark --mark 7 -j CLASSIFY --set-class 1:20

iptables -t mangle -A OUTPUT -o $INET -m mark --mark 8 -j CLASSIFY --set-class 1:30



#

# TOS

#



iptables -t mangle -A SHAPEOUT -m mark --mark 6 -j TOS --set-tos Minimize-delay

iptables -t mangle -A SHAPEOUT -m mark --mark 7 -j TOS --set-tos Minimize-delay

iptables -t mangle -A SHAPEOUT -m mark --mark 8 -j TOS --set-tos Maximize-Throughput



# DOWNLOAD

tc qdisc add dev $LAN root handle 1: htb default 40

tc class add dev $LAN parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

tc class add dev $LAN parent 1:1 classid 1:10 htb rate 256bit ceil 10mbit prio 1

tc class add dev $LAN parent 1:1 classid 1:20 htb rate 256kbit ceil 10mbit prio 2

tc class add dev $LAN parent 1:1 classid 1:30 htb rate 512kbit ceil 10mbit prio 4

tc class add dev $LAN parent 1:30 classid 1:31 htb rate 256kbit ceil 10mbit prio 4

tc class add dev $LAN parent 1:30 classid 1:32 htb rate 256kbit ceil 10mbit prio 4

tc class add dev $LAN parent 1:1 classid 1:40 htb rate 512kbit ceil 100mbit prio 4

tc qdisc add dev $LAN parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev $LAN parent 1:20 handle 20: sfq perturb 10

tc qdisc add dev $LAN parent 1:31 handle 31: sfq perturb 10

tc qdisc add dev $LAN parent 1:32 handle 32: sfq perturb 10

tc qdisc add dev $LAN parent 1:40 handle 40: sfq perturb 10





#

# UPLOAD

tc qdisc add dev $INET root handle 1: htb

tc class add dev $INET parent 1: classid 1:1 htb rate 384kbit ceil 384kbit

tc class add dev $INET parent 1:1 classid 1:10 htb rate 32kbit ceil 384kbit prio 1

tc class add dev $INET parent 1:1 classid 1:20 htb rate 32kbit ceil 32kbit prio 8

tc class add dev $INET parent 1:1 classid 1:30 htb rate 128kbit ceil 384kbit prio 4

tc qdisc add dev $INET parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev $INET parent 1:20 handle 20: sfq perturb 10

tc qdisc add dev $INET parent 1:30 handle 30: sfq perturb 10

No comments:

Post a Comment