OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,可用来实现部分内网打通的功能。
服务端安装部署
在 openvpn官网 下载对应的版本之后,就可以进行安装了。
打开安装包进行安装,客户端跟服务器安装方式一样,都需要安装
接受下一步
下面两个选项默认不勾选,我们需要勾选证书生成程序 ,不然安装完无法命令行制作证书操作
选择安装目录
安装完成
安装完成后系统会多出一张网卡
TAP
的 本地连接2要想客户端能够通过服务端上网需要调整服务端本地网卡共享
生成配置
OpenVPN支持基于加密证书的双向认证。在OpenVPN中,不管是服务器还是客户端,所有的证书和私钥都需要由服务器端生成
,客户端要先获得服务器端分配给它的加密证书和密钥才能成功连接。客户端只需要安装好软件,然后复制服务端生成的配置到客户端即可。
所以直接打开cmd,进入openvpn的安装目录 C:\Program Files\OpenVPN\easy-rsa
,在服务器端运行以下命令:
运行DOS命令,初始化执行环境。
1
2
3init-config # init-config 会把 vars.bat.sample 复制为 var.bat
vars # vars.bat 用来设置一些变量,主要就是配置文件中修改的那部分
clean-all # 会清掉 C: \Program File\OpenVPN\easy-rsa\keys 目录,再把 index.txt 和 serial 文件放进来。由于init-config 会把 vars.bat.sample 复制为 var.bat,所以可以先修改一下这里面的变量,比如说
KEY_SIZE
表示生成的私钥大小,一般填写为1024或2048。也可以修改证书的注册信息,比如国家、省市、地址、公司名称等。创建CA根证书:build-ca、build-dh.bat。
- build-ca # 生成根证书
- build-dh.bat # 生成 dh1024.pem 文件,Server 使用 TLS(OpenSSL) 必须要有的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34C:\Program Files\OpenVPN\easy-rsa>build-ca.bat
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.....................++++++
...........++++++
writing new private key to 'keys\ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [FuJian]:
Locality Name (eg, city) [FuZhou]:
Organization Name (eg, company) [FYLUO]:
Organizational Unit Name (eg, section) [Eagle]:
Common Name (eg, your name or your server's hostname) [Eagle]:CA
Name [Eagle]:
Email Address [eagle@fyluo.com]:
C:\Program Files\OpenVPN\easy-rsa>
C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.......+.....+.................................................................+
................................................................................
.........................+................................+.....................
................................................................................
.............................................................+..................
................................................................................
.................+.................................................++*++*++*build-ca的时候需要输入一些注册信息。在输入信息的时候,如果你不输入任何信息,就表示采用默认值(前面[]中的内容就是默认值)
创建服务器端证书:
build-key-server server
如上图所示,命令中的参数server指的是生成的证书文件名称,你可以按照自己的需要进行修改,不过后面的Common Name也应保持一致。第二个红色矩形框中是输入的密码,你也可以根据意愿自行输入。最后程序会询问你是否注册并提交证书,两次均输入y即可。
1
2
3
4
5build-key-server server # 生成服务端密钥和证书
# server 是自己定义的参数名,与上相应的就会生成 server.key、server.csr 和 server.crt,也都是保存在 keys 目录里。
# 这一步像 build-dh.bat 一样有些东西要填写,之后就是该回答 y 的 y 一下,关键就一个:
# 要生成多个服务端的密钥和证书则继续 build-key-server server02 ......创建客户端证书:
build-key client
,与build-key-server一样要输入一堆东西,这里注意的是 Common Name 不能与执行 build-key-server 时输入的一样,要生成其他的客户端密钥和证书,可以继续
build-key client02
。生成ta.key:
..\bin\openvpn --genkey --secret keys\ta.key
。这一步其实是可选操作,生成的ta.key主要用于防御DoS、UDP淹没等恶意攻击。命令中的第3个参数keys/ta.key表示生成的文件路径(含文件名)。
生成后文件夹下产生如下文件:
服务端配置
把配置文件server.ovpn放到C:\Program Files\OpenVPN\config目录下,把C:\Program Files\OpenVPN\easy-rsa\keys
目录下的
ca.crt、ca.key、server01.crt、server01.csr、server01.key、dh2048.pem、ta.key 复制到C:\Program Files\OpenVPN\config
目录下。
server.ovpn的文件内容如下。请根据需要进行调整。
1 | local 0.0.0.0 |
push route表示推送的具体路由,就是这些路由是走VPN,其他流量还是走默认网关,然后就可以启动服务了。
客户端配置
把配置文件client.ovpn放到客户端机器的C:\Program Files\OpenVPN\config目录下,并且把服务器C:\Program Files\OpenVPN\easy-rsa\keys目录下的
client01.crt、client01.csr、client01.key、ca.key、ca.crt、ta.key 文件一起复制到客户端C:\Program Files\OpenVPN\config目录下 (以上文件为服务端生成,客户端需要在服务端拷贝这7个文件过来)。
client.ovpn的配置如下:
1 | client |