据说,53 DUP端口的VPN可以突破CMZZ和CHINANET的验证而免费上网,所以研究起OpenVPN,搭建一个特殊的VPN。
为什么说这个VPN特殊呢,特殊在于是OpenVPN,OpenVPN可以在openvz的VPS上跑,比起PPTP,PPTP只能在xen的架构跑,而大多数VPS是基于OpenVPN的。
另外,VPN走的是DNS端口,这个的好处就是如果学校有计费系统,或者周围有电信,移动的WIFI热点,多数情况下是可以越过计费系统直接上网的。
环境声明:
下文,输入的命令以 标注。
VPS内核:Linux vps.lolis.info 2.6.18-164.15.1.el5.028stab068.9 #1 SMP Tue Mar 30
18:07:38 MSD 2010 i686 i686 i386 GNU/Linux
Tun的支持。
Tun的支持请在VPS面板启用,比如我的是enable tun/tap
Ssh权限(root)
启用Tun后,在ssh中输入:
cat /dev/net/tun
反馈:
cat: /dev/net/tun: File descriptor in bad state 则说明安装正常。
53端口:
输入:
service named stop以使53端口不被DNS占用。
**存在争议的iptables_nat模块
Black-xstar(下文简称star)文中表示:
另外如果你需要连上OpenVPN后能访问互联网,还需要iptables_nat模块支持,用这个命令检测:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o
venet0 -j MASQUERADE
如果返回信息为:iptables: Unknown error 4294967295 说明正常,否则同样需要发个ticket让VPS公司帮忙开通。
但是,我的VPS输入上述命令没有回显,与文中提到的反馈不同,但是照常可以试用。
请保证有充足的带宽以及内存。
VPN部署:
首先登入ssh,在ssh中输入:
rpm-Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
成功后就可以用yum直接安装了。
以下为shell记录
[root@vps ~]# yum -y install
openvpn
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* epel: serverbeach1.fedoraproject.org
* base: mirror.trouble-free.net
* updates: mirror.trouble-free.net
* addons: mirror.cisp.com
* extras: mirror.atlanticmetro.net
epel
|
3.4 kB 00:00
ebdb729a3d0909032214d70acf18e2b36ab08a21-primary.sqlite.bz2
| 2.5 MB 00:00
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
–> Running transaction check
—> Package openvpn.i386 0:2.1.1-2.el5 set to be updated
–> Processing Dependency: liblzo2.so.2 for package: openvpn
–> Processing Dependency: libpkcs11-helper.so.1 for package: openvpn
–> Running transaction check
—> Package lzo.i386 0:2.02-2.el5.1 set to be updated
—> Package pkcs11-helper.i386 0:1.07-2.el5.1 set to be updated
–> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================
Package
Arch
Version
Repository
Size
====================================================================================================================================
Installing:
openvpn
i386
2.1.1-2.el5
epel
371 k
Installing for dependencies:
lzo
i386
2.02-2.el5.1
epel
63 k
pkcs11-helper
i386
1.07-2.el5.1
epel
51 k
Transaction Summary
====================================================================================================================================
Install 3
Package(s)
Update 0
Package(s)
Remove 0
Package(s)
Total download size: 485 k
Downloading Packages:
(1/3):
pkcs11-helper-1.07-2.el5.1.i386.rpm
| 51 kB 00:00
(2/3):
lzo-2.02-2.el5.1.i386.rpm
| 63 kB 00:00
(3/3):
openvpn-2.1.1-2.el5.i386.rpm
| 371 kB 00:00
————————————————————————————————————————————
Total
2.1 MB/s | 485 kB 00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID
217521f6
Importing GPG key 0x217521F6 “Fedora EPEL <epel@fedoraproject.org>”
from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing :
pkcs11-helper
[1/3]
Installing :
lzo
[2/3]
Installing :
openvpn
[3/3]
Installed: openvpn.i386 0:2.1.1-2.el5
Dependency Installed: lzo.i386 0:2.02-2.el5.1 pkcs11-helper.i386
0:1.07-2.el5.1
Complete!
完毕后,执行:
locate easy-rsa
回显:
locate: can not open `XXXXXXXXX’: No such file or directory
将XXXXXXXXXX中内容复制,执行:
Cd XXXXXXXXXXX
找出来了原来在这里:/usr/share/openvpn/easy-rsa 大家应该都是一样的。
我们把easy-rsa这个文件夹移出来,用命令:cp -R /usr/share/openvpn/easy-rsa /etc/openvpn/
比如/etc/openvpn/easy-rsa/2.0,则运行: cd /etc/openvpn/easy-rsa/2.0
以下为shell记录:
[root@vps easy-rsa]# cd
/etc/openvpn/easy-rsa/2.0
[root@vps 2.0]# vi vars
然后,我们用vi打开了vars文件,首先输入I 使之成为insert模式
然后操作方向键,调到文件末尾,按照实际修改
export KEY_COUNTRY=”CN”
export KEY_PROVINCE=”GD”
export KEY_CITY=”GZ”
export KEY_ORG=”Lolita Ltd.”
export
KEY_EMAIL=”loli@lolis.info”
修改完毕后,按下esc返回查看模式,按下shift+; 输入: 并在:后输入wq 回车。
反馈:
”vars” 68L, 1664C written
使设置生效:输入. Vars
Shell:
[root@vps 2.0]# . vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on
/etc/openvpn/easy-rsa/2.0/keys
首先创建CA证书
./build-ca
接着创建服务器证书:
./build-key-server server
一路回车,直到Sign the certificate? [y/n]: 输入y 回车
1 out of 1 certificate requests certified, commit? 输入y 回车
建立客户端证书:
./build-key user
过程同服务器,也是直到
Sign the certificate? [y/n]: 输入y 回车
1 out of 1 certificate requests certified, commit? 输入y 回车
到此就建立了一个客户端了,如果需要多客户端,请更换user到其他用户名即可。
然后执行:
./build-dh
Shell:
[root@vps 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
………………………………………………+.+……………………………………………+…………..+………………………………………………………..+……………………………………………………………………………………………………………+……………………………………………………………………………………………………………………………………………………………..+………………………………………………..+…………………………………………………………………………………………………+………………….+………………………………………………..+………….+……………………………………………………………………………………………………………………………..++*++*++*
[root@vps 2.0]#
运行winSCP(请自行下载),将/etc/openvpn/2.0/keys中的文件下载到本地。
输入: cd
/etc/openvpn/ 返回到OpenVPN文件夹,输入vi server.conf
创建配置文件。输入i到可写模式,将编写好的配置文件写入。以下是我的配置文件,请按需修改。
port 53
proto udp
dev tun
ca
/etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert
/etc/openvpn/easy-rsa/2.0/keys/server.crt
key
/etc/openvpn/easy-rsa/2.0/keys/server.key
dh
/etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push “redirect-gateway def1″
push “dhcp-option DNS 8.8.8.8″
push
“dhcp-option DNS 8.8.4.4″
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3
crl-verify
/etc/openvpn/easy-rsa/2.0/keys/crl.pem
然后保存。以上配置均可在winscp修改。
返回ssh,接着输入vi /etc/sysctl.conf
老规矩,找到net.ipv4.ip_forward 将后面的0改成1 保存。
防火墙配置:
输入iptables -t nat -A POSTROUTING -s
10.8.0.0/24 -j SNAT –to-source YOUR-IP
将your ip改成你服务器的IP即可。
执行:
/etc/init.d/iptables save
/etc/init.d/iptables restart
/usr/sbin/openvpn –config
/etc/openvpn/server.conf &
没有报错,在本地连接一遍,能成功即可(下文介绍如何配置客户端。)
添加自启动:
vi /etc/rc.local
最后加上 /usr/sbin/openvpn
–config /etc/openvpn/server.conf &
保存,重启服务器。
到此服务器端配置完毕。
客户端配置:
安装OpenVPN,win安装很简单,不再累述。
首先回头看看下载回来的KEY文件夹,挑出ca.crt,user.key,user.crt
找到C:\Program
Files\OpenVPN\config(如果默认的话)
把以上3个文件放进去,并创建user.ovpn文件。
以下是我的配置文件,请按需修改:
client
dev tun
proto udp
remote “SERVER-IP” 53
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert user.crt
key user.key
ns-cert-type server
comp-lzo
verb 3
route-method exe
route-delay 2
保存。
这里不同于xstar的配置,区别是多了后面两行,因为我发现少了这两行win7和vista不能使用。如果xp用户发现有问题,不妨注释掉这两行。
到此,配置完成。
欢迎提出意见和建议,共同交流。
现在有很多wifi都采用在线认证,就是类似学校wifi的那种,随便输个网站,然后跳出一个web认证的页面,输入用户名密码。移动 电信 联通的wifi也基本都是这种类型的。
在认证之前,客户机向外发送的任何请求都会被拦截,http请求的话就跳转到认证网页。但是唯独有个特殊的端口,在认证前默认是放行的。。。就是UPD 53端口。这个是dns的默认端口。我那学校的wifi试过,在不认证的时候,nslookup能返回正常的值,也就是说这个端口默认是开放的。
利用这个开放的端口和udp协议的tunnel软件,应该就能实现绕过那个认证系统。
所以,我这些想,用OpenVPN的UPD模式,开设一个vpn,然后把端口设为53,客户端是不是就可以绕过这些wifi的认证,连接到vpn,实现突破。
不过貌似要解决这种突破也好办,UDP53 端口只允许dns请求包通过,就GG了。
☆─────────────────────────────────────☆
yulei666 (鱼雷导弹No.1) 于 (Fri Mar 26 17:28:30 2010) 提到:
在基于学校wifi的环境下已经测试成功
用的openvpn 采用UDP53端口
服务器端linux 连接学校有线网
客户端连接学校wifi 未验证,后面的图就知道了
服务器端配置
附件: QQ截图未命名.bmp (223062 字节)
客户端效果图
能ping通服务器端 samba没问题 图上那个电影就是samba在线播放的 ftp也没问题~
服务器端的NAT没搞定,如果搞定了就彻底突破了。。囧
联系客服