注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Computer Science

I Pressed My Words Here. Will You Read ?

 
 
 

日志

 
 

OpenVPN搭建经历  

2013-06-30 23:51:11|  分类: With Ubuntu |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
实验环境:服务端为Ubuntu 10.04 和客户端为Ubuntu 12.10
参考:
OpenVPN Server 配置参考:
在CentOS的VPS下安装OpenVPN http://www.black-xstar.com/blog/693.html
Linux VPS Ubuntu 系统配置指南 http://wiki.ubuntu.com.cn/Vps
注:直接用ssh替代putty连接服务器(ssh root@*.*.*.*)
OpenVPN Client 配置参考:
Ubuntu Server Guide - VPN - OpenVPN https://help.ubuntu.com/lts/serverguide/openvpn.html#openvpn-simple-client-configuration
注:/etc/init.d/openvpn restart 多restart几次。

根据上面的资料,以第一个为主,第二个为辅开始在服务端配置OpenVPN
0.开启tun:
:~# ls /dev/net
如果未得到输出tun(我的服务端tun是开启的),则:
:~# mkdir /dev/net
:~# mknod /dev/net/tun c 10 200

1.安装OpenVPN:
:~# apt-get update
:~# apt-get install openvpn

2.配置OpenVPN:
:~# gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
:~# cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
:~# cd /etc/openvpn/easy-rsa/2.0/
:/etc/openvpn/easy-rsa/2.0# cp openssl-1.0.0.cnf openssl.cnf
:/etc/openvpn/easy-rsa/2.0# vi vars         # 注意。如果不会使用vi 可用nano 或者gedit 替换在此命令中的vi (前提是系统中有相关软件)

3.在编辑器中把最后几行配置根据实际情况修改,如:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SC"
export KEY_CITY="CD"
export KEY_ORG="NO-GFW"
export KEY_EMAIL="webmaster [at] no-gfw.cn"

4.接下来,保存退出并继续配置。
:/etc/openvpn/easy-rsa/2.0# source vars
:/etc/openvpn/easy-rsa/2.0# ./clean-all
:/etc/openvpn/easy-rsa/2.0# ./build-ca
:/etc/openvpn/easy-rsa/2.0# ./build-key-server server
:/etc/openvpn/easy-rsa/2.0# ./build-key client1
:/etc/openvpn/easy-rsa/2.0# ./build-dh

5.然后用sftp下载相关文件,以备客户端配置OpenVPN时使用,无需者直接掉过此段。我本来用的图形界面,趁着写这log就命令行了次:
在客户端终端执行:
:~$ sftp root@*.*.*.*
root@*.*.*.*'s password:
Connected to *.*.*.*.
sftp>get -r /etc/openvpn/easy-rsa/2.0/keys/ /home/will/Downloads
Fetching /etc/openvpn/easy-rsa/2.0/keys/ to /home/will/Downloads/keys
Retrieving /etc/openvpn/easy-rsa/2.0/keys
/etc/openvpn/easy-rsa/2.0/keys/ca.crt                                                                                100% 1200     1.2KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/01.pem                                                                                100% 3848     3.8KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/server.crt                                                                            100% 3848     3.8KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/serial                                                                                100%    3     0.0KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/client1.crt                                                                           100% 3728     3.6KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/client1.key                                                                           100%  887     0.9KB/s   00:00   
/etc/openvpn/easy-rsa/2.0/keys/index.txt.attr                                                                        100%   21     0.0KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/02.pem                                                                                100% 3728     3.6KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/ca.key                                                                                100%  887     0.9KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/server.csr                                                                            100%  668     0.7KB/s   00:00   
/etc/openvpn/easy-rsa/2.0/keys/index.txt                                                                             100%  209     0.2KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/client1.csr                                                                           100%  668     0.7KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/index.txt.old                                                                         100%  104     0.1KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/server.key                                                                            100%  891     0.9KB/s   00:00   
/etc/openvpn/easy-rsa/2.0/keys/serial.old                                                                            100%    3     0.0KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/index.txt.attr.old                                                                    100%   21     0.0KB/s   00:01   
/etc/openvpn/easy-rsa/2.0/keys/dh1024.pem                                                                            100%  245     0.2KB/s   00:01   
sftp>exit
搞定。继续回到服务端配置(如果把ssh给断开了麻烦重新连接下^_^)。

