# openvpn搭建文档
## 安装相关包文件
### 安装openssl和lzo包,lzo包用于压缩通讯数据加快传输速度
```
yum -y install openssl openssl-devel
yum -y install lzo
```
### 安装openvpn和easy-rsa
```
yum -y install openvpn easy-rsa
```
## 服务器端生成相关文件
### 修改vars文件
```
cd /usr/share/easy-rsa/2.0/
vim vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Beijing"
export KEY_CITY="Beijing"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
```
### 初始化环境变量
```
source vars
```
### 清除keys目录下所有与证书相关的文件
### 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
```
./clean-all
```
### 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
```
./build-ca
```
### 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
```
./build-ca
```
### 每一个登陆的×××客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
### 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
```
./build-key client1
./build-key client2
```
### 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
```
./build-dh
```
### 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)
```
openvpn --genkey --secret keys/ta.key
```
### 最后生成的文件有
```
[root@moban keys]# ll
总用量 120
-rw-r--r-- 1 root root 5653 2月 25 04:37 01.pem
-rw-r--r-- 1 root root 5532 2月 25 04:38 02.pem
-rw-r--r-- 1 root root 5532 2月 25 04:38 03.pem
-rw-r--r-- 1 root root 1834 2月 25 04:36 ca.crt
-rw------- 1 root root 1704 2月 25 04:36 ca.key
-rw-r--r-- 1 root root 5532 2月 25 04:38 client1.crt
-rw-r--r-- 1 root root 1102 2月 25 04:37 client1.csr
-rw------- 1 root root 1704 2月 25 04:37 client1.key
-rw-r--r-- 1 root root 5532 2月 25 04:38 client2.crt
-rw-r--r-- 1 root root 1102 2月 25 04:38 client2.csr
-rw------- 1 root root 1704 2月 25 04:38 client2.key
-rw-r--r-- 1 root root 424 2月 25 04:40 dh2048.pem
-rw-r--r-- 1 root root 455 2月 25 04:38 index.txt
-rw-r--r-- 1 root root 21 2月 25 04:38 index.txt.attr
-rw-r--r-- 1 root root 21 2月 25 04:38 index.txt.attr.old
-rw-r--r-- 1 root root 303 2月 25 04:38 index.txt.old
-rw-r--r-- 1 root root 3 2月 25 04:38 serial
-rw-r--r-- 1 root root 3 2月 25 04:38 serial.old
-rw-r--r-- 1 root root 5653 2月 25 04:37 server.crt
-rw-r--r-- 1 root root 1102 2月 25 04:37 server.csr
-rw------- 1 root root 1704 2月 25 04:37 server.key
-rw------- 1 root root 636 2月 25 04:44 ta.key
```
### 将生成的keys文件移动至/etc/openvpn目录下
```
mv keys /etc/openvpn/
```
### 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
```
cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/
[root@moban ~]# cat /etc/openvpn/server.conf
local 192.168.199.10
port 1194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
client-to-client
duplicate-cn
log /var/log/openvpn.log
```
### 解释:
|参数|含义|
|-------|----------------------------|
|local |vpn-server的外网IP地址
|port |服务的端口默认1194,可以更改
|proto |数据传输协议tcp/udp 建议用tcp
|dev tun |设置创建 tun 的路由 IP 通道
|ca |CA证书的路径
|cert|cert证书路径
|key|key文件路径
|dh|dh文件路径
|server| 默认虚拟局域网网段,不要和实际的局域网冲突即可
|push|是我这台×××服务器所在的内网的网段,读者应该根据自身实际情况进行修改
|ifconfig-poll-persist|维持一个客户端和 virtual IP 的对应表,以方便客户端重新连接可以获得同样的 IP
|keepalive|设置超市时间,重试时间
|comp-lzo|lzo压缩
|persist-tun|
|status|服务器端状态日志
|verb|日志级别
|client-to-client|允许客户端之间通信
|duplicate-cn|允许多个客户端使用同一个账号登录,实践中人数不多的情况下建议每人一个账号
|log|日志文件的路径
## 配置内核和防火墙,启动服务
### 开启路由转发功能
```
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl -p
```
### 配置防火墙,别忘记保存
```
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
service iptables save
```
### 启动openvpn并设置为开机启动
```
service openvpn start
chkconfig openvpn on
```
## 客户端window7配置文件
### 将keys中的client1.crt、client1.key、ca.key文件下载到本地
### 下载安装openvpn windows客户端软件openvpn-install-2.3.3-I002-x86_64.exe
将下载到本地的上述文件放在安装客户端路径下的config文件下,并创建client1.ovpn文件,内容如下
```
client
dev tun
proto tcp
remote 192.168.199.10 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
```
有以下几个文件
![123](C:/Users/hunter/Desktop/client.png)
点击如下图标,启动客户端
![运行vpn客户端](C:/Users/hunter/Desktop/运行vpn客户端.png)
右键如下图标,开始连接vpn
![连接客户端](C:/Users/hunter/Desktop/连接客户端.png)
成功连接后图标变绿
本机生成10.8.0.0/24网段的IP
![生成本机IP](C:/Users/hunter/Desktop/生成本机IP.png)
## openvpn基于CA证书验证的简单搭建完毕