文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>新写一个iptables脚本

新写一个iptables脚本

时间:2005-12-24  来源:lichuanhua

#!/bin/sh
#iptables.sh
#Project by lch, 2005-1-25
#在此脚本中,eth0为外网地址,eth1为内网地址

#载入这个模块,可以使远程客户访问防火墙后面的被动模式FTP,或者NAT用户访问远程被动模式FTP
/sbin/modprobe ip_nat_ftp

#载入这个模块,可以使本机上的FTP支持被动模式,这样只开TCP/21就可以了
/sbin/modprobe ip_conntrack_ftp

#设置系统允许包转发,如果想让系统启动自动支持转发
  echo 1 > /proc/sys/net/ipv4/ip_forward

#提取出外网ip地址
  WANIP="`ifconfig eth0|awk -F: '/inet/{print $2}'|awk '{print $1}'`"

#提取出内网ip地址
  LANIP="`ifconfig eth1|awk -F: '/inet/{print $2}'|awk '{print $1}'`"

#请设定自己需要开放的端口,设置需要开放的端口
  PORT1="36000"
  PORT2="56000"

#设置内网的网段
LAN_NET=" "

#设置地址转换到内网的地址
addr1=" "

#设置端口映射内网的地址
addr2=" "

#设置外网地址要映射的的端口N1
N1=" "

#设置端口映射到内网的端口
N2=" "

#清除表的所有规则
  iptables -F
  iptables -t nat -F
  iptables -X
  iptables -t nat -X  

#设置INPUT链默认规则为DROP
  iptables -P INPUT DROP

#设置OUTPUT链默认规则为ACCEPT
  iptables -P OUTPUT ACCEPT

#设置FORWARD链默认规则为DROP
  iptables -p FORWARD DROP 

#这个是保持已连接状态的数据包和允许程序派生的数据访问
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#开启LINUX自带syn-flood抵御机制进行防护
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#设置需要开放的端口PORT1 和 PORT2
 if [ -s $PORT1 ]
   then
     iptables -A INPUT -p tcp -i eth1 --dport $PORT1 -j ACCEPT
   else
     echo "Your PORT1 environment is not set"
 fi
 
 if [ -s $PORT2 ]
   then
      iptables -A INPUT -p tcp -i eth1 --dport $PORT2 -j ACCEPT
   else
      echo "Your PORT2 environment is not set"
 fi

#下面是做NAT地址转换,做端口映射和地址映射相关
#做NAT转发,可以有两种方法
#可以用iptables -t nat -A POSTROUTING -s $LAN_NET -o $WAN_ETH -j SNAT --to $WANIP来使某个内网达到共享上网的功能
  if [ -s $LAN_NET ]
     then
    #下面这个命令使LAN_NET这个内网网段实现共享上网功能
          iptables -t nat -A POSTROUTING -s $LAN_NET -j MASQUERDE
     else
          echo "Your LAN_NET environment is not set"
  fi
 

#使其内网36000和56000端口通过,LAN_NET指一个内网的网段
    if [ -s $LAN_NET ]
      then
         iptables -A FORWARD -p tcp -s $LAN_NET -m multiport --dports 36000,56000 -j ACCEPT
      else
         echo "Your LAN_NET environment is not set"
      fi
#如果需要指定某个网段,多个端口。则iptables -A FORWARD -p tcp -s a.b.c.d/n -m multiport --dports port1,port2.. -j ACCEPT

#使其内网36000和56000端口通过,LAN_NET指一个内网的网段
      if [ -s $LAN_NET ]
         then
            iptables -A FORWARD -p tcp -s $LAN_NET -m multiport --dports 36000,56000 -j ACCEPT
         else
             echo "Your LAN_NET environment is not set"
      fi
  #如果需要指定某个网段,则iptables -A FORWARD -p tcp -s a.b.c.d/n -m multiport --dports port1,port2.. -j ACCEPT

#做ip地址转换,使访问外网WANIP指向内网addr1地址
   if [ -s $WANIP ] && [ -s $addr1 ]
     then
       iptables -t nat -A PREROUTING -p tcp -d $WANIP -j DNAT --to $addr1
     else
        echo "You environment is not set"
   fi

#做端口映射,使访问外网地址WANIP的端口N1映射到内网地址addr2的端口N2上
   if [ -s $WANIP ] && [ -s $N1 ] && [ -s $addr2 ] && [ -s $N2 ]
      then
        iptables -t nat -A PREROUTING -P tcp -d $WANIP --dport $N1 -i eth1 -j DNAT --to $addr2:$N2
      else
         echo "You environment is not set"
   fi
相关阅读 更多 +
排行榜 更多 +
马里奥赛车世界游戏手机版下载

马里奥赛车世界游戏手机版下载

赛车竞速 下载
无畏契约皮肤开箱器手游下载

无畏契约皮肤开箱器手游下载

休闲益智 下载
旭日之城官方正版下载

旭日之城官方正版下载

策略塔防 下载