Thanck you for your help!
I noticed the ipset tools and I tried to use the
CONNMARK but I don''t know how to verify if bitwise
manipulation works. The IP list is random and the
router is an Athlon at 1200 MHz with 64 MB of SDRAM
and a PIO mode 4 harddisk.
After marking for destination, the packets are marked
for priorization. I tried to use the dsmark and some
ingress policing but I''ve faild to understand how they
work. Also I''m in a hurry and I try to use what I know
for now. Since I have to shape for two speeds, now
I''ve discovered the --limit filter in iptables and I
try to match packets based on their speeds.
Each connected client has its own class on dev eth1.
There are 38 clients now. On eth2 I shape based on
connection ports. Audio/video, chat and interactive
traffic (and connection control packets) have higher
priority. Here are my script and configuration files
(is best viewd unwraped with kwrite):
#!/bin/bash
### firewall.sh ###
# firewall
# TODO: make a README for admin-users, how to add
# clients with public and privat IPs from dhcpd
and metropolitan addresses
# use ipset for address and port grouping
# boost speeds, ports forward, etc.
# http://gentoo-wiki.com/HOWTO_Packet_Shaping
# http://lartc.org/howto
# http://linuxgazette.net/103/odonovan.html
# http://www.netfilter.org/documentation/
# http://www.knowplace.org/shaper/
# http://linux-ip.net/articles/Traffic-Control-HOWTO/
#
http://howtos.linux.com/howtos/Traffic-Control-HOWTO/intro.shtml
# http://andthatsjazz.org:8/lartc/
# programs
ip=/usr/sbin/ip
ipt=/usr/sbin/iptables
ipt_s=/usr/sbin/iptables-save
ipt_r=/usr/sbin/iptables-restore
ips=/usr/sbin/ipset
tc=/usr/sbin/tc
# interfaces
EXT1=eth0
EXT1IP=first external IP
GW1=our gateway''s IP
NetP1=our ISP''s local network
# 64 public space addresses
PUB1Min=first usable public IP
PUB1Max=last usable public IP
#EXT2#EXT1IP#GW2#NetP2
INT1=eth1
INT1IP=192.168.101.1
INT1Mask=255.255.255.0
INT1Bcast=public space broadcast address (not in ISP''s
LAN)
INT1Net=192.168.101.255
INT2=eth2
INT2IP=10.0.0.1
INT2Mask=255.255.255.0
INT2Bcast=10.0.0.255
INT2Net=10.0.0.0
# markers
MARK_NET=0x0 # packets for Internet
MARK_MAN=0x1 # packets for Metropolitan
# interfaces'' aliasses
NETWORK=81.196.157;DEV=eth0
ip address add 172.22.3.112 dev eth0
for IP in $( cat
~adminus/etc/ip_internet/ext1_aliases.conf | grep -v
\# ); do
$ip addr del $NETWORK.$IP/32 dev $DEV
2>/dev/null >/dev/null
done
for IP in $( cat
~adminus/etc/ip_internet/ext1_aliases.conf | grep -v
\# ); do
$ip addr add $NETWORK.$IP/26 brd $NETWORK.255
dev $DEV
done
echo " 2. Proxy ARP"
# proxy ARP
echo 1 >/proc/sys/net/ipv4/conf/$EXT1/proxy_arp
#echo 1 >/proc/sys/net/ipv4/conf/$EXT2/proxy_arp
echo 1 >/proc/sys/net/ipv4/conf/$INT1/proxy_arp
#echo 1 >/proc/sys/net/ipv4/conf/$INT1/proxy_arp
for IP in $( cat
~adminus/etc/ip_local/pub_ips_on_int1.conf | grep -v
\# ); do
$ip route del $IP dev $INT1 2>/dev/null >/dev/null
$ip route add $IP dev $INT1
done
for IP in $( cat
~adminus/etc/ip_local/priv_ips_on_int1.conf | grep -v
\# ); do
$ip route del $IP dev $INT2 2>/dev/null >/dev/null
$ip route add $IP dev $INT2
done
$ipt -t raw -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -t filter -F
### ### ###
### raw ###
### ### ###
### ### ###
### nat ###
### ### ###
### PREROUTING ###
#$ipt -t nat -A PREROUTING -i $INT1 -p tcp --dport 80
-j REDIRECT --to-port 3128
echo " forward ports (5 ports/IP)"
NETWORK=192.168.101;NETID1=21;NETID2=22;NETID3=23;NETID4=24;NETID5=25;
# 20 <= NETID <= 65
for IP in $( cat ~adminus/etc/portfwd.conf | grep -v
\# ); do
$ipt -t nat -A PREROUTING -d $EXT1IP -p tcp -m tcp
--dport $NETID1$IP -j DNAT --to-destination
$NETWORK.$IP:$NETID1$IP
$ipt -t nat -A PREROUTING -d $EXT1IP -p tcp -m tcp
--dport $NETID2$IP -j DNAT --to-destination
$NETWORK.$IP:$NETID2$IP
$ipt -t nat -A PREROUTING -d $EXT1IP -p tcp -m tcp
--dport $NETID3$IP -j DNAT --to-destination
$NETWORK.$IP:$NETID3$IP
$ipt -t nat -A PREROUTING -d $EXT1IP -p tcp -m tcp
--dport $NETID4$IP -j DNAT --to-destination
$NETWORK.$IP:$NETID4$IP
$ipt -t nat -A PREROUTING -d $EXT1IP -p tcp -m tcp
--dport $NETID5$IP -j DNAT --to-destination
$NETWORK.$IP:$NETID5$IP
done
### POSTROUTING ###
echo " nat POSTROUTING"
#$ipt -t nat -A POSTROUTING -s $INT2Net/$INT2Mask -j
MASQUERADE --to-ports 20000:30000
$ipt -t nat -A POSTROUTING -s $INT1Net/$INT1Mask -o
$EXT1 -j SNAT --to-source $PUB1Min-$PUB1Max
$ipt -t nat -A POSTROUTING -s $INT2Net/$INT2Mask -o
$EXT1 -j SNAT --to-source $PUB1Min-$PUB1Max
$ipt -t nat -A POSTROUTING -s 10.0.0.100 -j SNAT
--to-source 81.196.157.200
$ipt -t nat -A POSTROUTING -s 10.0.0.99 -j SNAT
--to-source 81.196.157.200
### ### ### ###
### mangle ###
### ### ### ###
echo " mangle"
### PREROUTING ###
# mark for QOS
cat ~adminus/bin/marks | $ipt_r
~adminus/bin/mac.sh
### ### ### ###
### qdiscs ###
### ### ### ###
# building traffic classes and ingress filters
# speeds
ROOT_NET_RATE=500kbit
ROOT_NET_CEIL=$ROOT_NET_RATE
BULK_NET_RATE=1kbit
BULK_NET_CEIL=128kbit
ROOT_MAN_RATE=95Mbit
ROOT_MAN_CEIL=$BULK_NET_RATE
BULK_MAN_RATE=512kbit
BULK_MAN_CEIL=90Mbit
# markers
MARK_NET=0x0 # Internet packet
MARK_MAN=0x1 # Metropolitan packet
echo " qdisc del"
$tc qdisc del dev $EXT1 ingress 2>/dev/null>/dev/null
#$tc qdisc del dev $EXT2 ingress 2>/dev/null>/dev/null
$tc qdisc del dev $INT1 ingress 2>/dev/null>/dev/null
$tc qdisc del dev $INT2 ingress 2>/dev/null>/dev/null
$tc qdisc del dev $EXT1 root 2>/dev/null>/dev/null
#$tc qdisc del dev $EXT2 root 2>/dev/null>/dev/null
$tc qdisc del dev $INT1 root 2>/dev/null>/dev/null
$tc qdisc del dev $INT2 root 2>/dev/null>/dev/null
echo " qdisc add EXT1 egress "
$tc qdisc add dev $EXT1 root handle 1: htb default
FF01
echo " Internet-caffe"
$tc class add dev $EXT1 parent 1: classid 1:1 htb
rate 500kbit ceil 500kbit # Internet
$tc class add dev $EXT1 parent 1: classid 1:2 htb
rate 95Mbit ceil 95Mbit # Metropolitan
$tc class add dev $EXT1 parent 1:1 classid 1:7 htb
rate 140kbit ceil 500kbit prio 2 # a/v net trafic
$tc class add dev $EXT1 parent 1:1 classid 1:5 htb
rate 50kbit ceil 500kbit prio 2 # chat net trafic
$tc class add dev $EXT1 parent 1:1 classid 1:3 htb
rate 100kbit ceil 500kbit prio 2 # www net trafic
$tc class add dev $EXT1 parent 1:2 classid 1:8 htb
rate 35Mbit ceil 90Mbit prio 2 # a/v man trafic
$tc class add dev $EXT1 parent 1:2 classid 1:6 htb
rate 5Mbit ceil 90Mbit prio 2 # chat man trafic
$tc class add dev $EXT1 parent 1:2 classid 1:4 htb
rate 20Mbit ceil 90Mbit prio 2 # www man trafic
$tc class add dev $EXT1 parent 1:1 classid 1:FF01 htb
rate 10kbit ceil 500kbit prio 3 # bulk net trafic
$tc class add dev $EXT1 parent 1:2 classid 1:FF00 htb
rate 30Mbit ceil 90Mbit prio 3 # bulk man trafic
$tc qdisc add dev $EXT1 parent 1:FF01 handle 2: sfq
perturb 10
$tc qdisc add dev $EXT1 parent 1:FF00 handle 3: sfq
perturb 10
echo "qdisc add $EXT1 ingress"
$tc qdisc add dev $EXT1 ingress
# Metropolitan ingress
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 0 handle 7 fw police rate 10Mbps burst 16k
continue flowid :1 # A/V in MAN
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 1 handle 5 fw police rate 10Mbps burst 16k
continue flowid :1 # chat in MAN
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 2 handle 3 fw police rate 10Mbps burst 16k
continue flowid :1 # www in MAN
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 4 handle 1 fw police rate 90Mbps burst 16k
continue flowid :1 # bulk in MAN
echo "CLIENTS";date >~adminus/log/clase_eth0.log;echo
"CLIENTS" >>~adminus/log/clase_eth0.log
$tc class add dev $EXT1 parent 1:1 classid 1:9 htb
rate 140kbit ceil 500kbit prio 2 # bulk clients'' net
$tc class add dev $EXT1 parent 1:1 classid 1:10 htb
rate 20Mbit ceil 90Mbit prio 2 # bulk clients''
M.A.N.
$tc class add dev $EXT1 parent 1:1 classid 1:11 htb
rate 140kbit ceil 500kbit prio 1 # special clients''
net
$tc class add dev $EXT1 parent 1:1 classid 1:12 htb
rate 20Mbit ceil 90Mbit prio 1 # special clients''
M.A.N.
echo " bulk clients'' classes";echo " bulk
clients''
classes" >>~adminus/log/clase_eth0.log
NETWORK=192.168;NET=101;NETID=16 # edit this after
copy-paste
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # don''t edit
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
for IP in $( cat
~adminus/etc/ip_local/priv_ips_on_int1.conf | grep -v
\# ); do
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class add dev $EXT1 parent 1:9 classid
1:$hIDnet_PRIV$hIP htb rate $BULK_NET_RATE ceil
$BULK_NET_CEIL prio 3
$tc class add dev $EXT1 parent 1:10 classid
1:$hIDman_PRIV$hIP htb rate $BULK_MAN_RATE ceil
$BULK_MAN_CEIL prio 3
echo "$EXT1: $NETWORK.$NET.$IP net
(1:9): 1:$hIDnet_PRIV$hIP min: $BULK_NET_RATE max:
$BULK_NET_CEIL man (1:10): 1:$hIDman_PRIV$hIP
min: $BULK_MAN_RATE max: $BULK_MAN_CEIL">>~adminus/log/clase_eth0.log
done
echo " special clients'' classes";echo " special
clients'' classes" >>~sorin/log/clase_eth0.log
echo " ip-uri private";echo " private
IPs">>~adminus/log/clase_eth0.log
NETWORK=192.168;NET=101;NETID=16 # edit this after
copy-paste; 16 < NETID < 192; NETID = network''s
criterium number;
# Set different NETIDs for all private or public
networks; you can set the same NETID for one private
network and one public network
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # don''t edit
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
IP=2 # 192.168.101.002 FOCUS DESIGN
echo "$EXT1: $NETWORK.$NET.$IP net (1:11):
1:$hIDnet_PRIV$hIP min: 64kbit max: 256kbit man
(1:12): 1:$hIDman_PRIV$hIP min: 768kbit max:
90Mbit" >>~adminus/log/clase_eth0.log
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class replace dev $EXT1 parent 1:11 classid
1:$hIDnet_PRIV$hIP htb rate 64kbit ceil 256kbit prio
2 # replace because the class'' ID (handle) exists from
the previous network
$tc class replace dev $EXT1 parent 1:12 classid
1:$hIDman_PRIV$hIP htb rate 768kbit ceil 90Mbit prio
2 # replace because the class'' ID (handle) exists from
the previous network
echo " ip-uri publice";echo " public
IPs">>~adminus/log/clase_eth0.log
NETWORK=81.196;NET=157;NETID=63 # edit this after
copy-paste
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # astea nu le
edita
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
IP=253 # 81.196.157.253 VIDEO CHAT
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
echo "$EXT1: $NETWORK.$NET.$IP net
(1:11): 1:$hIDnet_PUB$hIP min: 64kbit max: 256kbit
man (1:12) 1:$hIDman_PUB$hIP min: 768kbit max:
90Mbit" >>~adminus/log/clase_eth0.log
$tc class add dev $EXT1 parent 1:11 classid
1:$hIDnet_PUB$hIP htb rate 64kbit ceil 256kbit prio 1
$tc class add dev $EXT1 parent 1:12 classid
1:$hIDman_PUB$hIP htb rate 768kbit ceil 90Mbit prio 1
IP=254 # 81.196.157.254 VIDEO CHAT
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
echo "$EXT1: $NETWORK.$NET.$IP net
(1:11): 1:$hIDnet_PUB$hIP min: 64kbit max: 256kbit
man (1:12) 1:$hIDman_PUB$hIP min: 768kbit max:
90Mbit" >>~adminus/log/clase_eth0.log
$tc class add dev $EXT1 parent 1:11 classid
1:$hIDnet_PUB$hIP htb rate 64kbit ceil 256kbit prio 1
$tc class add dev $EXT1 parent 1:12 classid
1:$hIDman_PUB$hIP htb rate 768kbit ceil 90Mbit prio 1
# Internet ingress
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 0 handle 6 fw police rate 190kbps burst 16k drop
flowid :1 # A/V in Internet
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 1 handle 4 fw police rate 62kbps burst 32k drop
flowid :1 # chat in Internet
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 2 handle 2 fw police rate 126kbps burst 64k drop
flowid :1 # www in Internet
#$tc filter add dev $EXT1 parent FFFF: protocol ip
prio 3 u32 match ip dst 0.0.0.0/0 police rate 126kbit
burst 1k drop flowid :1 # bulk in Internet
echo " qdisc add INT1 ingress"
#$tc qdisc add dev $INT1 ingress
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 0 handle 0x7 fw flowid :1 police rate 10Mbps
burst 16k continue # A/V in MAN
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 1 handle 0x5 fw flowid :1 police rate 10Mbps
burst 16k continue # chat in MAN
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 2 handle 0x3 fw flowid :1 police rate 10Mbps
burst 16k continue # www in MAN
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 4 handle 0x1 fw flowid :1 police rate 95Mbps
burst 16k continue # bulk in MAN
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 0 handle 0x6 fw flowid :1 police rate 190kbps
burst 16k continue # A/V in Internet
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 1 handle 0x4 fw flowid :1 police rate 62kbps
burst 32k continue # chat in Internet
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 2 handle 0x2 fw flowid :1 police rate 126kbps
burst 64k continue # www in Internet
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 3 u32 match ip dst 0.0.0.0/0 police rate 126kbit
burst 1k drop flowid :1 # bulk in Internet
echo " qdisc add INT1 egress"
$tc qdisc add dev $INT1 root handle 1: htb default
FF01
$tc class add dev $INT1 parent 1: classid 1:1 htb
rate 250kbit ceil 500kbit # class Internet
$tc class add dev $INT1 parent 1: classid 1:2 htb
rate 45Mbit ceil 90Mbit # class Metropolitan
$tc class add dev $INT1 parent 1:1 classid 1:3 htb
rate 125kbit ceil 500kbit # class bulk-clients
Internet
$tc class add dev $INT1 parent 1:2 classid 1:4 htb
rate 22Mbit ceil 90Mbit # class bulk-clients
Metropolitan
$tc class add dev $INT1 parent 1:1 classid 1:5 htb
rate 125kbit ceil 500kbit # class special-clients
Internet
$tc class add dev $INT1 parent 1:2 classid 1:6 htb
rate 22Mbit ceil 90Mbit # class special-clients
Metropolitan
$tc class add dev $INT1 parent 1: classid 1:FF01 htb
rate 1kbit ceil 500kbit # class bulk-traffic
Internet
$tc class add dev $INT1 parent 1: classid 1:FF00 htb
rate 1kbit ceil 90Mbit # class bulk-traffic
Metropolitan
$tc qdisc add dev $INT1 parent 1:FF01 handle 2: sfq
perturb 10 # Stochastic Fairness for bulk traffic in
Internet
$tc qdisc add dev $INT1 parent 1:FF00 handle 3: sfq
perturb 10 # Stochastic Fairness for bulk traffic in
Metropolitan
echo "CLIENTS";date >~adminus/log/clase_eth1.log;echo
"CLIENTI" >>~adminus/log/clase_eth1.log
echo " bulk clients";echo " bulk
clients">>~adminus/log/clase_eth1.log
NETWORK=192.168;NET=101;NETID=16 # edit this after
copy-paste
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # don''t edit
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
for IP in $( cat
~adminus/etc/ip_local/priv_ips_on_int1.conf | grep -v
\# ); do
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class add dev $INT1 parent 1:3 classid
1:$hIDnet_PRIV$hIP htb rate $BULK_NET_RATE ceil
$BULK_NET_CEIL prio 3 # bulk clients'' speed in
Internet
$tc class add dev $INT1 parent 1:4 classid
1:$hIDman_PRIV$hIP htb rate $BULK_MAN_RATE ceil
$BULK_MAN_CEIL prio 3 # bulk clients'' speed in
Metropolitan
echo "$INT1: $NETWORK.$NET.$IP net
(1:3): 1:$hIDnet_PRIV$hIP min: $BULK_NET_RATE
max: $BULK_NET_CEIL man (1:4):
1:$hIDman_PRIV$hIP min: $BULK_MAN_RATE max:
$BULK_MAN_CEIL" >>~sorin/log/clase_eth1.log
done
echo " special clients" >>~adminus/log/clase_eth1.log
echo " privat IPs" >>~adminus/log/clase_eth1.log
NETWORK=192.168;NET=101;NETID=16 # edit this after
copy-paste
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # astea nu le
edita
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
IP=2 # 192.168.101.002 FOCUS DESIGN
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class replace dev $INT1 parent 1:5 classid
1:$hIDnet_PRIV$hIP htb rate 64kbit ceil 256kbit prio
2 # speed for client FOCUS DESIGN in Internet
$tc class replace dev $INT1 parent 1:6 classid
1:$hIDman_PRIV$hIP htb rate 768kbit ceil 90Mbit prio
2 # speed for client FOCUS DESIGN in Metropolitan
echo "$INT1: $NETWORK.$NET.$IP net
(1:5): 1:$hIDnet_PRIV$hIP min: 64kbit max:
256kbit man (1:6): 1:$hIDman_PRIV$hIP
min: 768kbit max: 90Mbit">>~adminus/log/clase_eth1.log
echo " public IPs" >>~adminus/log/clase_eth1.log
NETWORK=81.196;NET=157;NETID=63 # edit this after
copy-paste (this and the next 3 rows are must be
copied for each used ip in the above network)
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # don''t edit
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #
don''t edit
IP=253 # 81.196.157.253 VIDEO CHAT 1 (this and the
next 3 rows are must be copied for each used ip in the
above network)
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class add dev $INT1 parent 1:5 classid
1:$hIDnet_PUB$hIP htb rate 64kbit ceil 256kbit prio 1
# speed for client VIDEO CHAT 1 in Internet
$tc class add dev $INT1 parent 1:6 classid
1:$hIDman_PUB$hIP htb rate 768kbit ceil 90Mbit prio 1
# speed for client VIDEO CHAT 1 in Metropolitan
echo "$INT1: $NETWORK.$NET.$IP net
(1:5): 1:$hIDnet_PUB$hIP min: 64kbit max: 256kbit
man (1:6) 1:$hIDman_PUB$hIP min: 768kbit
max: 90Mbit" >>~adminus/log/clase_eth1.log
IP=254 # 81.196.157.254 VIDEO CHAT 2 (this and the
next 3 rows are must be copied for each used ip in the
above network)
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$tc class add dev $INT1 parent 1:5 classid
1:$hIDnet_PUB$hIP htb rate 64kbit ceil 256kbit prio 1
# speed for client VIDEO CHAT 2 in Internet
$tc class add dev $INT1 parent 1:6 classid
1:$hIDman_PUB$hIP htb rate 768kbit ceil 90Mbit prio 1
# speed for client VIDEO CHAT 2 in Metropolitan
echo "$INT1: $NETWORK.$NET.$IP net
(1:5): 1:$hIDnet_PUB$hIP min: 64kbit max: 256kbit
man (1:6) 1:$hIDman_PUB$hIP min: 768kbit
max: 90Mbit" >>~adminus/log/clase_eth1.log
echo "CLIENTS done."
echo " qdisc add INT2 root "
$tc qdisc add dev $INT2 root handle 1: htb default
FF01
$tc class add dev $INT2 parent 1: classid 1:1 htb
rate 500kbit ceil 500kbit
$tc class add dev $INT2 parent 1: classid 1:2 htb
rate 95Mbit ceil 95Mbit
$tc class add dev $INT2 parent 1:1 classid 1:7 htb
rate 140kbit ceil 500kbit prio 0 # a/v net trafic
$tc class add dev $INT2 parent 1:1 classid 1:5 htb
rate 50kbit ceil 500kbit prio 0 # chat net trafic
$tc class add dev $INT2 parent 1:1 classid 1:3 htb
rate 100kbit ceil 500kbit prio 0 # www net trafic
$tc class add dev $INT2 parent 1:2 classid 1:8 htb
rate 35Mbit ceil 90Mbit prio 0 # a/v man trafic
$tc class add dev $INT2 parent 1:2 classid 1:6 htb
rate 5Mbit ceil 90Mbit prio 0 # chat man trafic
$tc class add dev $INT2 parent 1:2 classid 1:4 htb
rate 20Mbit ceil 90Mbit prio 0 # www man trafic
$tc class add dev $INT2 parent 1:1 classid 1:FF01 htb
rate 10kbit ceil 500kbit prio 3 # bulk net trafic
$tc class add dev $INT2 parent 1:2 classid 1:FF00 htb
rate 30Mbit ceil 90Mbit prio 3 # bulk man trafic
$tc qdisc add dev $INT2 parent 1:FF01 handle 2: sfq
perturb 10
$tc qdisc add dev $INT2 parent 1:FF00 handle 3: sfq
perturb 10
echo " qdisc add INT2 ingress"
$tc qdisc add dev $INT2 ingress
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 0 handle 0x7 fw flowid :1 police rate 10Mbps
burst 16k drop # A/V in MAN
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 1 handle 0x5 fw flowid :1 police rate 10Mbps
burst 16k drop # chat in MAN
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 2 handle 0x3 fw flowid :1 police rate 10Mbps
burst 16k drop # www in MAN
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 4 handle 0x1 fw flowid :1 police rate 95Mbps
burst 16k drop # bulk in MAN
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 0 handle 0x6 fw flowid :1 police rate 190kbps
burst 16k drop # A/V in Internet
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 1 handle 0x4 fw flowid :1 police rate 62kbps
burst 32k drop # chat in Internet
#$tc filter add dev $INT2 parent FFFF: protocol ip
prio 2 handle 0x2 fw flowid :1 police rate 126kbps
burst 64k drop # www in Internet
#$tc filter add dev $INT1 parent FFFF: protocol ip
prio 3 u32 match ip dst 0.0.0.0/0 police rate 126kbit
burst 1k drop flowid :1 # bulk in Internet
### POSTROUTING ###
echo "POSTROUTING"
echo "filters - CLASSIFY $EXT1 egress"
$ipt -t mangle -F POSTROUTING
$ipt -t mangle -A POSTROUTING -m mark --mark 0x7 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:7 # A/V
in MAN
$ipt -t mangle -A POSTROUTING -m mark --mark 0x5 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:5 #
chat in MAN
$ipt -t mangle -A POSTROUTING -m mark --mark 0x3 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:3 # www
in MAN
$ipt -t mangle -A POSTROUTING -m mark --mark 0x6 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:8 # A/V
in Internet
$ipt -t mangle -A POSTROUTING -m mark --mark 0x4 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:6 #
chat in Internet
$ipt -t mangle -A POSTROUTING -m mark --mark 0x2 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:4 # www
in Internet
$ipt -t mangle -A POSTROUTING -m mark --mark 0x0 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:FF01 #
bulk in Internet
$ipt -t mangle -A POSTROUTING -m mark --mark 0x1 -o
$EXT1 -s 10.0.0.0/24 -j CLASSIFY --set-class 1:FF00 #
bulk in MAN
echo "filters - CLASSIFY $INT1 egress";date>~adminus/log/filtre.log;echo "filters - CLASSIFY
$INT1 egress" >>~adminus/log/filtre.log
echo " bulk clients";echo " bulk
clients">>~adminus/log/filtre.log
NETWORK=192.168;NET=101;NETID=16 # edit this after
copy-paste (this row downto done must be copied for
each served network)
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # don''t edit
# The first bit in class'' MINOR is: 1 = metropolitan;
0 = Internet
# The second bit in class'' MINOR is: 1 = IP public; 0
= IP privat
# Urmatorii 6 biti reprezinta NETID (class number)
Atention: classes with MINOR from 1 to 6 are used by
parents on $INT1, so NETID >= 7 !!!
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# don''t edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` #don''t
edit
for IP in $( cat
~adminus/etc/ip_local/priv_ips_on_int1.conf | grep -v
\# ); do
# if IP = { 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D
E F }; then IP=0$IP; fi
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $EXT1 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PRIV$hIP # IP privat in $EXT1
Internet
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $EXT1 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDman_PRIV$hIP # IP privat in $EXT1
Metropolitan
#$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $EXT2 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PRIV$hIP # IP privat in $EXT2
Internet
#$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $EXT2 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDman_PRIV$hIP # IP privat in $EXT2
Metropolitan
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $INT1 -d $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PRIV$hIP # IP privat in $INT1
Internet
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $INT1 -d $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDman_PRIV$hIP # IP privat in $INT1
Metropolitan
echo "$NETWORK.$NET.$IP $EXT1: net:
1:$hIDnet_PRIV$hIP man: 1:$hIDman_PRIV$hIP
$INT1: net: 1:$hIDnet_PRIV$hIP man:
1:$hIDman_PRIV$hIP" >>~sorin/log/filtre.log
done
echo " special clients";echo " special
clients">>~sorin/log/filtre.log
NETWORK=81.196;NET=157;NETID=63 # edit this after
copy-paste (downto done is for every served network)
ID_NET=0;ID_MAN=128;ID_PRIV=0;ID_PUB=64 # do not edit
IDnet_PRIV=$[$ID_NET+$ID_PRIV+$NETID];IDman_PRIV=$[$ID_MAN+$ID_PRIV+$NETID];IDnet_PUB=$[$ID_NET+$ID_PUB+$NETID];IDman_PUB=$[$ID_MAN+$ID_PUB+$NETID]
# do not edit
hIDnet_PRIV=`printf "%x"
$IDnet_PRIV`;hIDman_PRIV=`printf "%x"
$IDman_PRIV`;hIDnet_PUB=`printf "%x"
$IDnet_PUB`;hIDman_PUB=`printf "%x" $IDman_PUB` # do
not edit
for IP in $( cat
~adminus/etc/ip_local/pub_ips_on_int1.conf | grep -v
\# ); do
# if IP = { 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D
E F }; then IP=0$IP; fi
hNET=`printf "%x" $NET`;hIP=`printf "%x" $IP`
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $EXT1 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PUB$hIP # IP public in $EXT1
Internet
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $EXT1 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDman_PUB$hIP # IP public in $EXT1
Metropolitan
#$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $EXT2 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PUB$hIP
#$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $EXT2 -s $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hID_man_PUB$hIP
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_NET -o $INT1 -d $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDnet_PUB$hIP # IP public in $INT1
Internet
$ipt -t mangle -A POSTROUTING -m mark --mark
$MARK_MAN -o $INT1 -d $NETWORK.$NET.$IP -j CLASSIFY
--set-class 1:$hIDman_PUB$hIP # IP public in $INT1
Metropolitan
echo "$NETWORK.$NET.$IP $EXT1: net:
1:$hIDnet_PUB$hIP man: 1:$hIDman_PUB$hIP
$INT1: net: 1:$hIDnet_PUB$hIP man:
1:$hIDman_PUB$hIP" >>~sorin/log/filtre.log
done
echo "filters - CLASSIFY $INT2 egress"
$ipt -t mangle -A POSTROUTING -m mark --mark 0x7 -o
$INT2 -j CLASSIFY --set-class 1:7
$ipt -t mangle -A POSTROUTING -m mark --mark 0x5 -o
$INT2 -j CLASSIFY --set-class 1:5
$ipt -t mangle -A POSTROUTING -m mark --mark 0x3 -o
$INT2 -j CLASSIFY --set-class 1:3
$ipt -t mangle -A POSTROUTING -m mark --mark 0x6 -o
$INT2 -j CLASSIFY --set-class 1:8
$ipt -t mangle -A POSTROUTING -m mark --mark 0x4 -o
$INT2 -j CLASSIFY --set-class 1:6
$ipt -t mangle -A POSTROUTING -m mark --mark 0x2 -o
$INT2 -j CLASSIFY --set-class 1:4
$ipt -t mangle -A POSTROUTING -m mark --mark 0x0 -o
$INT2 -j CLASSIFY --set-class 1:FF01
$ipt -t mangle -A POSTROUTING -m mark --mark 0x1 -o
$INT2 -j CLASSIFY --set-class 1:FF00
### ### ### ###
### mangle ###
### ### ### ###
### PREROUTING ###
$ipt -t mangle -F PREROUTING
echo " creem MAN, QOS si CLIENT"
$ipt -t mangle -X MAN
$ipt -t mangle -X QOS
$ipt -t mangle -N MAN
$ipt -t mangle -N QOS
$ipt -t mangle -Z MAN
$ipt -t mangle -Z QOS
$ipt -t mangle -A PREROUTING -j MAN
$ipt -t mangle -A PREROUTING -j QOS
### QOS ###
echo " TOS chat-ports"
for PORT in $( cat
~sorin/etc/ports_qdisc_prio/chat_ports.conf | grep -v
\# ); do
$ipt -t mangle -A QOS -p tcp --dport $PORT -j TOS
--set-tos Maximize-Reliability
$ipt -t mangle -A QOS -p tcp --dport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p tcp --dport $PORT -j MARK
--set-mark 0x4
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p tcp --sport $PORT -j TOS
--set-tos Maximize-Reliability
$ipt -t mangle -A QOS -p tcp --sport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p tcp --sport $PORT -j MARK
--set-mark 0x4
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --sport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --dport $PORT -j TOS
--set-tos Maximize-Reliability
$ipt -t mangle -A QOS -p udp --dport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p udp --dport $PORT -j MARK
--set-mark 0x4
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --sport $PORT -j TOS
--set-tos Maximize-Reliability
$ipt -t mangle -A QOS -p udp --sport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p udp --sport $PORT -j MARK
--set-mark 0x4
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --sport $PORT -j
RETURN
done
echo " TOS audio-video ports"
for PORT in $( cat
~sorin/etc/ports_qdisc_prio/av_ports.conf | grep -v \#
); do
$ipt -t mangle -A QOS -p tcp --dport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p tcp --dport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p tcp --dport $PORT -j MARK
--set-mark 0x6
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p tcp --sport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p tcp --sport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p tcp --sport $PORT -j MARK
--set-mark 0x6
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --sport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --dport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p udp --dport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p udp --dport $PORT -j MARK
--set-mark 0x6
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --sport $PORT -j TOS
--set-tos Minimize-Delay
$ipt -t mangle -A QOS -p udp --sport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p udp --sport $PORT -j MARK
--set-mark 0x6
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --sport $PORT -j
RETURN
done
echo " TOS www ports"
for PORT in $( cat
~sorin/etc/ports_qdisc_prio/www_ports.conf | grep -v
\# ); do
$ipt -t mangle -A QOS -p tcp --dport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p tcp --dport $PORT -j MARK
--set-mark 0x2
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p tcp --sport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p tcp --sport $PORT -j MARK
--set-mark 0x2
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --sport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --dport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p udp --dport $PORT -j MARK
--set-mark 0x2
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --dport $PORT -j
RETURN
$ipt -t mangle -A QOS -p udp --sport $PORT -j TOS
--set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p udp --dport $PORT -j MARK
--set-mark 0x2
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p udp --sport $PORT -j
RETURN
done
echo " TOS tcp flags"
$ipt -t mangle -A QOS -p tcp --tcp-flags ALL, ALL -j
MARK --set-mark 0x6
$ipt -t mangle -A QOS -p tcp --tcp-flags ALL, ALL -j
TOS --set-tos Minimize-Delay
$ipt -t mangle -A QOS -p tcp --tcp-flags ALL, ALL -j
TOS --set-tos Maximize-Throughput
$ipt -t mangle -A QOS -p tcp --tcp-flags ALL, ALL -j
TOS --set-tos Maximize-Reliability
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p tcp --tcp-flags ALL, ALL -j
RETURN
$ipt -t mangle -A QOS -j CONNMARK --save-mark
$ipt -t mangle -A QOS -p ALL -j RETURN
### MAN ###
echo " MAN mark man (order a pizza and eat till I
finish this)"
for PEER_IP in $( cat
~sorin/etc/ip_internet/peer_ips.conf | grep -v \# );
do
$ipt -t mangle -A MAN -d $PEER_IP -j MARK
--set-mark $MARK_MAN
$ipt -t mangle -A MAN -j CONNMARK --restore-mark
--mask 0xfffe
$ipt -t mangle -A MAN -d $PEER_IP -j RETURN
$ipt -t mangle -A MAN -s $PEER_IP -j MARK
--set-mark $MARK_MAN
$ipt -t mangle -A MAN -j CONNMARK --restore-mark
--mask 0xfffe
$ipt -t mangle -A MAN -s $PEER_IP -j RETURN
done
echo " MAN mark net"
$ipt -t mangle -A MAN -d 0.0.0.0/0 -j MARK --set-mark
$MARK_NET
$ipt -t mangle -A MAN -j CONNMARK --restore-mark
--mask 0xfffe
$ipt -t mangle -A MAN -d 0.0.0.0/0 -j RETURN
$ipt_s >~adminus/bin/marks
### POSTROUTING ###
if [ -x /mnt/usb/tc-restore ]; then
/mnt/usb/tc-restore
cp /mnt/usb/tc-restore ~sorin/bin/
else ~sorin/bin/tc-restore
fi
# each IP has its own class
### ### ### ###
### filter ###
### ### ### ###
### INPUT ###
echo "INPUT"
# TODO: Use ~adminus/etc/ports_input_allowed, use -m
mport --port for both direction ports if they *ARE*
equal
$ipt -t filter -P INPUT DROP
$ipt -t filter -A INPUT -i lo -j ACCEPT
$ipt -t filter -A INPUT -p tcp --sport 0:1023 -m state
--state ESTABLISHED,RELATED -j ACCEPT
$ipt -t filter -A INPUT -i lo -j ACCEPT
$ipt -t filter -A INPUT -p tcp --tcp-flags ACK ACK -j
ACCEPT
$ipt -t filter -A INPUT -m state --state ESTABLISHED
-j ACCEPT
$ipt -t filter -A INPUT -m state --state RELATED -j
ACCEPT
$ipt -t filter -A INPUT -p udp --dport 1024:65535
--sport 53 -j ACCEPT
$ipt -t filter -A INPUT -p icmp --icmp-type echo-reply
-j ACCEPT
$ipt -t filter -A INPUT -p icmp --icmp-type
destination-unreachable -j ACCEPT
$ipt -t filter -A INPUT -p icmp --icmp-type
source-quench -j ACCEPT
$ipt -t filter -A INPUT -p icmp --icmp-type
time-exceeded -j ACCEPT
$ipt -t filter -A INPUT -p icmp --icmp-type
parameter-problem -j ACCEPT
$ipt -t filter -A INPUT -p tcp -m state ! --state NEW
--sport 0:1023 -j ACCEPT
$ipt -t filter -A INPUT -p udp --sport 0:1023 -j
ACCEPT
$ipt -t filter -A INPUT -p tcp --dport ssh -j ACCEPT
$ipt -t filter -A INPUT -p tcp --dport auth -j ACCEPT
$ipt -t filter -A INPUT -p tcp --dport ftp -j ACCEPT
$ipt -t filter -A INPUT -p tcp --dport rmt -j ACCEPT
$ipt -t filter -A INPUT -p udp --dport rmt -j ACCEPT
$ipt -t filter -A INPUT -p tcp --dport ftp-data -j
ACCEPT
$ipt -t filter -A INPUT -p udp --dport time -j ACCEPT
$ipt -t filter -A INPUT -p tcp --dport http -j ACCEPT
$ipt -t filter -A INPUT -p icmp -m limit --icmp-type
echo-request --limit 3/second --limit-burst 1000 -j
ACCEPT
$ipt -t filter -A INPUT -p tcp ! -i lo --sport
2049:2050 -j DROP
$ipt -t filter -A INPUT -p tcp ! -i lo --dport
2049:2050 -j DROP
$ipt -t filter -A INPUT -p tcp ! -i lo --sport
6000:6063 -j DROP
$ipt -t filter -A INPUT -p tcp ! -i lo --dport
6000:6063 -j DROP
$ipt -t filter -A INPUT -p tcp ! -i lo --sport
7000:7010 -j DROP
$ipt -t filter -A INPUT -p tcp ! -i lo --dport
7000:7010 -j DROP
$ipt -t filter -A INPUT -p tcp --sport 1024:65535 -j
ACCEPT
$ipt -t filter -A INPUT -p tcp --dport 1024:65535 -j
ACCEPT
$ipt -t filter -A INPUT -p udp --sport 1024:65535 -j
ACCEPT
$ipt -t filter -A INPUT -p udp --dport 1024:65535 -j
ACCEPT
### FORWARD ###
echo "FORWARD"
$ipt -t filter -P FORWARD DROP
$ipt -t filter -A FORWARD -i lo -j ACCEPT
$ipt -t filter -A FORWARD -o lo -j ACCEPT
echo " ip/mac ACCEPT"
~sorin/bin/mac.sh
$ipt -t filter -A FORWARD -o $INT1 -d
$INT1Net/$INT1Mask -j ACCEPT
$ipt -t filter -A FORWARD -i $INT2 -s
$INT2Net/$INT2Mask -j ACCEPT
$ipt -t filter -A FORWARD -o $INT2 -d
$INT2Net/$INT2Mask -j ACCEPT
$ipt -t filter -A FORWARD -i $EXT1 -o $INT1 -j ACCEPT
$ipt -t filter -A FORWARD -i $EXT1 -o $INT2 -m state
--state ESTABLISHED,RELATED -j ACCEPT
$ipt -t filter -A FORWARD -i $INT1 -o $INT2 -j ACCEPT
$ipt -t filter -A FORWARD -i $INT2 -o $INT1 -j ACCEPT
#$ipt -t filter -A FORWARD -i $INT1 -o $EXT1 -j ACCEPT
# Se face pe mac address
$ipt -t filter -A FORWARD -i $INT2 -o $EXT1 -j ACCEPT
echo " connection/port ACCEPT/DROP"
#$ipt -t filter -A FORWARD -f -j ACCEPT
$ipt -t filter -A FORWARD -p tcp --tcp-flags SYN,RST
SYN -j TCPMSS --clamp-mss-to-pmtu
#$ipt -t filter -A FORWARD -p tcp --tcp-flags SYN,RST
SYN -j TCPMSS --set-mss 128
$ipt -t filter -A FORWARD -i ! $INT1 -s
$INT1Net/$INT1Mask -j DROP
$ipt -t filter -A FORWARD -i ! $INT2 -s
$INT2Net/$INT2Mask -j DROP
$ipt -t filter -A FORWARD -p icmp -d $INT1Bcast -j
DROP
$ipt -t filter -A FORWARD -p icmp -d $INT2Bcast -j
DROP
$ipt -t filter -A FORWARD -p tcp --syn -m limit
--limit 10/s -j ACCEPT
$ipt -t filter -A FORWARD -p tcp --tcp-flags
SYN,ACK,FIN,RST RST -m limit --limit 10/s -j ACCEPT
$ipt -t filter -A FORWARD -p icmp --icmp-type
echo-request -m limit --limit 3/s -j ACCEPT
$ipt -t filter -A FORWARD -p icmp --icmp-type
echo-reply -m limit --limit 3/s -j ACCEPT
$ipt -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
$ipt -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
$ipt -t filter -A FORWARD -p tcp --dport 139 -j DROP
$ipt -t filter -A FORWARD -p tcp --dport 445 -j DROP
### OUTPUT ###
echo "OUTPUT"
$ipt -t filter -P OUTPUT ACCEPT
echo "Preparing for reboot... (iptables-save)"
/usr/sbin/iptables-save >/home/adminus/iptables
A/V ports:531 554 583 7070 1754:1755 1397:1398 1516
1518 2232 4444 5555 5713:5714 6000 6010
CHAT ports: 53 5050 1863 113 529 994 6660:6667 7000 63
5190:5193 22 23 992 37 123 21 990 1517 1519 2103:2105
5222 5269 5715:5717
WWW ports (and games): 80 443 280 488 25 109:110 995
143 220 993 516 532 563 631 901 666 4557 4559 27005 27015
__________________________________
Do you Yahoo!?
Yahoo! Mail - You care about security. So do we.
http://promotions.yahoo.com/new_mail