当前位置:Linux教程 - Linux资讯 - 网吧使用的Nat+Iptables+Squid的脚本

网吧使用的Nat+Iptables+Squid的脚本

  #!/bin/bash  # 飘飘的风于2003年7月26日修改,端口影射成功。    ###--------------------------------------------------------------------###  #以下是定义变数  ###--------------------------------------------------------------------###    PATH=/sbin:/usr/sbin:/bin:/usr/bin  RC_SQUID=/etc/rc.d/init.d/squid  EXT_IF=eth1  #外网接口,确定网卡,如果是拨号就用ppp0  INT_IF=eth0  LAN_IP_RANGE="192.168.0.0/24"  STATIC_IP="80.234.71.88"  TRUSTED_TCP_PORT="22 25 53 80 110 143 443 993 995 3389"  TRUSTED_UDP_PORT="53 3389"  ALLOWED_ICMP="0 3 3/4 4 11 12 14 16 18"    ###--------------------------------------------------------------------###  #确定iptables安装情况  ###--------------------------------------------------------------------###    which iptables &>/dev/null {  echo  echo "$(basename $0): iptables程序没有找到"  echo "请先安装好这个程序."  echo  exit 1  }    ###--------------------------------------------------------------------###  #废掉ipchains,这是针对redhat以前的版本,新版已经把iptables嵌到内核里了  ###--------------------------------------------------------------------###    lsmod grep ipchains &>/dev/null && {  echo "正在废掉ipchains服务........."  rmmod ipchains  }    ###--------------------------------------------------------------------###  #装载模块modules  ###--------------------------------------------------------------------###    echo "模块正在载人......"  modprobe ip_tables &>/dev/null {  echo -n "$(basename $0): ip_tables模块载人失败"  echo "请检查"  exit 3  }  for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_conntrack_*.o  do  module=$(basename $file)  modprobe ${module%.*} &>/dev/null  done  for file in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/ip_nat_*.o  do  module=$(basename $file)  modprobe ${module%.*} &>/dev/null  done    # ------------- 端口开启 ------------  echo "开启所要的端口...."  iptables -N services  for PORT in $TRUSTED_TCP_PORT; do  iptables -A services -i $EXT_IF -p tcp --dport $PORT -j ACCEPT  done  for PORT in $TRUSTED_UDP_PORT; do  iptables -A services -i $EXT_IF -p udp --dport $PORT -j ACCEPT  done  #----ipforwarding--------  echo "打开foward功能"  echo "1" > /proc/sys/net/ipv4/ip_forward    #动态ip使用  #  #echo "1" > /proc/sys/net/ipv4/ip_dynaddr  #这里是动态ip实现nat共享必改之处    ###---------------------------------------------------###  #清除先前的设定  ###---------------------------------------------------###  echo "正在清除先前的设定......."  #清除预定表filter中,所有规则链中的规则  iptables -F  #清除预定表filter中,使用者自定链中的规则  iptables -X    #清除预定表mangle中,所有规则链中的规则  iptables -F -t mangle  #清除预定表mangle中,使用者自定链中的规则  iptables -X -t mangle    #清除nat表中的规则  iptables -F -t nat  iptables -X -t nat  iptables -Z -t nat    ###---------------------------------------------------###  #设定预设规则  ###---------------------------------------------------###  #预设规则要么为全部丢弃,要么为全部接受  #本列为全部丢弃,然后逐步开放,这是安全系数很高的设法  #若目标为DROP,则policy设为ACCEPT;若目标为ACCEPT,则policy设为DROP    iptables -P INPUT DROP  iptables -P OUTPUT DROP  iptables -P FORWARD DROP    #TCP的设定  #  #我们丢弃坏的TCP包  #  iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"  iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP    #局域网共享的实现  #iptables -t nat -A POSTROUTING -o $EXT_IF -s $LAN_IP_RANGE -j SNAT --to-source $STATIC_IP  iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE  echo "局域网共享的已实现,请试用局域网机器"    #这一步实现局域网内部机对外部网开放  #凡对$STATIC_IP:80连线者,则转址到192.168.0.100:80  iptables -t nat -A PREROUTING -d 80.234.71.88 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:80  iptables -A FORWARD -p tcp -d 192.168.0.100 --dport 80 -j ACCEPT  iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp -d 192.168.0.100 --dport 80 -j SNAT --to 192.168.0.1  #192.168.0.250装有win2003,提供远程桌面服务  iptables -t nat -A PREROUTING -d 80.234.71.88 -p tcp --dport 3389 -j DNAT --to-destination 192.168.0.250:3389  iptables -A FORWARD -p tcp -d 192.168.0.250 --dport 3389 -j ACCEPT  #允许内网机使用外网机的IP访问内网机,把内网机的IP转换成网关IP  iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp -d 192.168.0.250 --dport 3389 -j SNAT --to 192.168.0.1    #允许要转向的包  iptables -A FORWARD -i $INT_IF -j ACCEPT  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT  iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT  #对于不管来自哪里的ip碎片都进行控制,允许每秒通过100个碎片  iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT  #icmp包通过的控制,防止icmp黑客攻击  iptables -A FORWARD -p udp -d $LAN_IP_RANGE -i $EXT_IF -j ACCEPT  #这一条是针对oicq等使用udp服务而接收所有的udp包    #开放主机的ssh port 22,使内部机以ssh连至外部  iptables -A OUTPUT -o $EXT_IF -p tcp -s $STATIC_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT  iptables -A INPUT -i $EXT_IF -p tcp ! --syn -s any/0 --sport 22 -d $STATIC_IP --dport 1024:65535 -j ACCEPT    #防止外网用内网ip欺骗  iptables -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP  iptables -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP  iptables -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP    #-----------透明代理------------  $RC_SQUID status grep pid &>/dev/null && {  echo "透明代理实现"  INT_IP=$(ifconfig grep $INT_IF -A 1 awk '/inet/ {print $2}' sed -e s/addr\://)  if [ -z "$INT_IP" ]; then  echo  echo "$(basename $0): $INT_IF没有IP存在"  echo "请检查$INT_IF是否正确配置了"  echo  exit 3  fi  }  exit 0  ## EOS
[1] [2] 下一页 

(出处:http://www.sheup.com)


上一页 [1] [2]