openVPN手把手(俗称免流量教学)第一弹

特此声明,本文主要来自 “搞机男”的博客

原理:
各大运营商为了方便用户进行流量查询、缴费等操作,设置了当用户浏览一部分运营商自己的网站时不需要耗费流量,而各大运营商识别用户访问的网址是否为这部分网址时,出现了问题,导致识别错误,主要是这个X-Online-Host字段上的问题。当用户通过OpenVPN免流时,在你的VPS和移动设备之间打通一个隧道,你的所有网络请求都先经过OpenVPN传给VPS,然后VPS把你请求的东西拿到之后又通过OpenVPN传回来。免流的关键就在于,

了解了原理就很好办了,首先就是在VPS上搭建OpenVPN服务器端,鉴于速度需要,最好是国内的VPS。比如腾讯云的学生机,一个月才一块钱,或者阿里云的云翼计划,这些学生服务器优惠,我在前面的文章里面都介绍过了。下面进入实际操作环节

第一步,安装必要的软件和证书生成工具

sudo apt-get -y install openvpn libssl-dev openssl easy-rsa

~~~查看软件版本

openvpn –version

官方源里的最高版本目前为2.3.2,这个版本号,建议记住。确认版本无误后,我们开始制作需要的证书文件。

第二步:制作CA证书(下面分别为文件路径以及相应的操作)

创建文件夹

/etc/openvpn/ sudo mkdir /etc/openvpn/easy-rsa/

然后把/usr/share/easy-rsa/目录下的所有文件全部复制到/etc/openvpn/easy-rsa/下

