Vps架设OpenVPN教程及经验总结

2010年4月17日 分类: 网来往事

  

前几天花了35在老X主机买了个VPS,速度感觉一般,配置还算不错,于是不能便宜了他,所以研究起OpenVPN,搭建一个特殊的VPN。

为什么说这个VPN特殊呢,特殊在于是OpenVPN,OpenVPN可以在openvz的VPS上跑,比起PPTP,PPTP只能在xen的架构跑,而大多数VPS是基于OpenVPN的。

另外,VPN走的是DNS端口,这个的好处就是如果学校有计费系统,或者周围有电信,移动的WIFI热点,多数情况下是可以越过计费系统直接上网的。

其次,主机在国外,作为AtGFW用。

(不知道什么是AtGFW?参考http://lolis.info/2010-04/thread-618-1-1.html

感谢:

black-xstar博主的教程这里(与本文操作稍有不同)

小樱(summerlucky) 提供技术支持

雷锋群内所有为VPN贡献精力,贡献网速,不辞辛苦测试的人。

 

环境声明:

下文,输入的命令以         标注。

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-4.noarch.rpm

成功后就可以用yum直接安装了。

以下为shell记录

[[email protected] ~]# 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 <[email protected]>” 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

比如/etc/openvpn/easy-rsa/2.0,则运行:   cd /etc/openvpn/easy-rsa/2.0

 如果locate无回显,请输入

find / -name easy-rsa

取得的路径就是openvpn的安装路径

以下为shell记录:

[[email protected] easy-rsa]# cd /etc/openvpn/easy-rsa/2.0

[[email protected] 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=”[email protected]

修改完毕后,按下esc返回查看模式,按下shift+; 输入:   并在:后输入wq   回车。

反馈:

 “vars” 68L, 1664C written

使设置生效:输入. Vars

Shell:

[[email protected] 2.0]# . vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

 如果此部分上下有错误提示,请按照错误提示的指令进行操作,即可正常build!

接着创建服务器证书:

./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:

[[email protected] 2.0]# ./build-dh

Generating DH parameters, 1024 bit long safe prime, generator 2

This is going to take a long time

………………………………………………+.+……………………………………………+…………..+………………………………………………………..+……………………………………………………………………………………………………………+……………………………………………………………………………………………………………………………………………………………..+………………………………………………..+…………………………………………………………………………………………………+………………….+………………………………………………..+………….+……………………………………………………………………………………………………………………………..++*++*++*

[[email protected] 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

然后保存。以上配置均可在winscp修改。

返回ssh,接着输入vi /etc/sysctl.conf

老规矩,找到net.ipv4.ip_forward 将后面的0改成1  保存。

 警告!如果出现连接VPN后连不上外网,ping不通除服务器IP外的IP的情况,请将该文件下net.ipv4.tcp_syncookies = 1一项加上#号注释掉。

防火墙配置:

输入iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source 你的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用户发现有问题,不妨注释掉这两行。

到此,配置完成。

欢迎提出意见和建议,共同交流。

标签: , , , , , , , , , , , , ,

71 条评论 于 “Vps架设OpenVPN教程及经验总结”

  1. 2010年4月17日21:42
    1

    弄了半天还坏掉了……
    寻求合租

    • 灵曦
      2010年4月17日21:47
      2

      有意合租

  2. 2010年4月17日21:42
    3

    沙发!

  3. 2010年4月17日21:44
    4

    很好。。周一直接把你这文章给我BOSS看~

    • 灵曦
      2010年4月17日21:48
      5

      保留版权哦~~

  4. 2010年4月17日22:02
    6

    代碼刷屏 (#‵′) 

    • 灵曦
      2010年4月17日22:24
      7

      刷。。刷屏?哪呢?

  5. 2010年4月17日22:32
    8

    学习了

  6. 2010年4月17日23:07
    9

    在群里折腾了一两天终于搞好了啊

  7. 2010年4月17日23:50
    10

    哇塞!技术文啊,一定要研究研究,学习

  8. 2010年4月18日13:10
    11

    我自己在win7下,不要最后两行也能用。注意要管理员身份来运行哦。
    最后两行只是改变添加路由表的方式,在极少部分情况下是可能需要。

    • 灵曦
      2010年4月18日13:19
      12

      恩,是通过route添加几条路由表的,我去掉这两条就连接后没效果,所以贴出来了。管理员身份是必须的,否则会出问题。

  9. 2010年4月18日13:22
    13

    那就奇怪了。
    方便的话,发一份加和不加那那两行的openvpn client log给我看看,你能看到我的email地址的。

    • 灵曦
      2010年4月18日13:32
      14

      已经发送。

  10. 2010年4月18日13:34
    15

    没玩过怎么办

  11. 2010年4月18日13:34
    16

    不懂。来坐坐。

  12. 2010年4月18日17:02
    17

    俺的神,高技术

  13. 2010年4月18日19:23
    18

    推倒萝莉

  14. 2010年4月18日22:37
    19

    Copied!

    • 灵曦
      2010年4月18日22:40
      20

      cp谁的?请给出url

  15. 2010年4月19日02:15
    21

    I cannot write ZH

    • 灵曦
      2010年4月19日18:57
      22

      输入法悲剧了?

  16. 2010年4月19日11:24
    23

    呃。。学习下。还以为是在自己空间搞。

    • 灵曦
      2010年4月19日18:58
      24

      空间可以参考CGI穿墙那篇和ssh那篇

  17. 2010年4月19日12:47
    25

    萝莉,哥又来啦~~

    • 灵曦
      2010年4月19日18:59
      26

      /haixiu

  18. 2010年4月19日23:35
    27

    生日快乐哈~小萝莉。。hoho

    • 灵曦
      2010年4月19日23:42
      28

      谢谢啦,同乐同乐~ /haha

  19. 2010年4月20日00:02
    29

    挺佩服你的。

  20. 2010年4月20日00:26
    30

    说的比较专业啊!

  21. 2010年4月20日09:13
    31

    额用的是软件,你的真专业

    • 灵曦
      2010年4月20日23:10
      32

      难道我的不是基于软件了

  22. 2010年4月20日12:56
    33

    继续来水一个!~~~

    • 灵曦
      2010年4月20日12:57
      34

      请不要继续灌水

  23. 2010年4月20日14:11
    35

    这个好留个记号有空慢慢学。。。 /haha

  24. 2010年4月20日22:12
    36

    老X主机??? 35元VPS,月付的吧…
    最便宜的VPS我就知道http://burst.net/ 的,你买的是这个的吗?
    速度很差啊

    • 灵曦
      2010年4月20日22:13
      37

      恩,是那个。HTTP打开很慢,当VPN的速度还是挺快的

  25. 2010年4月20日23:40
    38

    OPEN要装客户端啊……

  26. 2010年4月22日20:54
    39

    莫名的头大。不搞了

    • 灵曦
      2010年4月22日21:00
      40

      真是的。。一点耐心都没有。。这个不难配置的说

  27. 2010年4月24日08:00
    41

    我的估计还有900多M没用呢,要是能成功的话,也开个玩玩

  28. 2010年4月25日11:43
    42

    对VPS一点都不懂啊,你的静态地址很好玩,根论坛似的

    • 灵曦
      2010年4月25日11:44
      43

      呵呵,没谁一生下来就啥都懂的!慢慢玩熟呗。伪静态那个也算个特色了,哈哈

  29. 2010年5月7日23:23
    44

    一步步弄了,可是还是不行

  30. 2010年5月13日19:51
    45

    好麻烦,不知道效果如何

    • 灵曦
      2010年5月13日22:01
      46

      麻烦么,我只是贴得很详细而已,简单一点又有人看不懂,玩技术就不能怕麻烦,不然还不如不玩

  31. 2010年5月23日16:47
    47

    强大的啊~

  32. 2010年6月3日05:00
    48

    诶。。。看样子很麻烦呢。。。
    嘛。。。WIN下能不能建OPENVPN呢
    .-= 雨宫优子的最新文章:揭秘“神奇”的手机GPS定位网站 =-.

    • 灵曦
      2010年6月3日18:50
      49

      当然可以,操作大同小异的,win可以构建pptp呢

  33. 2010年7月12日23:13
    50

    灵曦为什么不早说哇…我就不用整天找灵曦让灵曦烦啦..

    ..谢谢灵曦…最~~灵曦啦

  34. 2010年7月12日23:15
    51

    诶?以前我回复过的嘛?….

  35. 2010年7月19日10:13
    52

    我不太喜欢 Open VPN 可以说我还是喜欢 PPTP + SSL 自己搭配使用。

    • 灵曦
      2010年7月19日10:30
      53

      OpenVPN我比较喜欢自定义端口,免费上网有用,呵呵

  36. 2010年8月9日11:10
    54

    /haixiu 看的不是很懂哎,怎么办呢,还是要多多学习呀。

  37. 過客
    2011年4月18日16:53
    55

    找翻牆找到這裡來了^_^

    • 灵曦
      2011年4月18日18:11
      56

      嗯,这个可以翻哦!诶?你的邮箱真的有效嘛??

  38. 阿伟
    2011年7月13日15:04
    57

    对于Linux新手来说,确实命令不怎么明了。倒是希望看到2003上的OPEN VPN 教程

    • 灵曦
      2011年7月13日15:10
      58

      如果有命令提示符基础的话,对于shell也不会太费解的。win的配置基本没什么难度,确实很费解就找找教程吧,需要的话我也可以写教程试一试

      • 阿伟
        2011年7月14日12:05
        59

        嗯,谢谢,我去看看相关文章吧 不懂了 再来请教你。

  39. 阿伟
    2011年7月18日17:01
    60

    研究了几天 最后问题出在服务器配置文件和客户端配置文件。。
    如果你方便的话,可否帮我写下配置文件,顺便出一篇2003的open vpn 的文章。。可以用我的VPS。。麻烦了

  40. 2012年2月7日11:48
    61

    这个教程看得我蛋疼啊,太多了

  41. 2012年8月13日15:17
    62

    试过四五个教程全部失败…….于是这次还是不行….T_T

  42. 李好
    2013年4月20日23:28
    63

    谢谢

  43. 李好
    2013年4月20日23:30
    64

    表示看得我晕乎晕乎的

  44. 呵呵
    2013年4月21日12:02
    65

    好吧,其实我是来看浏览器信息的

  45. 周成
    2013年4月24日20:17
    66

    这是转的吧

    • 灵曦
      2013年4月24日20:22
      67

      原创的啊,不过有引用寒星的,再加上自己修改和修复的。引用的源文章有标明

  46. John
    2014年7月6日19:39
    68

    和dns2tcp 比较,都是通过DNS来越过认证,不晓得访问速度是否一样!!!

灵曦:请留下点什么嗯~