1、安装前准备

# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel
yum -y install lzo

2、安装及配置OpenVPN和easy-rsa


[root@vpn ~]# yum install -y openssl-devel
[root@vpn ~]# wge thttps://swupdate.openvpn.org/community/releases/openvpn-2.3.11.tar.gz
[root@vpn ~]# tar zxvfopenvpn-2.3.11.tar.gz
[root@vpn ~]# cd openvpn-2.3.11
[root@vpn openvpn-2.3.4]# ./configure --with-lzo-headers=/usr/local/include/ --with-lzo-lib=/usr/local/lib {./configure 默认安装}
[root@vpn openvpn-2.3.4]# make && make install
[root@vpn openvpn-2.3.4]# which openvpn/usr/local/sbin/openvpn #看到这里,说明安装openvpn成功

# 安装easy-rsa yum -y install easy-rsa # 修改vars文件 cd /usr/share/easy-rsa/2.0/ vim vars # 修改注册信息,比如公司地址、公司名称、部门名称等。 export KEY_COUNTRY="CN" export KEY_PROVINCE="Shandong" export KEY_CITY="Qingdao" export KEY_ORG="MySelf" 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 # 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次) ./build-key-server server # 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份 # 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次) ./build-key client1 ./build-key client2 # 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它) ./build-dh # 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击) openvpn --genkey --secret keys/ta.key

3、创建服务器端配置文件

# 服务端 配置文件随便在自己喜欢的路径放置即可
mkdir /usr/local/etc/openvpn/

# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中 cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /usr/local/etc/openvpn/

# 并需要在本路径下创建 .conf 文件用来加载服务端配置信息;
local xxx.xxx.xxx.xxx 找到本地ip,放置再次: 若不填写local ip 客户端不能连接: cannot locate HMAC incoming packet from xxx.xxx.xxx.xxx
port 1194
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和实际的局域网冲突即可
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# 10.0.0.0/8是我这台VPN服务器所在的内网的网段,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log 
log-append openvpn.log
# 改成verb 5可以多查看一些调试信息
verb 5

4、配置内核和防火墙,启动服务

# 开启路由转发功能
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  --config  server.conf  >> /dev/null &   #启动程序

# 若是想随机自启动,可
将
    openvpn --config  server.conf >> /dev/null & 写入到 /etc/rc.local 文件中

注意书写完整路径

也可以写入到 /etc/init.d/ 设置service服务

5、创建客户端配置文件

  下载 vpn

  yum -y  openvpn  或者向上查找下载安装包,进行编译安装;

dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote 203.195.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key
ns-cert-type server
# 去掉前面的注释  其中注意要与server端一直, 是否启用传输加密, 否则: 将log日志中将发现 加密错误;
tls-auth ta.key 1
comp-lzo
verb 3
openvpn  --config client.ovpn  >> /dev/null &   #启动程序

# 若是想随机自启动,可
将
    openvpn --config  client.ovpn >> /dev/null & 写入到 /etc/rc.local 文件中

注意书写完整路径

使用传输加密时需要的文件为:

    client.crt   client.key   ca.crt   ta.key  client.ovpn

  不适用传输加密, 则可以渠道ta.key 文件;

若是使用vpn客户端软件, mac linux 直接将 ovpn文件拖进客户端图标,或者使用客户端打开。

  window版本 请将以上文件放置到 客户端目录下的conf文件夹中;

最新文章

  1. 安装使用ubuntu问题汇总
  2. Acdream 1111:LSS(水题,字符串处理)
  3. java-Filter
  4. 第7章 使用RAID与LVM磁盘阵列技术
  5. 利用 FFmpeg palettegen paletteuse 生成接近全色的 gif 动画
  6. pssh 不能执行指定用户命令
  7. 文件共享windows server 2008 服务器
  8. Android ListView内容变化后的动态刷新
  9. HDU4127(IDA*)
  10. Python学习--17 访问数据库
  11. .NET的HTTP辅助类:RestSharp
  12. 【转】FLEX中SharedObject介绍及应用
  13. 微信小程序之菜鸟入门教学(二)
  14. 免费了 -- EXCEL插件 智表ZCELL 普及版V1.0 发布了!!!
  15. Javascript神器之webstorm
  16. JDBC笔记总结[申明:来源于网络]
  17. 微信小程序返回上一页的方法并传参
  18. Jmeter(二十六)Jmeter-Question之“集成Jenkins”
  19. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)
  20. Variance overview: Invariant, Covariant, Contravariant, 协变,逆变

热门文章

  1. 【.net 深呼吸】细说CodeDom(5):类型成员
  2. Fis3的前端模块化之路[基础篇]
  3. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版
  4. 程序猿都没对象,JS竟然有对象?
  5. .NET应用程序域
  6. ubuntu 下安装scrapy
  7. iOS微信第三方登录实现
  8. 利用PowerShell复制SQLServer账户的所有权限
  9. VIM教程
  10. [css]实现垂直居中水平居中的几种方式