6.将生成的keys再拷贝到服务端制定位置:
:/etc/openvpn/easy-rsa/2.0# cd /etc/openvpn
:/etc/openvpn# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt .
:/etc/openvpn# cp etc/openvpn/easy-rsa/2.0/keys/server.crt .
:/etc/openvpn# cp etc/openvpn/easy-rsa/2.0/keys/server.key .
:/etc/openvpn# cp etc/openvpn/easy-rsa/2.0/keys/dh1024.pem .

7.为了更方便的使用openvpn,这里我们需要修改openvpn的协议和端口,我们将通讯协议改为 tcp,端口改为 https 的端口号 443:
:/etc/openvpn# sed -i 's/^port\ .*/port 443/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/;proto tcp.*/proto tcp/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/.*proto udp.*/;proto udp/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.222.220"/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/keepalive 10 120/keepalive 1000 12000/' /etc/openvpn/server.conf
:/etc/openvpn# sed -i 's/;push "redirect-gateway.*/push "redirect-gateway def1 bypass-dhcp"/' /etc/openvpn/server.conf
注意:这里第一行命令的正则替换部分和原文不同,其实以上命令我都没有执行,只是根据其意思用vi编辑器手工修改的。原文的正则替换会不伤大雅地连带注释中的匹配项一起替换掉。所以,建议看得懂的读者,特别是第一次配置的,手工修改次。

8.然后:
:/etc/openvpn# /etc/init.d/openvpn restart

9.接着,打开ip转发:
:/etc/openvpn# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
:/etc/openvpn# sysctl -p

10.还要对服务器防火墙进行相关设置:
:/etc/openvpn# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source `ifconfig venet0:0|grep inet|awk '{print $2}'|awk -F: '{print $2}'`
:/etc/openvpn# iptables-save > /etc/iptables-rules
:/etc/openvpn# echo '#!/bin/sh' > /etc/network/if-up.d/iptablesload
:/etc/openvpn# echo 'iptables-restore < /etc/iptables-rules' >> /etc/network/if-up.d/iptablesload
:/etc/openvpn# echo 'exit 0' >> /etc/network/if-up.d/iptablesload
:/etc/openvpn# chmod +x /etc/network/if-up.d/iptablesload
到此,OpenVPN服务端安装配置完成。

客户端OpenVPN的安装配置其实比服务端简单很多,我就是参照参考文章里面的 “Simple Client Configuration” 章节来配置的。
在这里简单记下命令:
:~$sudo -i
:~# apt-get install openvpn
:~# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
:~# cd /home/will/Downloads/keys/
:/home/will/Downloads/keys# cp ca.crt /etct/openvpn/
:/home/will/Downloads/keys# cp client1.crt /etct/openvpn/
:/home/will/Downloads/keys# cp client1.key /etct/openvpn/
:/home/will/Downloads/keys#cd /etc/openvpn/
:/etc/openvpn# sed -i 's/^remote\ my-server-1\ 1194/remote\ *.*.*.*\ 443/' client.conf
:/etc/openvpn# sed -i 's/^cert\ client.crt/cert\ client1.crt/' client.conf
:/etc/openvpn# sed -i 's/^key\ client.key/key\ client1.key/' client.conf

配置到这里结束,以上代码中sed那几句是对我用vi修改cilent.conf的描述,我并未执行过,仅供参考!(另外,我还将client.conf重命名为了client1.conf).
接着启动客户端OpenVPN。(不知为何,我是restart了几次才成功的,好像是要等一会儿)
/etc/init.d/openvpn start

怎么验证是否连上了呢?
一下就是连上的效果:
:/etc/openvpn# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:3387 (3.3 KB)  TX bytes:7562 (7.5 KB)
:/etc/openvpn# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=823 ms
64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=727 ms
^C
--- 10.8.0.1 ping statistics ---
3 packets transmitted, 2 received, 33% packet loss, time 1999ms
rtt min/avg/max/mdev = 727.773/775.599/823.425/47.826 ms
:/etc/openvpn# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.8.0.5        128.0.0.0       UG        0 0          0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
10.8.0.1        10.8.0.5        255.255.255.255 UGH       0 0          0 tun0
10.8.0.5        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
128.0.0.0       10.8.0.5        128.0.0.0       UG        0 0          0 tun0
*.*.*.*   192.168.1.1     255.255.255.255 UGH       0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 vboxnet0
注:vboxnet0 那是因为我的机器上还跑着个Virtaulbox。
另:本文中大量的 *.*.*.* 不是表情符合,而是服务器的ip地址的代指。
--------------------------------------------------------------------------------------------------------------------------------------
在此感谢那些奋斗在为人类争取平等的生存权利的自由事业的第一线的人们。生命在于运动态平衡。人生在于分享。
  评论这张
 
阅读(28)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017