https://www.cnblogs.com/fuyanwen/p/8195956.html

Introduction

  OpenVPN是一个开源代码的VPN应用程序,可让您在公共互联网上安全地创建和加入专用网络。相比pptp,openvpn更稳定、安全。

  本篇博客主要介绍下面两点:

  1. Centos 7下安装与配置OpenVPN;

  2. 客户端连接OpenVPN服务器(window 、Ubuntu、 Ios、 Android)

Prerequisites

  1. 公网服务器IP或者国外VPS及root权限;

  2. 由于OpenVPN在默认的CentOS软件库中不可用,需要安装EPEL;

  yum install epel-release
OpenVPN Server Install

  1. 安装OpenVPN

  yum install openvpn easy-rsa -y
  2. 配置OpenVPN

  OpenVPN在其文档目录中有示例配置文件,拷贝该示例配置文件到配置目录

  cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
  修改该示例配置文件。

  vi /etc/openvpn/server.conf
 稍后我们生成密钥时,Easy RSA的默认Diffie-Hellman加密长度将为2048字节,因此我们需要将dh文件名更改为dh2048.pem。取消下面行注释;
  dh dh2048.pem
  告诉客户所有流量将通过我们的OpenVPN进行重定向, 取消注释下面 “redirect-gateway def1 bypass-dhcp”行

  push “redirect-gateway def1 bypass-dhcp”
  修改DNS服务器为google公共DNS服务器,取消注释并修改行“push “dhcp-option”

  push “dhcp-option DNS 8.8.8.8”
  push “dhcp-option DNS 8.8.4.4”v
  取消下面行,以便OpenVPN运行时权限正常

user nobody
group nobody

  取消注释“comp-lzo”行,以便兼容老的客户端平台,(客户端配置时也必须打开此选项)

  comp-lzo
  保存并退出配置文件。

  3. 生成密钥和证书

  服务器配置完成后需要生成密钥和证书,通过Easy RSA安装的一些脚本,方便快速产生密钥和证书;

  创建keys文件夹,并且拷贝Easy RSA密钥和证书生成脚本到目录下(到easy-rsa目录)

  mkdir -p /etc/openvpn/easy-rsa/keys
  cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
  为方便后续使用,修改vars文件中的默认信息, 其中KEY_CN=x.x.x.x修改成你自己的IP或者域名, 其他的地方可以自定义。

复制代码
vi /etc/openvpn/easy-rsa/vars

. . .

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="sammy@example.com"
export KEY_OU="Community"

# X509 Subject Field
export KEY_NAME="server"

. . .

export KEY_CN=x.x.x.x

. . .

复制代码
  修改openssl配置文件名版本号,防止检测出错问题

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

  开始生成证书

  

复制代码

cd /etc/openvpn/easy-rsa
//让修改的变量起作用, 每次生成客户端证书的时候都执行一次。
source ./vars    

//删除以前的密钥和证书
./clean-all

//执行过程中需要你输入配置信息,这些信息我们已经在vars中修改,只需要按ENTER键默认即可。
./build-ca

//产生服务器密钥和证书,与上述步骤类似,但是在最后需要输入Y提交更改。
./build-key-server server

//生成Diffie-Hellman密钥交换文件。
./build-dh

//服务器相关密钥和证书生成完成,拷贝到相关路径
cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

复制代码
  生成客户端配置密钥和证书

  

cd /etc/openvpn/easy-rsa

//生成密钥和证书,如果未生成成功,先source ./vars一下. 客户端密钥和证书可以共用,也可以给不同的客户端生成不同的client。生成的client会在keys目录下。
./build-key client

  4. 路由

  为了方便,使用iptables代替firewalld。

  首先,安装和打开iptables

复制代码
yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables –flush

//增加防火墙规则转发数据
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

//打开IP转发
vi /etc/sysctl.conf
//增加下行到文件中
net.ipv4.ip_forward = 1

//重启生效
systemctl restart network.service

复制代码   

  5. 开启OpenVPN服务器

systemctl -f enable openvpn@server.service
systemctl start openvpn@server.service

  6. 生成ta.key密钥

openvpn --genkey --secret /etc/openvpn/ta.key

  至此服务器相关配置已完成,下面将介绍客户端的配置与连接

Configuring a Client

  1. 首先从服务器拷贝下列文件到客户端设备。可以通过secure crt客户端,使用rz、sz命令传输文件,sz、rz是Linux/Unix同Windows进行ZModem文件传输的命令行工具,具体使用可以另行百度。

  /etc/openvpn/easy-rsa/keys/ca.crt
  /etc/openvpn/easy-rsa/keys/client.crt
  /etc/openvpn/easy-rsa/keys/client.key
  /etc/openvpn/ta.key
  2. 客户端设备上创建client.opvn文件,这是OpenVPN 客户端配置文件。

  配置文件如下所示,大部分地方需要与服务器配置匹配。

复制代码
  client
  dev tun
  proto udp
  remote X.X.X.X 8798  ; X.X.X.X为服务器IP地址,或者域名 此处端口号必须与服务器中的端口号保持一致  
  resolv-retry infinite
  nobind
  persist-key
  persist-tun
  comp-lzo
  verb 3
  ca ca.crt
  cert client.crt  ;ubuntu上时必须使用绝对路径例如 /etc/openvpn/client/config/client.crt 
  key client.key  ;与上面一样,ubuntu上需要绝对路径
  tls-auth ta.key 1   ; 服务器需要设置为0, 客户端需要配置为1.
  cipher AES-256-CBC  ; ubuntu和os x上面必须指定,否则会出现错误。

复制代码
  3. 所有的配置文件已经准备好,接下来是在不同的平台上连接OpenVPN服务器。

  Windows:

    a. 下载OpenVPN Gui(官网下载)安装。

    b. 拷贝上面5个文件(ca.crt、client.crt、client.key、ta.key、client.opvn)到 C:\Users\User\OpenVPN\config目录下面。 User是你当前登录用户。

    c. 打开OpenVPN Gui(必须要使用管理员权限打开),右击连接后即可。

  Ubuntu:

    a. 安装openvpn

    apt-get install openvpn
    b. 开启openvpn

    sudo openvpn –config ~/path/to/client.ovpn
  OS X:

    a. 下载Tunnelblick 软件。安装

    b. 赋值配置到~/Library/Application Support/Tunnelblick/Configurations 目录

    c. 如果连接后不能FQ上外网时,详情里面设置DNS服务器为不指定。

  Android:

    a. google play中下载openvpn connect安装,(国内无法下载,可网上查找相关的apk安装)

    b. 安卓手机连接电脑拷贝配置文件到手机存储中

    c. 打开openvpn connect选择手机中查找配置文件,选中client.opvn后即可,点击connect后连接OpenVPN。

  IOS:

    a. 由于国内的appid在app store中不能下载openvpn connect。所以需要先另外注册一个国外的apple id,例如新西兰。

    b. 注册好后登录app store中下载openvpn connect。下载安装好后可以再使用国内apple id。

    c. 通过PC端的ITools软件,找到OpenVPN Connect软件,打开共享文件,会看到document文件,进入document文件夹后,把配置文件拖入此文件夹。

    d. 打开openvpn connect会自动检测配置文件,并通过滑动条连接,会弹出提示框确认是否使用VPN,点击是以后会连接VPN。

  

Conclusion

  至此,OpenVPN服务器端和客户端都安装完成。

文档更新时间: 2021-07-01 07:31   作者:月影鹏鹏