使用“智能”路由,无缝翻墙

伟大的长城已经到了让人忍无可忍的地步,查资料,文档的时候各种无理由connection reset。连slideshare都墙让人很火光。无奈只好翻墙,我现在用的是vpn,但是开了vpn有个问题,上国内网站也要绕一圈回来,速度很慢。理想的是由网关来翻墙,而后根据访问的目标ip来走不通的路由。公司的网关我没有办法改,下面是具体的在一台redhat linux 5 网关服务器上的安装vpn作为新网关的安装步骤。

大慨步骤很简单1. 连接上vpn 2.获取中国IP列表,根据列表设置路由表,国内IP走国内网关,剩余的IP统一VPN出去。

1.安装openvpn客户端

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

yum install openvpn

而后到/etc/openvpn 目录下新建文件 vps.opvn

client
dev tap
proto tcp
remote xxx.xxx.xxx.xxx 443
resolv-retry infinite
nobind
mute-replay-warnings
redirect-gateway
ca /etc/openvpn/ca.crt
cert /etc/openvpn/rhel223.crt
key /etc/openvpn/rhel223.key
comp-lzo
verb 4

直接执行以下命令启动客户端

nohup openvpn /etc/openvpn/rhel223.ovpn &

执行ifconfig应该可以看到类似的显示,表明vpn顺利连接。

2.设置路由表

新建一个shell脚本,getip.sh  ,内容与下

#!/bin/sh

rm ip.txt
FILE=china-ip
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep ‘apnic|CN|ipv4|’ $FILE | cut -f 4,5 -d’|’|sed -e ‘s/|/ /g’ | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow–;
return(log2(x/2));
}
log2($cnt)
EOF
)

echo $ip/$mask >>ip.txt
done

新建一shell脚本,addroute.sh 内容如下:

#!/bin/bash

VPS=”209.141.50.182″
#current default gw
GW=’172.16.131.254′
CNLIST=”ip.txt”

#VPS
route add -host $VPS gw $GW
#lan addr
route add -net 172.16.130.0/23 gw $GW
#change default gw
route add default dev tun0

for i in cat $CNLIST
do
route add -net $i gw $GW
done

而后执行两个shell,路由表就应该设置完成,执行route命令应该看到如下图的结果 

3.网络设置

编辑/etc/sysctl.conf 文件,将net.ipv4.ip_forward = 0 从0改为1

而后执行sysctl -p 命令将设置生效

而后执行以下命令允许不同网卡间转发,及做nat

iptables -A FORWARD -i eth0 -o tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.16.130.0/23 -o tun0 -j MASQUERADE

到此变结束了。

在windows的客户端上执行以下命令,设置路由,将局域网内服务器指向原默认网关,而新默认网关指向新的有vpn的服务器,即可。

route delete 0.0.0.0
route add 172.6.0.0 mask 255.255.255.0 172.16.131.254
route add 172.16.130.0 mask 255.255.254.0 172.16.131.254
route add 0.0.0.0 mask 0.0.0.0 172.16.130.223

在windows 上执行tracert slideshare.net 和tracert baidu.com 看看效果吧。

爽爽的享受吧!!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据