1.前言
在企业中,公司内局域网可以互相通信,也可以访问互联网,同时也可以访问云服务器公网IP,但是访问不了云服务器内网范围内的其他服务器。
众所周知,两个局域网之间是无法互相通信的,但是我们可以在它们之间加个openVPN,内网之间就可以互相通信啦
果然,李某才是国服第一灵魂画手!
2.openVPN服务端部署
1.环境准备
openvpn服务端: 10.0.0.61 内网: 172.16.1.61
后端内网资源: 172.16.1.0/网段
2.生成证书
#下载安装生成证书工具 [root@openvpn ~]# yum install -y easy-rsa #准备证书 [root@openvpn ~]# mkdir /opt/easy-rsa [root@openvpn ~]# cd /opt/easy-rsa [root@openvpn /opt/easy-rsa]# cp -a /usr/share/easy-rsa/3.0.7/* ./ [root@openvpn /opt/easy-rsa]# cp -a /usr/share/doc/easy-rsa-3.0.7/vars.example ./vars #编辑模板文件 [root@openvpn /opt/easy-rsa]# vim vars set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Shanghai" set_var EASYRSA_REQ_CITY "Shanghai" set_var EASYRSA_REQ_ORG "lx" set_var EASYRSA_REQ_EMAIL "lixian656@qq.com" set_var EASYRSA_NS_SUPPORT "yes" #初始化证书 [root@openvpn /opt/easy-rsa]# ./easyrsa init-pki #生成根证书 [root@openvpn /opt/easy-rsa]# ./easyrsa build-ca Enter New CA Key Passphrase: #设置密码, 最多四位数 Re-Enter New CA Key Passphrase: #确认密码 下一步回车即可 #生成服务端证书 [root@openvpn /opt/easy-rsa]# ./easyrsa gen-req server nopass 回车即可 #给服务端证书签名 [root@openvpn /opt/easy-rsa]# ./easyrsa sign server server 根据提示输入 yes 输入跟证书密码 #生成一个算法 [root@openvpn /opt/easy-rsa]# ./easyrsa gen-dh #创建客户端证书 [root@openvpn /opt/easy-rsa]# ./easyrsa gen-req client nopass #给客户端证书签名 [root@openvpn /opt/easy-rsa]# ./easyrsa sign client client #安装OpenVPN [root@openvpn /opt/easy-rsa]# yum install -y openvpn #配置OpenVPN(把以下内容写入进去) [root@openvpn /opt/easy-rsa]# vim /etc/openvpn/server.conf port 1194 #端口 proto udp #协议 dev tun #采用路由隧道模式tun ca ca.crt #ca证书文件位置 cert server.crt #服务端公钥名称 key server.key #服务端私钥名称 dh dh.pem #交换证书 server 10.8.0.0 255.255.255.0 #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同 push "route 172.16.1.0 255.255.255.0" #允许客户端访问内网172.16.1.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 #客户端与客户端之间支持通信 log /var/log/openvpn.log #openvpn日志记录位置 persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys。 persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup duplicate-cn #拷贝证书 [root@openvpn /opt/easy-rsa]# cd /etc/openvpn/ [root@openvpn /etc/openvpn]# ll total 4 drwxr-x--- 2 root openvpn 6 2020-04-25 05:23 client drwxr-x--- 2 root openvpn 6 2020-04-25 05:23 server -rw-r--r-- 1 root root 1029 2020-05-27 10:38 server.conf [root@openvpn /etc/openvpn]# cp -a /opt/easy-rsa/pki/ca.crt ./ [root@openvpn /etc/openvpn]# cp -a /opt/easy-rsa/pki/issued/server.crt ./ [root@openvpn /etc/openvpn]# cp -a /opt/easy-rsa/pki/private/server.key ./ [root@openvpn /etc/openvpn]# cp -a /opt/easy-rsa/pki/dh.pem ./ [root@openvpn /etc/openvpn]# ll total 24 -rw------- 1 root root 1172 2020-05-27 10:20 ca.crt drwxr-x--- 2 root openvpn 6 2020-04-25 05:23 client -rw------- 1 root root 424 2020-05-27 10:26 dh.pem drwxr-x--- 2 root openvpn 6 2020-04-25 05:23 server -rw-r--r-- 1 root root 1029 2020-05-27 10:38 server.conf -rw------- 1 root root 4795 2020-05-27 10:23 server.crt -rw------- 1 root root 1708 2020-05-27 10:22 server.key #启动openvpn [root@openvpn /etc/openvpn]# systemctl -f enable openvpn@server.service [root@openvpn /etc/openvpn]# systemctl start openvpn@server.service
3.导出证书到桌面
[root@openvpn /etc/openvpn]# sz /opt/easy-rsa/pki/ca.crt [root@openvpn /etc/openvpn]# sz /opt/easy-rsa/pki/issued/client.crt [root@openvpn /etc/openvpn]# sz /opt/easy-rsa/pki/private/client.key
3.客户端部署
1.安装openVPN
[root@web01 ~]# yum install openvpn -y [root@web01 ~]# cd /etc/openvpn/
2.创建配置文件路径
[root@web01 /etc/openvpn]# mkdir config [root@web01 /etc/openvpn]# cd config/
3.上传证书
[root@web01 /etc/openvpn/config]# rz -E [root@web01 /etc/openvpn/config]# ll -rw-r--r-- 1 root root 1172 9月 1 16:00 ca.crt -rw-r--r-- 1 root root 4668 9月 1 16:04 client.crt -rw-r--r-- 1 root root 1704 9月 1 16:03 client.key
4.编辑client.ovpn文件
[root@web01 /etc/openvpn/config]# touch client.ovpn [root@web01 /etc/openvpn/config]# vim client.ovpn client #指定当前VPN是客户端 dev tun #使用tun隧道传输协议 proto udp #使用udp协议传输数据 remote 10.0.0.61 1194 #openvpn服务器IP地址端口号 resolv-retry infinite #断线自动重新连接,在网络不稳定的情况下非常有用 nobind #不绑定本地特定的端口号 ca ca.crt #指定CA证书的文件路径 cert client.crt #指定当前客户端的证书文件路径 key client.key #指定当前客户端的私钥文件路径 verb 3 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细 persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的。否则网络会先linkdown然后再linkup remote-cert-tls server
5.启动openVPN客户端
后面加个 & 是后台启动 [root@web01 /etc/openvpn/config]# openvpn client.ovpn &