openvpn配置实践总结。
原理
vpn的全称叫virtual private network,虚拟专用网络,即利用公网架设专用网络。vpn的作用就是当外地员工想要访问内网资源的时候,外地员工可以通过连接vpn server,然后访问内网资源vpn原理。
因此作为墙内的我们,可以将整个国外的网络环境当成某个公司的内网资源,如果能够在该国外网络中架设一个vpn server,然后我们在墙内连上该vpn server我们就可以访问整个国外的网络资源了。
openvpn是工作在OSI模型的数据链路层和网络层的,所以如果使用vpn翻墙,那几乎我们能用到的网络请求都能翻过去,而不像代理,只能解决http类似的请求。
搭建步骤
从原理我们可以知道
- 需要一个可以访问的国外的vps或者其他能够访问的机器。
- 搭建vpnserver
- 搭建vpnclient
- 通过调整ip转发来优化vpnsever
国外vps或者其他可以访问的机器
本文作者使用的是digitalocean,速度不能说很优秀,但是稳定够用。这个vps还有个最大的问题是,其官网需要翻墙访问(dead lock),所以首次使用的用户谨慎选择。
搭建vpnserver
该步骤是整个过程中最复杂的部分,下面我们就一步一步来搭建。vpn server选用的openvpn,开源免费。若本文有说的不清楚的地方,请参考HOWTO
下面仅以Ubuntu 15.04为例搭建vpn server,以Mac为例配置vpn client
- 安装openvpn server
首先执行命令:
安装完之后关注两个目录
/etc/openvpn: 该目录用于存放真正的配置文件
/usr/share/doc/openvpn/examples: 该目录下提供了示例配置文件
- 以示例配置openvpn
- 启动openvpn
- 配置mac客户端
mac客户端使用的是Tunnelblick[https://tunnelblick.net/]
安装完后会弹一个sample的配置文件,和server的几乎一模一样,
首先需要从vpn server下把 /usr/share/doc/openvpn/examples/sample-keys下的ca.crt、client.crt、client.key拷贝到/Users/fragno/Desktop/Tunnelblick VPN 配置样/目录下,然后修改配置文件
修改文件夹后缀为tblk,然后双击后点击右上角的tunnelblick的连接即可,在vpn server的terminal上可以看到有log,连接成功的话就会有很多成功log,注意观察。
测试成功并不代表可以使用了,如果使用测试的配置进行vpn翻墙,危险是非常大的,下面的工作才是真正创建属于我们自己的vpn的工作
创建能安全使用的vpn
因为如果使用vpn进行翻墙,那一旦我们连上vpn,我们所有的网络请求都会经过vpn server,我们传输给vpn server的数据必须是经过强加密的,否则就非常危险。
因此在vpn server的搭建中,安全方面的准备工作是非常麻烦的。不过幸亏有了easy-rsa。不了解原理做事没有安全感,所以下面简单的介绍下vpn的加密方式。
PKI
openvpn的安全机制主要是由PKI(public key instructure)来实现的。
PKI的原理有点类似我们身份证的发行机构,身份证发行机构有一套安全的发行和验证方法,保证了我们每个人的身份的唯一性和安全性。PKI也是这样,其主要有几个部分组成,包括证书机构(CA)、存放机构、中央目录、证书管理系统、证书策略等等。幸亏有了easy-rsa,我们可以很方便的创建我们自己的PKI。
easy-rsa
easy-rsa是CLI工具,用来创建和管理PKI CA的。github上的使用说明太过通用,以下使用主要参考了openvpn 服务端的安装(easy-rsa3)
修改端口
不要使用默认的1194端口,改成任何比较大的端口都可以
路由配置
TODO