红联Linux门户
Linux帮助

ubuntu下OpenVPN环境搭建过程

发布时间:2016-04-23 10:43:28来源:linux网站作者:本宫不是娘娘

一、源码安装OpenVPN
1.下载OpenVPN源码:

$ cd /tmp
$ mkdir vpn
$ cd vpn
$ wget -c http://swupdate.openvpn.org/community/releases/openvpn-2.3.8.tar.gz
$ tar -xvf openvpn-2.3.8.tar.gz
$ cd openvpn-2.3.8


2.查看安装文档说明

$ ls -also
$ less README
$ less INSTALL


3.尝试安装

$ ./configure
> configure: error: lzo enabled but missing


4.安装依赖:lzo

$ cd /tmp/vpn
$ wget -c http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
$ tar -xvf lzo-2.09.tar.gz
$ cd lzo-2.09
$ less README
$ less INSTALL
$ ./configure
$ make
$ make check
$ sudo make install
>libtool: warning: remember to run 'libtool --finish /usr/local/lzo/lib'
$ libtool --finish /usr/local/lzo/lib
>程序“libtool”尚未安装。 您可以使用以下命令安装:
>sudo apt install libtool-bin
$ sudo apt install libtool-bin
$ libtool --finish /usr/local/lzo/lib


5.再次尝试安装openvpn

$ cd /tmp/vpn/openvpn-2.3.8
$ ./configure
>configure: error: libpam required but missing ##哦,还缺libpam依赖


6.安装libpam依赖

$ yum install libpam0g-dev


7.再次尝试安装openvpn

$ cd /tmp/vpn/openvpn-2.3.8
$ ./configure
$ make
$ make check
$ make install
$ whereis openvpn
$ openvpn --version ##ok,good
>OpenVPN 2.3.8 x86_64-unknown-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Apr 22 2016
>library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.09
>Originally developed by James Yonan
>Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>


二、生成OpenVPN的相关证书

Note: 生成证书需要使用easy-rsa,官方说:从2.3-alpha2版本之后,easy-rsa就不再作为openvpn源码的一部分一并打包了,如果有需要,可自行去GitHub:easy-rsa(https://github.com/OpenVPN/easy-rsa)下载。


1.下载easy-rsa脚本工具

$ cd /tmp
$ wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip
$ mv master.zip easy-rsa.zip
$ unzip easy-rsa.zip
$ cd ~ && mkdir -p openvpn-certs/server
$ cd !$
$ cp -ar /tmp/easy-rsa/* .
$ ls -also
$ cd easyrsa3


2.修改证书生成的配置文件

$ cp vars.example vars
$ vi vars
```
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE    "ZheJiang"
set_var EASYRSA_REQ_CITY    "HangZhou"
set_var EASYRSA_REQ_ORG "Ipharmacare"
set_var EASYRSA_REQ_EMAIL   "admin@ipharmacare.net"
set_var EASYRSA_REQ_OU      "P & D Department"
set_var EASYRSA_KEY_SIZE    2048
```
$ source vars ## 从easy-rsa 3.0开始,就不需要使用source来更新该配置文件了;这是该配置文件里的注释写明的


3.生成OpenVPN的根证书:CA

$ ./easyrsa clean-all  ## 清除之前生成的证书,重新生成;执行init-pki 时也会作此清理,注释里也说了这个
$ ./easyrsa build-ca  ## 生成root根证书,目录在: pki/
> input pass: password-will-not-show-out
> input CA name: CA.ipharmacare.org
$ ls -also pki


4.生成服务器端用的证书:server.crt

$ ./easyrsa help ## 查到生成服务端证书命令是 build-server-full
$ ./easyrsa help build-server-full
> Usage: ./easyrsa build-server-full <filename_base> [cmd_opts]
$ ./easyrsa build-server-full server  ## 指定服务端证书的文件名为server,可以任意改动
> input pass: password-will-not-show-out
> input ca pass to certificate: input ca.crt pass


5.生成客户端用的证书:client.crt

$ ./easyrsa build-client-full client-test1


6.生成Diffle Hellman参数:

$ ./easyrsa gen-dh


自此,客户端认证所需要的证书均已生成完毕,所需文件在./pki/{ca.crt, issued/.crt, private/client.key}
可以继续重复5来生成多用户的客户端证书


三、OpenVPN服务端配置
1.初始化配置文件

$ mkdir /etc/openvpn
$ cp /tmp/vpn/openvpn-2.3.8/sample/sample-config-files/server.conf /etc/openvpn/


2.修改配置文件

```
port 10113
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 114.114.114.114"
comp-lzo
max-clients 100
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
verb 3
```


3.复制证书

$ cp ~/openvpn-certs/server/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/
$ cp ~/openvpn-certs/server/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn/
$ cp ~/openvpn-certs/server/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn/
$ cp ~/openvpn-certs/server/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn/


4.启动服务器

$ openvpn --config /etc/openvpn/server.conf
> input password for server.crt: password-will-not-show-out
```
Initialization Sequence Completed ## 表示vpn启动成功
```


四、客户端配置
1.初始化配置文件

# 以下操作在客户机上
$ scp root@vpn.ipharmamcare.org:/tmp/vpn/openvpn-2.3.8/sample/sample-config-files/client.conf /etc/openvpn/


2.修改配置

```
# 表明是客户端
client 
# 和服务器配置保持一致,并关闭防火墙
dev tun
# window上虚拟网卡tap的名称(很多情况下,需要重命名,或者配置文件跟这里保持一致)
dev-node OpenVPN   
# 和服务器配置保持一致
proto udp  
# VPN服务器的地址和端口,可以配多个来负载均衡
remote 1.vpn.ipharmacare.org 10113 
# 断线自动重连
resolv-retry infinite  
# 客户端是否绑定端口
nobind 
# 重启时,客户端尝试保存状态
persist-key
persist-tun
ca  "..\\certs\\ca.crt"
cert    "..\\certs\\client.crt"
key "..\\certs\\client.key"
comp-lzo   
verb 3
```


3.复制证书

$ cd /etc/openvpn/
$ scp root@vpn.ipharmamcare.org:~/openvpn-certs/server/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/
$ scp root@vpn.ipharmamcare.org:~/openvpn-certs/server/easy-rsa/easyrsa3/pki/private/client.crt /etc/openvpn/
$ scp root@vpn.ipharmamcare.org:~/openvpn-certs/server/easy-rsa/easyrsa3/pki/private/client.key /etc/openvpn/


4.启动客户端

$ openvpn --config /etc/openvpn/server.conf
> input password for server.crt: password-will-not-show-out
```
Initialization Sequence Completed ## 表示vpn启动成功
```


自此,openvpn的环境搭建完成,更多细致的功能,需要阅读文档,慢慢调整和优化。


本文永久更新地址:http://www.linuxdiyf.com/linux/20011.html