open***隧道手动搭建流程(2)
一.两个互相能访问公网,创建点对点访问连接,不需要证书
1.下载安装(二选一)
1)网络安装
yum install -y epel-release yum install -y openvpn openssl ca-certificates
2)下载编译安装
下载地址:https://github.com/OpenVPN
2.创建服务端配置文件(点对点的访问)
vim /etc/openvpn/server.conf 内容如下: local 0.0.0.0 lport 1194 proto tcp remove 192.168.206.24(对端ip)# 写客户端器端ip rport 1194(对端port) dev tun ifconfig 10.8.0.1 10.8.0.2 (自己分配的ip 对端分配的ip) secret /etc/openvpn/stock.key (对称密钥)
3.生成密钥
openvpn --genkey --secret /etc/openvpn/stock.key
4.密钥复制到客户端服务器的对应目录
5.配置客户端服务器的配置文件
vim /etc/openvpn/client/client.conf 内容如下: local 0.0.0.0 lport 1194 proto tcp remove 192.168.206.26(对端ip) # 写服务器端ip rport 1194(对端port) dev tun # 三层协议,基于ip的 ifconfig 10.8.0.2 10.8.0.2 (自己分配的ip 对端分配的ip)# 这个ip位置对调 secret /etc/openvpn/stock.key (对称密钥)
6.启动服务端
openvpn /etc/openvpn/server.conf
7.启动客户端
openvpn /etc/openvpn/client.conf
8.此时这两个服务器可以访问了
二.服务端在公网,客户端可不在公网,客户端主动找服务端, 创建点对点访问连接,不需要证书
1.修改服务端配置文件(去掉remove,rport)
vim /etc/openvpn/server.conf 内容如下: local 0.0.0.0 lport 1194 proto tcp dev tun ifconfig 10.8.0.1 10.8.0.2 (自己分配的ip 对端分配的ip) secret /etc/openvpn/stock.key (对称密钥)
2.配置客户端服务器的配置文件(不变)
vim /etc/openvpn/client/client.conf 内容如下: local 0.0.0.0 lport 1194 proto tcp remove 192.168.206.26(对端ip) # 写服务器端ip rport 1194(对端port) dev tun # 三层协议,基于ip的 ifconfig 10.8.0.2 10.8.0.1 (自己分配的ip 对端分配的ip)# 这个ip位置对调 secret /etc/openvpn/stock.key (对称密钥)
3.启动服务端
openvpn /etc/openvpn/server.conf
4.启动客户端
openvpn /etc/openvpn/client.conf
三.基于证书认证的连接(点对多点)(非对称加密,基于ca签名认证)
服务端,客户端都需要安装
1.证书制作(easy-rsa工具)
下载工具: wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.5/EasyRSA-3.1.5.tgz 解压 tar zxvf EasyRSA-3.1.5.tgz cd EasyRSA-3.1.5
2.初始化
./easyrsa init-pki
3.创建根证书
./easyrsa build-ca 输入私钥密码:123456(自己确定) 输入确定密码:123456 输入证书名字:CA 此时kpi/ca.crt证书生成了
4.为服务器创建证书
./easyrsa gen-req server nopass 输入证书申请人:server 此时生成了 * req: ./pki/reqs/server.req # 证书信息 * key: ./pki/private/server.key # 证书私钥
5.为此证书做个签名(./easyrsa sign server [证书名字])
./easyrsa sign server server 输入确认:yes 输入ca.key的密码:123456 此时生成了server的证书./pki/issued/server.crt
6.生成通信协商文件
./easyrsa gen-dh 此时生成参数协商文件./pki/dh.pem
7.以下文件都复制到服务配置文件目录(证书,私钥,ca根证书,协商文件)
cp ./pki/issued/server.crt /etc/openvpn/server/ cp ./pki/private/server.key /etc/openvpn/server/ cp ./kpi/ca.crt /etc/openvpn/server/ cp ./pki/dh.pem /etc/openvpn/server/
8.生成客户端私钥证书
./easyrsa gen-req client nopass 输入证书申请人:client 此时生成了 * req: ./pki/reqs/client.req # 证书信息 * key: ./pki/private/client.key # 证书私钥
9.为客户端证书做个签名(./easyrsa sign client [证书名字])
./easyrsa sign client client 输入确认:yes 输入ca.key的密码:123456 此时生成了client的证书./pki/issued/client.crt
10.客户端文件复制到客户端配置文件目录(ca证书,私钥,证书)
cp ./kpi/ca.crt /etc/openvpn/client/ cp ./pki/private/client.key /etc/openvpn/client/ cp ./pki/reqs/client.req /etc/openvpn/client/
11.修改服务端配置文件
vim /etc/openvpn/server/server.conf 内容如下: local 0.0.0.0 lport 1194 proto tcp dev tun ca ca.crt cert server.crt key server.key dh dh.pem cipher AES-256-CBC server 10.8.0.0 255.255.255.0
12.配置客户端服务器的配置文件
vim /etc/openvpn/client/client.conf 内容如下: client # 指明自己是客户端 dev tun proto tcp remote 服务器端ip rport 1194 ca ca.crt cert client.crt key client.key cipher AES-256-CBC
13.启动服务端
openvpn /etc/openvpn/server/server.conf
14.启动客户端
openvpn /etc/openvpn/client/client.conf
四.其他需求
1)客户端之间不互通
服务端server.conf里面添加添加参数client-to-client
2)借助某个客户端去访问此客户端的所在内网的所有主机
①先给此客户端分配一个固定ip地址
服务端server.conf里面添加添加以下参数 topology subnet cilent-config-dir ccd
②在服务端目录里面创建目录ccd,在目录创建(和此客户端配置证书相同的名字(无后缀名))文件
在文件添加如下参数(ipconfig-push 固定ip 掩码) ipconfig-push 10.8.0.3 255.255.255.0
③此客户端开启路由转发功能
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
④ 服务端配置路由推送
在ccd目录和此客户端配置证书相同的名字(无后缀名)文件添加参数如下:(iroute 所要访问的网段 掩码) ipconfig-push 10.8.0.3 255.255.255.0 iroute 192.168.206.0 255.255.255.0
⑤服务端server.conf里面添加添加以下参数
push "route 192.168.206.0 255.255.255.0"
⑥此时已能够访问此客户端服务器所在的内网ip
如果想访问此客户端的所在内网的所有主机,需要在被访问的所有主机添加一条回程路由:(route add <vpn网段> mask <掩码> <vpn客户端的内网ip>)
route add 10.8.0.0 mask 255.255.255.0 192.168.206.28