一、VPN概述
VPN(virtual Private network)即虚拟专用网络,是通过建立一条专用通道进行通信的技术,可以理解为通过建立一条独有的隧道让两边通信。
应用场景
- client-to-site(个人对企业),如员工在家,通过VPN访问公司内网机器
- site-to-site(企业对企业),如上海与广州分公司内网相互访问
二、Openvon生成密钥工具
1、安装easy-rsa
为了保证OpenVPN的安装,需要使用easy-rsa秘钥生成工具生成证书apt install easy-rsa -y
2、准备vars配置文件
修改vars.example文件mkdir /data/rasy-rsa && cd /data/rasy-rsa
cp /usr/share/easy-rsa/* .
vim vars.example
主要修改以上几行内容set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Shanghai"
set_var EASYRSA_REQ_CITY "shanghai"
set_var EASYRSA_REQ_ORG "wyf"
set_var EASYRSA_REQ_EMAIL "wyf010530@163.com"
set_var EASYRSA_REQ_OU "My Organizational Unit"
3、初始化生成证书
1、初始化,在当前目录创建pki目录,用于存储证书
2、创建根证书(会提示设置密码,用于ca对之后生成server和client证书签名时使用,需要妥善保存)./easyrsa init-kpi
3、创建server端证书和私钥文件(nopass参数表示不加密私钥文件)./easyrsa build-ca
4、给server端证书签名./easyrsa gen-rea server nopass
5、创建Diffie-Hellman文件,密钥交换时的Diffi-Hellman算法./easyrsa sign server server
6、创建clientt端证书和私钥文件(nopass参数表示不加密私钥文件)./easyrsa gen-dh
7、给client端证书签名./easyrsa gen-rea client nopass
./easyrsa sigin client client
三、OpenVPN服务端部署
1、安装OpenVPN服务端
apt install openvpn -y
2、开启内核转发功能
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
systemctl restart networking
3、编辑server配置文件
vim /etc/openvpn/server.conf
配置文件详解:port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 192.168.24.0 255.255.255.0
push "route 172.1.1.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 100
status openvpn-status.log
verb 3
client-to-client
persist-key
persist-tun
duplicate-cn
port 1194 #端口
proto udp #协议
dev tun #采用路由隧道模式tun
ca ca.crt #ca证书文件相对路径
cert server.crt #服务端公钥名称
key server.key #服务端私钥名称
dh dh.pem #交换证书
server 192.168.1.0 255.255.255.0 #给客户端分配的地址池
push "route 192.168.122.0 255.255.255.0" #运行客户端访问的内网网段
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 #客户端与客户端之间支持通信
persist-key #通过keeplive检测超时后,重启vpn,不重新读取keys,保留第一次使用的keys
persist-tun #检测超时后,重启vpn,一直保持tun时linkup,否则网络会先link down在link up
duplicate-cn #允许多个客户端使用同一个VPN帐号连接服务端
4、拷贝证书
根据server.conf中的定义,将需要用到的证书拷贝到server.conf同级目录下cp /data/easy-rsa/pki/ca.crt . cp /data/easy-rsa/pki/issied/server.crt . cp /data/easy-rsa/pki/private/server.key . cp /data/easy-rsa/pki/dh.pem .
5、启动OpenVPN服务
先设置启动文件再启动systemctl -f enable openvpn@server.serivce systemctl start openvpn@server.serivce
四、Windows客户端连接OpenVPN
OpenVPN客户端下载地址:Download_OpenVPN1、导出服务端生成的客户端密钥
sz /data/easy-rsa/pki/ca.crt sz /data/easy-rsa/pki/issued/client.crt sz /data/easy-rsa/pki/private/client.key
2、配置client
将客户端密钥放至C:\Program Files\OpenVPN\config下,并新编辑client.ovpn文件如下
配置文件详解:client dev tun proto udp remote (外网IP) 1194 resolv-retry infinite nobind ca ca.crt cert client.crt key client.key verb 3 persist-key persist-tun
client #指定当前是vpn客户端 dev tun #采用路由隧道模式tun proto udp #协议 remote 221.194.44.132 1194 #openvpn服务器IP 端口 resolv-retry infinite #断线自动重连 nobind #不绑定本地特定的端口号 ca ca.crt #ca证书文件相对路径 cert client.crt #服务端公钥名称 key client.key #服务端私钥名称 dh dh.pem #交换证书 verb 3 #openvpn的版本 persist-key #通过keeplive检测超时后,重启vpn,不重新读取keys,保留第一次使用的keys persist-tun #检测超时后,重启vpn,一直保持tun时linkup,否则网络会先link down在link up
3、启动客户端连接
测试连接内网服务器
五、让客户端访问服务端内网网段
在服务端添加iptables规则
iptables -I FORWARD -i tun1 -j ACCEPT