1、下载安装包

#wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
#wget http://swupdate.openvpn.org/community/releases/easy-rsa-2.2.0_master.tar.gz
#wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.12.tar.gz
#wget http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.12-I602-x86_64.exe

2、开始安装
#yum install gcc openssl openssl-devel pam-devel.x86_64 easy-rsa
#tar xvf lzo-2.09.tar.gz
#cd lzo-2.09
#./configure && make && make install
#echo '/usr/local/lib' >> /etc/ld.so.conf
#ldconfig
#cd ..

#tar xvf openvpn-2.3.12.tar.gz
#mv openvpn-2.3.12 /usr/local/openvpn
#cd /usr/local/openvpn

#yum install -y net-tools (centos系统使用最小安装默认缺少这个包,下一步编译会报错configure: error: route utility is required but missing)
#./configure && make && make install    //默认安装在/usr/local/sbin目录下,只有一个名为openvpn的可执行文件

#yum install easy-rsa          //或者用上面下载的easy-rsa-2.2.0_master.tar.gz
如果是CentOS6系统,自带的yum源可能没有easy-rsa,可以添加以下源
# vim /etc/yum.repos.d/ali.repo
[centos6]
name=centeros6 base
baseurl=http://mirrors.aliyun.com/centos/6/os/x86_64/
gpgcheck=0
[epel]
name=epel base
baseurl=http://mirrors.aliyun.com/epel/6/x86_64
gpgcheck=0

#cp -ra /usr/share/easy-rsa /usr/local/openvpn/
#cd /usr/local/openvpn/easy-rsa/2.0/
#vim vars     //根据实际情况修改一下,创建证书的时候是交互式操作,免得后续老是提示输入这些信息
-----------------------------------------------------------------------------------------

export KEY_COUNTRY="CN"
export KEY_PROVINCE="GuangDong"
export KEY_CITY="GuangZhou"
export KEY_ORG="HuanYu"
export KEY_EMAIL="12345678@qq.com"
export KEY_OU=HuanYu
export KEY_NAME=HuanYu.openVPN.org
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234
export KEY_CN=HuanYu.openVPN.org

-----------------------------------------------------------------------------------------

#source ./vars      //使修改的变量生效
#./clean-all

3、创建根证书ca.crt和根密钥ca.key      //回车回车再回车
#./build-ca

4、生成服务器证书及私钥      //回车回车再回车 ( 最后两步需求输入y确认 )
#./build-key-server server

5、创建Diffie-Hellman,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)确保key穿越不安全网络的命令
#./build-dh

6、生成 HMAC firewall 验证码      //资料显示,这是一种经加密的散列消息验证码,可以对信息数据的完整性和真实性进行同步检查
#/usr/local/sbin/openvpn --genkey --secret keys/ta.key

7、再生成客户端证书及私钥     //建议每个用户创建各自的证书和私钥
#./build-key vpnuser //无密码
#./build-key-pass vpnuser     //需要输入密码

8、文件解析:
#ll keys/
-rw-r--r-- 1 root root 5535 Nov 2 18:19 01.pem
-rw-r--r-- 1 root root 5412 Nov 2 18:20 02.pem
-rw-r--r-- 1 root root 1757 Nov 2 18:11 ca.crt
-rw------- 1 root root 1708 Nov 2 18:11 ca.key
-rw-r--r-- 1 root root 424 Nov 2 18:21 dh2048.pem
-rw-r--r-- 1 root root 5412 Nov 2 18:20 vpnuser.crt
-rw-r--r-- 1 root root 1086 Nov 2 18:20 vpnuser.csr
-rw------- 1 root root 1704 Nov 2 18:20 vpnuser.key
-rw-r--r-- 1 root root 279 Nov 2 18:20 index.txt
-rw-r--r-- 1 root root 21 Nov 2 18:20 index.txt.attr
-rw-r--r-- 1 root root 21 Nov 2 18:19 index.txt.attr.old
-rw-r--r-- 1 root root 140 Nov 2 18:19 index.txt.old
-rw-r--r-- 1 root root 3 Nov 2 18:20 serial
-rw-r--r-- 1 root root 3 Nov 2 18:19 serial.old
-rw-r--r-- 1 root root 5535 Nov 2 18:19 server.crt
-rw-r--r-- 1 root root 1086 Nov 2 18:19 server.csr
-rw------- 1 root root 1704 Nov 2 18:19 server.key
-rw------- 1 root root 636 Nov 2 18:22 ta.key

ca.crt     //第一步生成也就是./build-ca 这个脚本生成的
ca.key      //第一步生成也就是./build-ca 这个脚本生成的

server.crt     //第二步这玩意儿./build-key-server server 生成的
server.csr     //第二步这玩意儿./build-key-server server 生成的
server.key     //第二步这玩意儿./build-key-server server 生成的

vpnuser.crt     //第三步这家伙./build-key vpnuser 生成的
vpnuser.csr      //第三步这家伙./build-key vpnuser 生成的
vpnuser.key      //第三步这家伙./build-key vpnuser 生成的

