祝福祖国生日快乐! 虚拟专用网络(Virtual Private Network)是架设在公网设施上,建立私有和安全的连接,为通信提供安全保护的技术。当然,对个人而言,它还有一个更有用的好处,就不在此赘述了。 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.key
ll 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.110.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.1 ssh 10.10.10.1 #openvpn默认会使用udp的1194端口,注意开启 ss -tunlp udp UNCONN 0 0 *:1194 *:* users:(("openvpn",10386,5)) #日志信息在/var/log/messages,可以分析排错 6.流程 ![]() tun和tap是linux的虚拟网络设备,tun可以理解为点对点的设备,tap可理解为Ethernet设备,tun工作流程如上图所示,接收过程箭头反过来。 远程访问虚拟专用网络部署 ![]()
yum install easy-rsa -y cp vars.example /etc/openvpn/easy-rsa/vars cp -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 <<EOF export 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" EOF source ./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-dh openvpn --genkey --secret ta.key #证书生成过程中,会填写一个common name字段,建议不要乱写 2.服务端配置openvpn cat/etc/openvpn/server.conf port1194 protoudp devtun #证书文件的位置按实际 ca/etc/openvpn/easy-rsa/pki/ca.crt cert/etc/openvpn/easy-rsa/pki/vpnserver.crt key /etc/openvpn/easy-rsa/pki/vpnserver.key dh/etc/openvpn/easy-rsa/pki/dh.pem server 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-client keepalive 10 120 comp-lzo#启用压缩 max-clients100 usernobody groupnobody persist-key #收到SIGUSR1时不重新读取key文件 persist-tun#收到SIGUSR1时不关闭tun虚拟网口 status /var/log/openvpn-status.log #指定状态日志位置 log-append/var/log/openvpn.log verb 4 启用iptables转发(此步骤当需要直接访问后端服务器时才需要) echo 1 >/proc/sys/net/ipv4/ip_forward #tun0本质还是网卡,所以要配置转发支持 iptables -A FORWARD -i tun0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -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即可,配置文件内容如下。 client protoudp devtun remote 22.22.22.22 1194#按实际地址修改 nobind caca.crt certvpnclient.crt keyvpnclient.key ns-cert-typeserver keepalive10 120 comp-lzo max-clients100 persist-key persist-tun verb4 log-append /var/log/openvpn.log 最后启动连接就行了,如果有问题(应该不会有),请查看日志。 部分内容来自网络,如有侵权请联系作者删除。 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:爱可可的运维笔记,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |