文章目录
1 概述
1.1 什么是FRP?
- FRP是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。
- 可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。
1.2 什么是OpenVPN?
OpenVPN是一个用于创建虚拟私人网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSL/TLS协议函数库。
1.3 应用场景
居家办公无疑是未来办公的一种趋势,疫情原因,很多居家办公的朋友们可能会通过向日葵、TV等工具进行远程服务连接,但总有那么些不尽人意,稳定性也差,当然不可否认的,可视化是其亮点,那么如何无缝的通过家里局域网直接访问公司内网呢,上述的OpenVPN上绝对的利器之一,相较于PPTP、L2TP的性能可自行查阅。为什么由需要FRP呢,因为OpenVPN上C/S模式,即所有客户端必须能连接一个具有公网的Server(可通过路由器配置支持),但一般公司的出口公网地址是不稳定的,为达到目的,需要对内网进行穿透,这里我们选择FRP(N2N也是不错的)。
2 环境
拓扑图
软件
操作系统:Ubuntu18.04 Server
OpenVPN Server:脚本安装
OpenVPN Client:Viscosity(MacOS),其他操作系统可自行下载相应客户端
3 配置FRP
3.1 FRP服务端配置
在FRP Server服务器上下载解压后免编译配置
frps.ini
:
[common]
bind_port = 9070 # 服务端口
dashboard_port = 7500 # 面板ID
dashboard_user = admin # 用户名
dashboard_pwd = '123@abcd' # 密码
配置完成后运行服务
$ nohup ./frps -c frps.ini > frps.log
3.2 FRP客户端配置
在控制服务器(FRP Client)上配置:
frpc.ini
:
[common]
server_addr = 106.12.xx.xxx # FRP Server公网地址
server_port = 9070 # FRP Server配置的bind_port
[tanwei-test] # 客户端唯一标识
type = tcp
local_ip = 127.0.0.1
local_port = 1194
remote_port = 10086 # 穿透端口,想访问内网服务,需要通过此端口转发,OpenVPN Client配置时需要使用
配置完成后运行服务
$ nohup ./frpc -c frpc.ini > frpc.log
配置完成后,可打开http://106.12.xx.xxx:7500查看穿透是否成功
4 配置OpenVPN
4.1 OpenVPN服务端配置
在控制服务器(OpenVPN Server)上下载安装文件(上文有地址获取):
$ bash openvpn-install.sh
$ bash openvpn-install.sh
Welcome to OpenVPN-install!
The git repository is available at: https://github.com/angristan/openvpn-install
It looks like OpenVPN is already installed.
What do you want to do?
1) Add a new user
2) Revoke existing user
3) Remove OpenVPN
4) Exit
Select an option [1-4]:
安装过程中,新增一个用户时,协议填写TCP,服务地址为FRP Server公网IP,端口为穿透端口,即上述的10086
4.2 OpenVPN客户端配置
在上文配置服务端时,同时会生成一个客户端文件,客户端端文件基本信息如下:
client
proto tcp-client
remote 106.12.xx.xxx 10086
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_XWxleL7XZuo6GCJu name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
<ca>
-----BEGIN CERTIFICATE-----
....
4.3 客户端使用(MacOS下)
一切准备就绪后,打开Viscosity,导入客户端文件,如图所示:
右击文件项连接后,等待连接,连接过程中可查看是否有错误日志,连接成功后如下图:
至此,所有环境搭建已完成,可测试从OpenVPN客户端所在宿主机去访问所要访问的内网资源。