目录
目录
目录
vpn概念关于openvpn部署openvpn服务vpn概念
# VPN是什么
#关于VPN VPN是虚拟专用网络的缩写, 它是两个或多个物理网络(或设备)之间沟通互联网/公共网络创建的虚拟网络, 可以为企业之间或者个人与企业之间提供安全(加密)的数据传输隧道服务# VPN类型
1. 远程访问vpn 允许用户远程连接到专用网络,通过完全安全的internet连接进行连接 2. 站点到站点vpn 最常用的为公司与公司之间使用vpn,即可实现设在不同地点的公司之间进行数据共享# 常见的VPN协议
常见的vpn协议优点缺点PPTP(点对点隧道协议)windows自带,无需安装,网络连接较为稳定安全性低,可以被防火墙阻止(不建议用于公司或商业用途)L2TP/IPsec------PPTP升级版安全性较之pptp高,windows自带,无需安装,可用于具有相同vpn配置的多个设备速度较慢(加密算法导致),不建议用于cpu性能较低的计算机。IKEv2/IPsec速度加快;安全性较高;重连速度较快;与手机兼容性也较强(较适合用于手机)搭建较为困难,暂时支持的平台不是很多OpenVPN安全性较高;可配置性较强;可以绕过防火墙需要安装第三方软件;安装过程较为复杂;移动端支持较差(手机)关于OpenVpn
# 介绍OpenVPN
官网: 专用网:专用网就是在两个网络(例如,北京和广州)之间架设一条专用线路,但是它并不需要真正地去铺设光缆之类的物理线路。 虽然没有亲自去铺设,但是需要向电信运营商申请租用专线,在这条专用的线路上只传输自己的信息,所以安全稳定, 同时也费用高昂 OpenVPN: Open VPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。一个实现VPN的开源软件, OpenVPN 是一个健壮的、高度灵活的 VPN 守护进程。它支持 SSL/TLS 安全、Ethernet bridging、经由代理的 TCP 或 UDP 隧道和 NAT。 另外,它也支持动态 IP 地址以及DHCP,可伸缩性足以支持数百或数千用户的使用场景,同时可移植至大多数主流操作系统平台上。部署OpenVpn服务
# 关于证书
#证书是互联网中常用的安全加密工具,主要用于企业中暴露到互联网中的服务提供安全认证服务。 #证书种类 1.自签证书 2.机构签发的证书# 开始部署
## 服务端
1.安装openvpn和openvpn证书生成工具
yum -y install openvpn easy-rsa2.服务端签发证书
cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/ cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/vars备注:默认ca证书以及服务器证书有效期分别为3650天以及825天,可修改以下文件((此步可跳过))
vi /etc/openvpn/easy-rsa-server/vars # ca证书修改 #set_var EASYRSA_CA_EXPIRE 3650 (天) set_var EASYRSA_CA_EXPIRE36500 # 服务器证书修改 #set_var EASYRSA_CERT_EXPIRE 825 (天) set_var EASYRSA_CERT_EXPIRE36503.服务端签发CA证书
cd /etc/openvpn/easy-rsa-server/3 ./easyrsa init-pki ./easyrsa build-ca nopass openssl x509 -in pki/ca.crt -noout -text 关于上面的注释: # nopass代表不加密私钥,主要方便后面导出公钥与颁发服务器证书 openssl x509 -in pki/ca.crt -noout -text: # openssl x509主要用于输出证书信息,也能签署证书请求文件、自签署、转换证书格式等 # -in 指定证书输入文件 # -noount 默认out选项为指定输出文件,noout为默认不输出到文件 # -text 以text格式输出证书内容,即以最全格式输出4.签发服务器证书
# 创建服务器证书请求 ./easyrsa gen-req server nopass # 签发服务器证书 ./easyrsa sign server server5.签发证书密钥(相当于再给证书加一次密码)
以下任选其一 第一种方式:./easyrsa gen-dh 第二种方式:openssl dhparam -out /etc/openvpn/dh2048.pem 2048## 客户端
1.签发客户端证书
cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/vars cd /etc/openvpn/easy-rsa-client/3 ./easyrsa init-pki2.创建客户端证书请求
./easyrsa gen-req diaozhenguo nopass3.将客户端证书加入服务端(主要是为了让服务端识别客户端证书)
cd /etc/openvpn/easy-rsa-server/3 ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/diaozhenguo.req diaozhenguo4.签发客户端证书
./easyrsa sign client diaozhenguo5.为了方便,将相关的证书统一存放
mkdir /etc/openvpn/certs cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/ cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/## 创建链接配置文件
vim /etc/openvpn/server.conf先把内容清空,然后输入下面内容:
# 指定默认端口号 port 1194 # 指定vpn使用的协议为tcp,生产环境推荐使用 proto tcp # 创建一个路由IP隧道,生产环境推荐使用tun dev tun # 指定CA证书文件 ca/etc/openvpn/certs/ca.crt # 指定服务器证书文件 cert/etc/openvpn/certs/server.crt # 指定服务器私钥文件 key/etc/openvpn/certs/server.key # 指定dh参数文件 dh/etc/openvpn/certs/dh.pem # 指定客户端连接后分配ip的地址池,服务器默认会占用第一个ip作为网关 server 10.8.0.0 255.255.255.0 # 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网 push "route 172.16.1.0 255.255.255.0" # 设置服务端检测的间隔和超时时间,10秒ping一次,120秒没回应则认为对方down keepalive 10 120 # 加密算法 cipher AES-256-CBC # 启用openvpn新版压缩算法 compress lz4-v2 # 推送客户端使用新版压缩算法,不能和comp-lzo同时使用 push "compress lz4-v2" # 最大客户端数 max-clients 2048 # 运行openvpn服务的用户和组 user openvpn group openvpn # openvpn状态记录文件,每分钟记录一次 status/var/log/openvpn/openvpn-status.log # 指定日志路径,生产环境建议使用 log-append /var/log/openvpn/openvpn.log # 设置日志级别,数字越大记录的内容越详细 verb 3 # 相同类别信息只有前20条会输出到日志文件中 mute 20## 准备链接文件(自定义链接文件)
vim /etc/openvpn/client/chenyang/client.ovpn写入内容:
client dev tun proto tcp remote 192.168.15.71 1194 resolv-retry infinite nobind # persist-key # persist-tun ca ca.crt cert diaozhenguo.crt key diaozhenguo.key remote-cert-tls server # tls-auth ta.key 1 cipher AES-256-CBC verb 3 compress lz4-v2## 添加iptables规则
1、安装iptables
yum installiptables iptables-services -y2、添加规则
systemctl start iptables # 清空默认的规则(避免影响实验) iptables -F # 添加网络转发规则 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE # 查看 iptables -L -v -n -t nat## 添加操作系统内核参数(查看sysctl.conf文件中是否已将如下参数修改,没有则添加)
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 # 开启系统内核网络转发功能 执行sysctl -p# 启动OpenVpn
1、创建日志文件
mkdir /var/log/openvpn chown openvpn.openvpn /var/log/openvpn2、启动openvpn
systemctl daemon-reload systemctl enable --now openvpn@server systemctl status [email protected]# Windows安装OpenVPN GUI软件
1.安装
2.配置 OpenVPN GUI
将 /etc/openvpn/client/diaozhenguo/ 中的四个证书下载到windows,用于openvpn客户端连接. 存放于 C:\Program Files\OpenVPN\config (安装路径)3.开启OpenVPN GUI