|
这两天,将实验室里的网关从win+winroute改成用redhat9 +iptables.功能是带着实验室里的其它电脑上网,然后将收费IP过滤掉!
我写的脚本如下:
- #!/bin/sh
- PATH=$PATH:/usr/sbin:/sbin
- #
- #eth0 ->outside
- #eth1 ->inside
- # define var
- intra="192.168.0.0/24"
- myip="202.118.247.106"
- #download the web file
- wget -O tmp.htm http://hitsun.hit.edu.cn/zxiplist.htm
- #open ip_forward
- echo "open ip_forward..."
- echo 1 > /proc/sys/net/ipv4/ip_forward
- #clear rules and init
- echo "set iptables rules..."
- iptables -F INPUT
- iptables -F OUTPUT
- iptables -F FORWARD
- iptables -F POSTROUTING -t nat
- iptables -F POSTROUTING -t mangle
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
- iptables -P FORWARD DROP
- iptables -A INPUT -i eth0 -s $intra -j DROP
- iptables -A FORWARD -i eth0 -s $intra -j DROP
- #以下为过滤收费ip
- cat tmp.htm |grep -o '[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}' >ip.txt
- fip=`awk -f awkfile ip.txt`
- for x in $fip
- do
- iptables -A INPUT -i eth0 -s $x -j ACCEPT
- iptables -A OUTPUT -o eth0 -s $myip -d $x -j ACCEPT
- iptables -A FORWARD -i eth0 -s $x -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A FORWARD -i eth1 -s $intra -d $x -j ACCEPT
- done
- # iptables -A FORWARD -j DROP
- iptables -A INPUT -i eth1 -s $intra -j ACCEPT
- iptables -A OUTPUT -o eth1 -d $intra -j ACCEPT
- #以下为ip转发
- iptables -t nat -A POSTROUTING -s $intra -o eth0 -j SNAT --to $myip
- #日志记录
- #iptables -t mangle -A POSTROUTING -j LOG --log-level debug --log-prefix "MANGLE OUT:"
- echo "bak and save ..."
- mv /etc/sysconfig/iptables ./iptables.bak
- iptables-save > /etc/sysconfig/iptables
复制代码
awkfile如下
- {
- if(NR % 3 ==1)
- network=$0
- else if(NR %3 ==0)
- {
- netmask= $0
- OFS="/"
- print network,netmask
- }
- }
复制代码
先用wget将那个免费列表的IP获取下来,然后用grep和gawk生成所要的格式.最后用iptables加入规则.
但是使用这个脚本之后,每天总还有十多K的收费流量(通过学校的帐号查出来).而且时间也很怪
15:00 15:10 15:20或是18:00之后,很整的时间,而且每天都不一样.
不知道问题出在什么地方了,一定思路也没有 哪位大哥能给我点tip呢? |
|