分类: LINUX
2007-07-13 10:23:34
根据实验室的网络状况,如果需要安装ADSL必须让校内和一些学术网站走校内IP,其它IP走ADSL,所以需要做双线策略路由。最终的脚本如下:
!/bin/sh #This Script is
run at startup,DO NOT RUN ME another time! INNET=192.168.3.0/24 EXTIF=ppp0 FREEIF=eth0 INIF=eth1 INTERFACES="lo
eth0 eth1 ppp0" FREEGW=202.118.xxx.254 INETIP=202.118.yyy.170 SERVICES=22 IP=/sbin/ip IPTABLES=/sbin/iptables ADSL_START=/sbin/adsl-start #重启网络,使连接ADSL的网卡down /etc/init.d/network
restart echo
"Starting ADSL....." sleep 5 #ADSL连接拨号 $ADSL_START #P_ADDR=`ifconfig
ppp0 | grep inet | cut -d : -f 2 | cut -d " " -f 1` #清除所有iptables规则,Drop掉所有的包 $IPTABLES -F $IPTABLES -P
INPUT DROP $IPTABLES -P
OUTPUT DROP $IPTABLES -P
FORWARD DROP #打开IP转发 echo 1 >
/proc/sys/net/ipv4/ip_forward /sbin/modprobe
ip_tables #/sbin/modprobe
ip_nat_ftp /sbin/modprobe
ip_nat_ftp /sbin/modprobe ip_conntrack_ftp #更改路由表 #拨号后,将默认路由改为了网通的线路;正好我们只需要添加教育网的路由就可以了 $IP route add
via $FREEGW dev eth0 table free #ip rule add to
202.118.0.0/16 pref 10000 table free $IP rule add to
202.120.0.0/15 pref 10000 table free $IP rule add to
202.112.0.0/13 table free $IP rule add to
219.216.0.0/13 table free $IP rule add to
59.64.0.0/12 table free $IP rule add to
166.111.0.0/16 table free $IP rule add to
198.81.200.2/32 table free $IP rule add to
140.234.29.0/24 table free $IP rule add to
140.98.193.0/24 table free $IP rule add to
140.98.194.0/24 table free $IP rule add to
208.215.179.0/24 table free $IP rule add to
192.58.150.0/24 table free #while read i;
do #ip=`echo $i |
awk '{print $1}'` #mask=`echo $i
|awk '{print $2}'` #$IPTABLES -A
FreeIP -d $ip/$mask -j ACCEPT #done <
/etc/freeip #ip rule add
fwmark 1 table free $IPTABLES -t nat
-F $IPTABLES -t
mangle -F $IPTABLES -A
FORWARD -s 192.168.3.0/24 -j ACCEPT $IPTABLES -A
FORWARD -d 192.168.3.0/24 -j ACCEPT #允许的IP列表 #iptables -t nat
-A POSTROUTING -s 192.168.3.0/24 -d $free_ip -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 202.120.0.0/15 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 219.216.0.0/13 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 202.112.0.0/13 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 59.64.0.0/12 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 166.111.0.0/16 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 198.81.200.2/32 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 140.234.29.0/24 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 140.98.193.0/24 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 140.98.194.0/24 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 208.215.179.0/24 -j SNAT --to $INETIP $IPTABLES -t nat
-A POSTROUTING -s 192.168.3.0/24 -d 192.58.150.0/24 -j SNAT --to $INETIP #IP伪装,通过ADSL上网 $IPTABLES -t nat
-A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE ip route flush
cache #内网的请求全部允许 $IPTABLES -A
INPUT -i $INIF -j ACCEPT $IPTABLES -A
OUTPUT -d 192.168.3.0/24 -j ACCEPT #$IPTABLES -A
INPUT -p tcp --dport 22 -j ACCEPT for x in
${INTERFACES} do echo 1 >
/proc/sys/net/ipv4/conf/${x}/rp_filter done #以下是一些防止检测到共享上网的规则######################################### #关闭161,162端口防止SNMP检测 $IPTABlES -A
INPUT -p all --dport 161 -j DROP $IPTABLES -A
INPUT -p all --dport 162 -j DROP |