#!/bin/bash
###
##regard
#default output iptables policy file name is "iptables_policy",Please completed renamed
#default output mac bandding file name is "mac_policy",please completed renamed
###
start_ip=0
end_ip=10
ip_n=0
## ip_n is subnet [ example 192.168.iP_n.x ]
###
echo "#######" |>iptables_policy
echo "#######" |>mac_policy
###----------------------------------------------------------------------------
###                        SCRIPT    HEADER
###----------------------------------------------------------------------------
echo "#!/bin/bash"                                                       >> iptables_policy
echo "##############"                                            >> iptables_policy
echo "## MTU=1500(1.464k),500/s = 150 package per  \second," >>iptables_policy
echo "## So,500/s=730KB/s"                                       >> iptables_policy
echo "###"                                                                   >> iptables_policy
echo "in_net=eth0"                                                        >> iptables_policy
echo "out_net=eth1"                                                     >> iptables_policy
echo "speed=400"                                                         >> iptables_policy
echo "# flush iptables "                                                  >> iptables_policy
echo "iptables -F FORWARD"                                     >> iptables_policy
echo ""                                                                         >> iptables_policy
echo "iptables -P FORWARD ACCEPT"                     >> iptables_policy
echo "iptables -A FORWARD -i eth0 -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT"            >> iptables_policy
echo "###"                                                                   >> iptables_policy
echo "#iptables [-A -I -N -E -D -Z -R -F -P ] [ -i -o -s -d -p -m -j -f ] [ACCEPT DROP ]"       >> iptables_policy
echo "###"                                                                    >> iptables_policy
echo "#!/bin/bash"                                                         >> mac_policy
echo "##this scrpit is add_mac_policy_program"           >> mac_policy
echo "####"                                                                  >> mac_policy
echo "in_net=eth0"                                                         >> mac_policy
echo "###"                                                                   >> mac_policy
echo "# arp -i [interface] -s [IP][MAC] -d [IP]"              >> mac_policy

###----------------------------------------------------------------------------
###                        PRIGROM
###----------------------------------------------------------------------------

###
# default iptables SSH ACCEPT
#iptables -F INPUT
#iptables -P INPUT FORWARD
#iptables -P OUTPUT ACCEPT
#iptables -t filter -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -t filter -A INPUT -i eth1 -s -p tcp --dport 22 -j ACCEPT
##############
 while [ $start_ip -le $end_ip ]
# echo "[ $start_ip -gt $end_ip ]"
 do
    if [ $start_ip -eq 254 ]
               then
                       ip_n=$(($ip_n + 1))
                       start_ip=1
                       end_ip=$(($end_ip - 253))
                      #reserve end_ip.254 (SSH control port)
               fi
   echo "#iptables -A FORWARD -i" '$in_net' "  -d 192.168.$ip_n.$start_ip -m limit --limit" '$speed/s' "-j ACCEPT" >> iptables_policy
   echo "#arp -i" '$in_net' " -s 192.168.$ip_n.$start_ip "                                      >> mac_policy
   ##display
   echo "#iptables -A FORWARD add 192.168.$ip_n.$start_ip   [OK] ; arp -i [ interface ] -s 192.168.$ip_n.$start_ip    [OK] "
 start_ip=$(($start_ip + 1 ))
 done
echo "iptables -A FORWARD -i" '$in_net' "-j DROP" >> iptables_policy
echo "output succeed ,please modify iptables_policy file and mac_policy file"
######
##set iptables_policy [ chmod u+x ] with mac_policy [ chmod u+x ]
chmod u+x iptables_policy
chmod u+x mac_policy

 

 

由于原脚本用EditPlus 所写,个别缩进再上述脚本中有问题

使用时请更改脚本的相关项