dh1024.pem     //第四步这家伙./build-dh生成的
ta.key        //第五步openvpn可执行文件生成的

9、开始配置openvpn服务端
#mkdir /etc/openvpn
#cd /etc/openvpn
#ln -s /usr/local/openvpn/easy-rsa/2.0/keys ./
#cp /usr/local/openvpn/sample/sample-config-files/server.conf /etc/openvpn/
#cd /etc/openvpn/
#grep '^[^#;]' server.conf

-----------------------------------------------------------------------------------------
local 119.29.20.85     //指定侦听请求的IP ,openvpn服务器本机IP
port 1194      //指定服务端口
proto tcp     //指定TCP协议(使用TCP协议如果连接上VPN后网络很慢,可以更改成使用UDP协议,服务端和客户端需同时更改)
dev tun        //IP层的点对点协议
ca keys/ca.crt      //前面生成的ca证书,验证客户是证书是否合法
cert keys/server.crt
key keys/server.key 
dh keys/dh1024.pem
server 10.10.8.0 255.255.255.0      //这是必须的,指定客户端获取的IP
ifconfig-pool-persist ipp.txt
push "redirect-gateway"     //指定客户端网关
push "dhcp-option DNS 114.114.114.114" //DNS
push "dhcp-option DNS 8.8.8.8" //DNS
client-to-client      //允许客户端之间的通信
#duplicate-cn     //如果客户都使用相同的CA和keys连接VPN,一定要打开这个选项,否则只允许一个人连接VPN
keepalive 10 120      //存活时间,10秒ping一次,120秒如未收到响应则视为断线
tls-auth keys/ta.key 0
comp-lzo      //数据进行压缩,注意Server和Client一致
max-clients 100      //最多允许100个客户端
persist-key     //通过keepalive检测超时后,当重新启动VPN后,不重新读取私钥,保留第一次使用的私钥
persist-tun      //通过keepalive检测超时后,当重新启动VPN后,一直保持tun设备是连接的,否则网络连接会先断开再连接
status openvpn-status.log //
log openvpn.log //日志文件
verb 3        //日志文件冗余

10、首先开启NAT转发
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -p

11、配置服务器防火墙iptables      //可以执行iptables-save保存到配置文件
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT //使用tcp协议时有效
iptables -A INPUT -p udp --dport 1194 -j ACCEPT //使用udp协议时有效
iptables -t nat -A POSTROUTING -s 10.10.8.0/24 -o eth0 -j SNAT --to 119.29.20.85
iptables -A FORWARD -s 10.10.8.0/24 -j ACCEPT
iptables -A FORWARD -d 10.10.8.0/24 -j ACCEPT

12、启动openvpn服务端
/usr/local/sbin/openvpn --daemon --config /etc/openvpn/server.conf

13、配置客户端
安装openvpn-install-2.3.12-I602-x86_64.exe完毕后
下载刚才创建的用户key文件到openvpn安装目录C:\Program Files\OpenVPN\config
ca.crt ta.key vpnuser.crt vpnuser.key
再拷贝C:\Program Files\OpenVPN\sample-config\client.ovpn到C:\Program Files\OpenVPN\config
根据实际修改:

-----------------------------------------------------------------------------------------
client
dev tun
proto tcp
remote 47.88.189.67 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnuser.crt
key vpnuser.key
remote-cert-tls server
tls-auth ta.key 1
comp-lzo
verb 3

14、最后启动OpenVPN GUI客户端,切记“以管理员身份打开”,否则可能无法获取到vpn网关

最新文章

  1. [字符哈希] POJ 3094 Quicksum
  2. 将普通工程转为mvn标准工程(main resources)
  3. [转]Calling Web Service Functions Asynchronously from a Web Page 异步调用WebServices
  4. Make Rules
  5. 通知(NSNotificationCenter)
  6. 【转】APP测试要点
  7. 常用工具之stunnel
  8. Nginx反向代理配置配置实例
  9. Symmetric Tree——LeetCode
  10. python批量改动指定文件夹文件名称
  11. 详述iOS国际化
  12. tomcat 远程 调试 eclipse
  13. Bootstrap Collapse使用
  14. (摘录)MSMQ的简单介绍
  15. 细说Linux权限
  16. js 数组API之forEach、map的用法
  17. uwsgi+anaconda+nginx部署django项目(ubuntu下)
  18. Python之在函数中使用列表作为默认参数
  19. CentOS7查看和关闭防火墙
  20. # 2019-2020-3 《Java 程序设计》第五周学习总结

热门文章

  1. Codeforces 160D Edges in MST tarjan找桥
  2. BZOJ3551 [ONTAK2010]Peaks加强版 kruskal 并查集 主席树 dfs序
  3. DP-hdu1260
  4. 【Java并发核心五】Future 和 Callable
  5. C#如何打开一个窗体,同时关闭该窗体
  6. BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演
  7. 【漏洞复现】ES File Explorer Open Port Vulnerability - CVE-2019-6447
  8. 潭州课堂25班:Ph201805201 爬虫高级 第一课 pyspider框架 (课堂笔记)
  9. Linux学习笔记11—VSFTP的搭建
  10. Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法