VPN部署技术主要有3类
点对点的隧道协议(PPTP): 两个隧道,TCP连接隧道,GRE传输隧道
互联网协议安全(IPSec): 基于IP,加密认证每个IP数据包,技术成熟,配置复杂,典型代表strongSwan和FreeS/WAN。
安全接口层/安全传输层协议(SSL/TLS): 使用证书进行认证,使用非对称算法对数据加密。通过对tun/tap设备实现用户态程序和内核的交互。典型代表OpenVPN。
OpenVPN的特性
对任何网络通过一个UDP或者TCP端口连建立隧道
可架构集群系统,支持上千用户连接
使用openSSL库的任意加密算法,可以选择静态密码或者证书公私钥加密
可以对数据流实时压缩
支持NAT,也提供windows和mac的GUI工具等等
支持对端DHCP
配置简单,学习成本低
点对点的OpenVPN部署
需求:远程数据库的备份等
client(121.22.17.88)<——>Internet<——> server(88.22.17.18)
1.安装
server和client同时执行:
# lzo库用户压缩,openssl用于加密yum install -y lzo lzo-devel openssl openssl-devel# 需要epel扩展yum install -y openvpn
2.在server端生成静态密码keke.key,并把该文件传给client(也可以复制key的内容,但注意600权限)
openvpn --genkey --secret keke.keyll keke.key-rw------- 1 root root 637 Oct 1 12:35 keke.key
3.创建隧道
server
openvpn --remote 121.22.17.88 --dev tun0 --ifconfig 10.10.10.1 10.10.10.2 --secret keke.key --daemon
client
openvpn --remote 88.22.17.18 --dev tun0 --ifconfig 10.10.10.2 10.10.10.1 --secret keke.key --daemon
--ifconfig,指定隧道本端和对端ip地址,注意顺序
--daemon,指定使用daemon进程模式
5.验证
client
#可以ping通,可以ssh过去说明成功了ping 10.10.10.1ssh 10.10.10.1#openvpn默认会使用udp的1194端口,注意开启ss -tunlpudp UNCONN 0 0 *:1194 *:* users:(("openvpn",10386,5))#日志信息在/var/log/messages,可以分析排错
6.流程

tun和tap是linux的虚拟网络设备,tun可以理解为点对点的设备,tap可理解为Ethernet设备,tun工作流程如上图所示,接收过程箭头反过来。
远程访问虚拟专用网络部署

在服务器生成CA证书,服务器证书,客户端证书(方法不唯一)
yum install easy-rsa -ycp vars.example etc/openvpn/easy-rsa/varscp -r /usr/share/easy-rsa/3.0.6/* /etc/openvpn/easy-rsa/cp /usr/share/doc/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/cat >> /etc/openvpn/easy-rsa/vars <<EOFexport KEY_COUNTRY="CN"export KEY_PROVINCE="js"export KEY_CITY="hah"export KEY_ORG="ha"export KEY_EMAIL="haha@keke.cn"export KEY_OU="I see you"EOFsource ./vars./easyrsa init-pki./easyrsa build-ca./easyrsa gen-req vpnserver./easyrsa sign server vpnserver./easyrsa gen-req vpnclient./easyrsa sign client vpnclient./easyrsa gen-dhopenvpn --genkey --secret ta.key#证书生成过程中,会填写一个common name字段,建议不要乱写
2.服务端配置openvpn
cat /etc/openvpn/server.confport 1194proto udpdev tun#证书文件的位置按实际ca /etc/openvpn/easy-rsa/pki/ca.crtcert /etc/openvpn/easy-rsa/pki/vpnserver.crtkey /etc/openvpn/easy-rsa/pki/vpnserver.keydh /etc/openvpn/easy-rsa/pki/dh.pemserver 10.10.10.0 255.255.255.0 #分配给客户端的隧道ip池push "route 172.16.88.0 255.255.255.0" #允许客户端访问内网route 192.168.0.0 255.255.255.0 #配置服务器增加一条到客户端网络的路由client-to-clientkeepalive 10 120comp-lzo #启用压缩max-clients 100user nobodygroup nobodypersist-key #收到SIGUSR1时不重新读取key文件persist-tun #收到SIGUSR1时不关闭tun虚拟网口status /var/log/openvpn-status.log #指定状态日志位置log-append /var/log/openvpn.logverb 4
启用iptables转发(此步骤当需要直接访问后端服务器时才需要)
echo 1 >/proc/sys/net/ipv4/ip_forward#tun0本质还是网卡,所以要配置转发支持iptables -A FORWARD -i tun0 -j ACCEPTiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE#同时在后端服务器增加一条路由route add -net 192.168.0.0/24 gw 172.16.88.2
启动
openvpn --daemon --config etc/openvpn/server.conf
3.客户端配置(一般为windows)
下载地址:https://files02.tchspt.com/storage2/temp/openvpn-install-2.4.7-I606-Win10.exe
安装就不说了,把需要的证书文件及配置文件vpnclient.ovpn放入config即可,配置文件内容如下。
clientproto udpdev tunremote 22.22.22.22 1194 #按实际地址修改nobindca ca.crtcert vpnclient.crtkey vpnclient.keyns-cert-type serverkeepalive 10 120comp-lzomax-clients 100persist-keypersist-tunverb 4log-append /var/log/openvpn.log
最后启动连接就行了,如果有问题(应该不会有),请查看日志。
部分内容来自网络,如有侵权请联系作者删除。




