open***隧道手动搭建流程(2)
一.两个互相能访问公网,创建点对点访问连接,不需要证书
1.下载安装(二选一)
1)网络安装
1 2 | yum install -y epel-release yum install -y openvpn openssl ca-certificates |
2)下载编译安装
1 | 下载地址:https: //github .com /OpenVPN |
2.创建服务端配置文件(点对点的访问)
1 2 3 4 5 6 7 8 9 10 | 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.生成密钥
1 | openvpn --genkey --secret /etc/openvpn/stock .key |
4.密钥复制到客户端服务器的对应目录
5.配置客户端服务器的配置文件
1 2 3 4 5 6 7 8 9 10 | 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.启动服务端
1 | openvpn /etc/openvpn/server .conf |
7.启动客户端
1 | openvpn /etc/openvpn/client .conf |
8.此时这两个服务器可以访问了
二.服务端在公网,客户端可不在公网,客户端主动找服务端, 创建点对点访问连接,不需要证书
1.修改服务端配置文件(去掉remove,rport)
1 2 3 4 5 6 7 8 | 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.配置客户端服务器的配置文件(不变)
1 2 3 4 5 6 7 8 9 10 | 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.启动服务端
1 | openvpn /etc/openvpn/server .conf |
4.启动客户端
1 | openvpn /etc/openvpn/client .conf |
三.基于证书认证的连接(点对多点)(非对称加密,基于ca签名认证)
服务端,客户端都需要安装
1.证书制作(easy-rsa工具)
1 2 3 4 5 | 下载工具: 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.初始化
1 | . /easyrsa init-pki |
3.创建根证书
1 2 3 4 5 | . /easyrsa build-ca 输入私钥密码:123456(自己确定) 输入确定密码:123456 输入证书名字:CA 此时kpi /ca .crt证书生成了 |
4.为服务器创建证书
1 2 3 4 5 | . /easyrsa gen-req server nopass 输入证书申请人:server 此时生成了 * req: . /pki/reqs/server .req # 证书信息 * key: . /pki/private/server .key # 证书私钥 |
5.为此证书做个签名(./easyrsa sign server [证书名字])
1 2 3 4 | . /easyrsa sign server server 输入确认: yes 输入ca.key的密码:123456 此时生成了server的证书. /pki/issued/server .crt |
6.生成通信协商文件
1 2 | . /easyrsa gen-dh 此时生成参数协商文件. /pki/dh .pem |
7.以下文件都复制到服务配置文件目录(证书,私钥,ca根证书,协商文件)
1 2 3 4 | 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.生成客户端私钥证书
1 2 3 4 5 | . /easyrsa gen-req client nopass 输入证书申请人:client 此时生成了 * req: . /pki/reqs/client .req # 证书信息 * key: . /pki/private/client .key # 证书私钥 |
9.为客户端证书做个签名(./easyrsa sign client [证书名字])
1 2 3 4 | . /easyrsa sign client client 输入确认: yes 输入ca.key的密码:123456 此时生成了client的证书. /pki/issued/client .crt |
10.客户端文件复制到客户端配置文件目录(ca证书,私钥,证书)
1 2 3 | cp . /kpi/ca .crt /etc/openvpn/client/ cp . /pki/private/client .key /etc/openvpn/client/ cp . /pki/reqs/client .req /etc/openvpn/client/ |
11.修改服务端配置文件
1 2 3 4 5 6 7 8 9 10 11 12 | 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.配置客户端服务器的配置文件
1 2 3 4 5 6 7 8 9 10 11 | 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.启动服务端
1 | openvpn /etc/openvpn/server/server .conf |
14.启动客户端
1 | openvpn /etc/openvpn/client/client .conf |
四.其他需求
1)客户端之间不互通
服务端server.conf里面添加添加参数client-to-client
2)借助某个客户端去访问此客户端的所在内网的所有主机
①先给此客户端分配一个固定ip地址
1 2 3 | 服务端server.conf里面添加添加以下参数 topology subnet cilent-config- dir ccd |
②在服务端目录里面创建目录ccd,在目录创建(和此客户端配置证书相同的名字(无后缀名))文件
1 2 | 在文件添加如下参数(ipconfig-push 固定ip 掩码) ipconfig-push 10.8.0.3 255.255.255.0 |
③此客户端开启路由转发功能
1 2 3 | vim /etc/sysctl .conf net.ipv4.ip_forward = 1 sysctl -p |
④ 服务端配置路由推送
1 2 3 | 在ccd目录和此客户端配置证书相同的名字(无后缀名)文件添加参数如下:(iroute 所要访问的网段 掩码) ipconfig-push 10.8.0.3 255.255.255.0 iroute 192.168.206.0 255.255.255.0 |
⑤服务端server.conf里面添加添加以下参数
1 | push "route 192.168.206.0 255.255.255.0" |
⑥此时已能够访问此客户端服务器所在的内网ip
如果想访问此客户端的所在内网的所有主机,需要在被访问的所有主机添加一条回程路由:(route add <vpn网段> mask <掩码> <vpn客户端的内网ip>)
1 | route add 10.8.0.0 mask 255.255.255.0 192.168.206.28 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义