内容目录

VPN基本介绍

什么是vpn

  • VPN(Virtual Private Network)翻译过来就是虚拟专用网络,虚拟专用网提供什么功能
    1. 将两个或多个不同地域的网络通过一条虚拟隧道的方式连接起来,实现互通
    2. 在不安全的线路上提供安全的数据传送

vpn应用场景

点对点连接
  • Peer-to-Peer VPN(点对点连接),将Internet两台机器(公网地址)使用VPN连接起来,比如上海服务器和北京服务器之间的数据需要相互调用,但是数据又比较敏感,直接通过http公共网络传输,容易被窃取。如果拉一条专线成本又太高。
  • 所以我们可以通过VPN将两台主机逻辑上捆绑在一个虚拟网络中,这样既保证了数据传输安全,同时又节省了成本
站点对站点
  • Site-to-Site VPN(站点对站点连接),用于连接两个或者多个地域上不同的局域网LAN,每个LAN有一台OpenVPN服务器作为接入点,组成虚拟专用网络,使得不同LAN里面的主机和服务器都能够相互通讯。(比如国内公司与海外分公司的连接)
远程访问
  • Remote Access VPN(远程访问),应用于外网用户访问内部资源。在这个场景中访问者一般通过公网IP连接VPN服务,然后通过分配的内网地址与其内网网段进行通信。

OpenVPN基本介绍

什么是OpenVPN

  • OpenVPN就像它的名字一样,是一个开源的软件,且提供VPN虚拟专用网络功能

    • 1 支持SSL/TLS协议,使得数据传输更安全
    • 2 支持TCP、UDP隧道
    • 3 支持动态分配虚拟IP地址
    • 4 支持数百甚至上千用户同时使用
    • 5 支持大多数主流操作系统
  • OpenVPN官网:https://openvpn.net

OpenVpn应用场景

  • 场景1:拨入openvpn,然后连接内部服务器
  • 场景2: 实现两个不同地域主机、且两个地域主机IP不固定,互连互通

OpenVPN实现场景

file

OpenVPN证书配置

安装easy-rsa

  1. 为了保证OpenVPN数据传输安全,所以需要证书,可以通过easy-rsa工具创建相关证书
    yum install easy-rsa

  2. 创建证书前,需要拷贝配置文件,以及vars文件,定义证书相关的属性

    mkdir /opt/easy-rsa
    cd /opt/easy-rsa/
    cp -a /usr/share/easy-rsa/3/* ./
  3. 新建并配置vars文件

    vim vars
    if [ -z "$EASYRSA_CALLER" ]; then
           echo "You appear to be sourcing an Easy-RSA 'vars' file." >&2
           echo "This is no longer necessary and is disallowed. See the section called" >&2
           echo "'How to use this file' near the top comments for more details." >&2
           return 1
    fi
    set_var EASYRSA_CA_EXPIRE 3650 
    set_var EASYRSA_CERT_EXPIRE 3650 
    set_var EASYRSA_DN "cn_only"
    set_var EASYRSA_REQ_COUNTRY "CN"
    set_var EASYRSA_REQ_PROVINCE "Beijing" 
    set_var EASYRSA_REQ_CITY "Beijing" 
    set_var EASYRSA_REQ_ORG "dot" 
    set_var EASYRSA_REQ_EMAIL "67481157@qq.com" 
    set_var EASYRSA_NS_SUPPORT "yes"

创建证书文件

初始化PKI
# 初始化命令,执行后会在当前目录创建PKI目录,用于存储证书
./easyrsa init-pki

证书存储在/opt/easy-rsa/pki

创建CA机构
# 创建ca证书,主要对后续创建的server、client证书进行签名:会提示设置密码,其他可默认
./easyrsa buld-ca

/opt/easy-rsa/pki/ca.crt

签发服务端证书
  1. 创建server端证书,nopass表示不加密私钥文件,其他可默认

    ./easyrsa gen-req server nopass
    req: /opt/easy-rsa/pki/reqs/server.req       # 请求文件
    key: /opt/easy-rsa/pki/private/server.key    # 私钥
  2. server端证书签名,首先是对信息的确认,可以输入yes,然后输入创建ca根证书时设置的密码

    # 第一个server是类型
    # 第二个server是req请求文件名称
    ./easyrsa sign server server
    Certificate created at: /opt/easy-rsa/pki/issued/server.crt  #公钥
创建DH密钥

Diffie-Hellman是一种安全协议:让双方在完全没有对方任何信息情况下通过不安全信道建立一个密钥;这个密钥一般作为对称加密的密钥而被双方在后续数据传输中使用

签发客户端证书
  1. 创建client端私钥文件,nopass表示不加密私钥文件,其他可默认

    ./easyrsa gen-req client nopass
    req: /opt/easy-rsa/pki/reqs/client.req       # 请求文件
    key: /opt/easy-rsa/pki/private/client.key    # 私钥
  2. client端证书签名,首先是对信息的确认,可以输入yes然后创建ca根证书时设置的密码

    # 第一个client是类型
    # 第二个client是req请求文件名称
    ./easyrsa sign client client
    Certificate created at: /opt/easy-rsa/pki/issued/client.crt  #客户端公钥

OpenVPN服务安装

安装Openvpn服务

yum install ntpdate openvpn

配置Openvpn服务

配置文件在/etc/openvpn/server.conf

port 1194                                  #端⼝
proto tcp                                  #协议
dev tun                                    #采用路由隧道模式tun
ca ca.crt                                  #ca证书文件位置
cert server.crt                            #服务端公钥名称
key server.key                             #服务端私钥名称
dh dh.pem                                  #交换密钥
server x.x.x.x 255.255.255.0               #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
push "route x.x.x.x 255.255.255.255"       #允许客户端访问内网192.168.99.0网段
push "route y.y.y.y 255.255.255.255"
push "route z.z.z.z 255.255.255.255"

# push "redirect-gateway def1"
# push "dhcp-option DNS 8.8.8.8"

ifconfig-pool-persist ipp.txt         #地址池记录文件位置
keepalive 10 120                      #存活时间,10秒ping一次,120 如未收到响应则视为断线
max-clients 100                       #最多允许100个客户端连接
status openvpn-status.log             #日志记录位置
verb 3                                #openvpn版本
#client-to-client                     #客户端与客户端之间保持通信
log /var/log/openvpn.log              #openvpn日志记录位置
persist-key                           #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。
persist-tun                           #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup
duplicate-cn

拷贝服务端证书文件

# 将服务端证书拷贝至 /etc/openvpn 目录下
cp /opt/easy-rsa/pki/ca.crt ./
cp /opt/easy-rsa/pki/dh.pem ./
cp /opt/easy-rsa/pki/issued/server.crt ./
cp /opt/easy-rsa/pki/private/server.key ./

开启内核转发参数

# 必须开启内核转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p  #载入sysctl配置文件

启动Openvpn服务

systemctl enable openvpn@server
systemctl start openvpn@server
最后修改日期: 2024年6月5日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。