sudo cp -r /usr/share/easy-rsa/*   /etc/openvpn/easy-rsa/

切换至 超级管理员 ROOT账户 进行操作

sudo vi /etc/openvpn/easy-rsa/varsexport KEY_COUNTRY=”国家CN”export KEY_PROVINCE=”省份BJ”export KEY_CITY=”城市Beijing”export KEY_ORG=”机构Random”export KEY_EMAIL=”你的邮箱abc@abc.com”export KEY_OU=”姓名Tink”export KEY_NAME=“vpntink”

vars文件主要用于设置证书的相关组织信息,具体内容可以根据自己的实际情况自行修改。下面使用source 命令使其载入生效

source vars

在当前文件夹下键入下列命令:

./clean-all (执行clean-all命令会删除,当前目录下的keys文件夹。)./build-ca

一路按回车键即可。制作完成后,我们可以查看keys目录。

cd keys/

如果以上操作无误的话应该可以看到已经生成了ca.crt和ca.key两个文件,其中ca.crt就是我们所需要的CA证书。至此,CA证书制作完毕。现在把该CA证书的文件复制到openvpn的启动目录下。

cp keys/ca.crt /etc/openvpn/

第三步 制作Server端证书

    ./build-key-server vpntink(这里的vpntink,就是我们前面vars文件中设置的KEY_NAME)    cd keys/

一路回车即可。可如果以上操作无误的话应该可以看到生成的vpntink.crt、vpntink.key和vpntink.csr三个文件。其中vpntink.crt和vpntink.key两个文件是我们所需要的。现在再为服务器生成加密交换时的Diffie-Hellman文件。

./build-dh

一路回车。然后再去keys查看一下,正常情况下应该可以看到已经生成的dh2048.pem文件。
以上操作完毕后,把复制到目录下。命令如下:

cp keys/vpntink.crt keys/vpntink.key keys/dh2048.pem /etc/openvpn/

第四步:制作Client端证书

./build-key tinksvpn

还是一路回车。上述命令中的tinksvpn,是客户端证书的名称。这个是可以进行自定义的。
回到keys文件夹查看,正常情况下应该可以看到已经生成的tinksvpn.csr、tinksvpn.crt和tinksvpn.key这个三个文件。其中tinksvpn.crt和tinksvpn.key两个文件是我们要使用的。

至此,Client端证书就制作完毕

第五步:配置Server端

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/cd /etc/openvpn/gzip -d server.conf.gz

下面修改配置文件

vi /etc/openvpn/server.confport 1194proto tcpdev tunca  ca.crtcert vpntink.crtkey vpntink.keydh dh2048.pemserver 10.18.0.0 255.255.255.0ifconfig-pool-persist ipp.txtpush "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 114.114.114.114"push "dhcp-option DNS 114.114.115.115"duplicate-cnkeepalive 10 120comp-lzouser nobodygroup nogrouppersist-keypersist-tunstatus openvpn-status.logverb 3

接下来配置流量转发

iptables -t nat -A POSTROUTING -s 10.18.0.0/24 -o eth0 -j MASQUERADE (eth0根据你的网卡修改)echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf

配置文件修改完毕后,我们可以尝试启动OpenVPN。

/etc/init.d/openvpn start

如果没有报错,那么服务端已经ok了。

第六步: 配置Client端

利用各种方法复制这三个文件到本地电脑中,比如利用python起一个临时的web服务,或者用scp传回来。

 /etc/openvpn/easy-rsa/keys/ca.crt/etc/openvpn/easy-rsa/keys/tinksvpn.crt/etc/openvpn/easy-rsa/keys/tinksvpn.key

用记事本分别打开这三个文件,同时新建一个client.ovpn文件,

clientdev tunproto tcpresolv-retry infinitenobindpersist-keypersist-tunns-cert-type servercomp-lzoverb 3remote 服务器IP 1194<ca>ca.crt的内容复制到这里</ca><cert>tinksvpn.crt的内容复制到这里</cert><key>tinksvpn.key的内容复制到这里</key>########免流代码########http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "GET http://rd.go.10086.cn"http-proxy-option EXT1 "X-Online-Host: rd.go.10086.cn"http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "X-Online-Host: rd.go.10086.cn"http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "Host: rd.go.10086.cn"http-proxy-option EXT1 "GET http://rd.go.10086.cn"http-proxy-option EXT1 "Host: rd.go.10086.cn"http-proxy 10.0.0.172 80########免流代码#########其中需要修改服务器IP为自己的服务器IP#ca、cert、key的内容需要按上面那三个文件的内容完整的复制进去。#免流代码每个地区每个运营商都不尽相同#需要自己不断尝试,找到最适合自己地区的那个。#下面是一些常用的免流代码。#联通http-proxy-retryhttp-proxy 10.0.0.172 80http-proxy-option EXT1 "X-Online-Host: wap.10010.com"http-proxy-option EXT2 "Host: wap.10010.com"#电信http-proxy-retryhttp-proxy 10.0.0.200 80http-proxy-option EXT1 "X-Online-Host: ltetp.tv189.com"http-proxy-option EXT2 "Host: ltetp.tv189.com"#移动-默认http-proxy-retryhttp-proxy 10.0.0.172 80http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "GET http://rd.go.10086.cn"http-proxy-option EXT1 "X-Online-Host: rd.go.10086.cn"http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "X-Online-Host: rd.go.10086.cn"http-proxy-option EXT1 "POST http://rd.go.10086.cn"http-proxy-option EXT1 "Host: rd.go.10086.cn"http-proxy-option EXT1 "GET http://rd.go.10086.cn"http-proxy-option EXT1 "Host: rd.go.10086.cn"#移动-彩信http-proxy-retryhttp-proxy 10.0.0.172 80http-proxy-option EXT1 "POST http://mmsc.monternet.com"http-proxy-option EXT1 "GET http://mmsc.monternet.com"http-proxy-option EXT1 "X-Online-Host: mmsc.monternet.com"http-proxy-option EXT1 "CMCC: mmsc.monternet.com"

至此,Client端的配置文件制作完成。这个也就是网上卖的那种所谓的配置文件,一个月只许你用10G的样子,限制应该是在服务器端下的,所以没法破,除非直接公婆他的服务器。这个难度就有点大了。

最后,你需要在你的手机上下载安装OpenVPN的Android版或者iOS版(需要美区AppleID),然后将这个client.ovpn导入到手机中,并用OpenVPN打开,然后连接就OK了。安卓的openVPN可以点击进去找到对应的地方下载即可,亲测下载的是个apk。看样子没毛病~~~

本文由 华盟网 作者:小龙 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论

// 360自动收录 // 360自动收录