新写一个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
#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
相关阅读 更多 +
排行榜 更多 +