内容目录
VPN基本介绍
什么是vpn
VPN(Virtual Private Network)
翻译过来就是虚拟专用网络,虚拟专用网提供什么功能- 将两个或多个不同地域的网络通过一条虚拟隧道的方式连接起来,实现互通
- 在不安全的线路上提供安全的数据传送
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 支持大多数主流操作系统
- 1 支持
-
OpenVPN
官网:https://openvpn.net
OpenVpn应用场景
- 场景1:拨入
openvpn
,然后连接内部服务器 - 场景2: 实现两个不同地域主机、且两个地域主机
IP
不固定,互连互通
OpenVPN实现场景
OpenVPN证书配置
安装easy-rsa
-
为了保证
OpenVPN
数据传输安全,所以需要证书,可以通过easy-rsa
工具创建相关证书
yum install easy-rsa
-
创建证书前,需要拷贝配置文件,以及
vars
文件,定义证书相关的属性mkdir /opt/easy-rsa cd /opt/easy-rsa/ cp -a /usr/share/easy-rsa/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
签发服务端证书
-
创建
server
端证书,nopass
表示不加密私钥文件,其他可默认./easyrsa gen-req server nopass req: /opt/easy-rsa/pki/reqs/server.req # 请求文件 key: /opt/easy-rsa/pki/private/server.key # 私钥
-
给
server
端证书签名,首先是对信息的确认,可以输入yes
,然后输入创建ca
根证书时设置的密码# 第一个server是类型 # 第二个server是req请求文件名称 ./easyrsa sign server server Certificate created at: /opt/easy-rsa/pki/issued/server.crt #公钥
创建DH密钥
Diffie-Hellman
是一种安全协议:让双方在完全没有对方任何信息情况下通过不安全信道建立一个密钥;这个密钥一般作为对称加密的密钥而被双方在后续数据传输中使用
签发客户端证书
-
创建
client
端私钥文件,nopass
表示不加密私钥文件,其他可默认./easyrsa gen-req client nopass req: /opt/easy-rsa/pki/reqs/client.req # 请求文件 key: /opt/easy-rsa/pki/private/client.key # 私钥
-
给
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
留言