使用frp实现内网穿透

1、介绍

​ 当我们想把内网的一些资源暴露在公网上时,可以使用内网穿透功能。比如公司的内网服务器,部署了平时需要开发的项目,但是回到家中无法访问,就可以使用内网穿透,将公司内网的接口映射到一台公网的服务器上,用这台公网服务器做转发即可实现在家中也能外网访问。这样的就不需要我们在公网上部署一套一模一样的服务了,费时费力,而且还要同步数据。

2、准备工作

​ 想要实现内网穿透功能首先我们需要准备:

  • 一台公网服务器(用作frp的服务端)
  • 一台需要做转发的内网服务器(用作frp的客户端)

3、frp服务端安装及配置

3.1 下载frp服务端

​ 注意frp服务端是安装在公网服务器上的!!!

​ 服务端下载地址:https://github.com/fatedier/frp/releases

使用frp实现内网穿透_第1张图片

​ 可以看到有很多版本,我的外网服务器是Linux的,可以输入命令查看服务器架构版本:

arch

在这里插入图片描述

​ x86_64 直接下载 frp_0.51.2_linux_amd64.tar.gz 后缀为 amd64 这个版本即可。可以手动下载到本地,然后通过scp命令传到服务器,也可以直接在外网服务器上下载。

​ 通过scp传送到外网服务器命令(如果开放了账号密码登录):

scp -P ssh开放的端口(如果为22,可以不用带此参数) 下载的frp_0.51.2_linux_amd64.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -P 22 C:\Users\dxc\Downloads\frp_0.51.2_linux_amd64.tar.gz [email protected]:/home/frp

​ 按下回车,再输入密码即可(注意大小写)。

​ 通过scp传送到外网服务器命令(只开放了通过证书登录的方式):

scp -i 你证书的位置 -P ssh开放的端口(如果为22,可以不用带此参数) -r 下载的frp_0.51.2_linux_amd64.tar.gz的位置 登录的账号@外网服务器ip:你要拷贝到的外网服务器的位置

​ 如:

scp -i C:\Documents\server-pro\ecmarkets-universal.pem -P 22 C:\Users\dxc\Downloads\frp_0.51.2_linux_amd64.tar.gz [email protected]:/home/frp

​ 直接在外网服务器上下载命令:

wget https://github.com/fatedier/frp/releases/download/v0.51.2/frp_0.51.2_linux_amd64.tar.gz

​ 下载完成后解压,输入命令:

tar -zxvf frp_0.42.0_linux_amd64.tar.gz

​ 解压完成后cd进入目录:

cd frp_0.42.0_linux_amd64

​ 查看当前目录下的文件:

ll

​ 我们能看到有如下这些文件:

使用frp实现内网穿透_第2张图片

​ 其中作为服务端,我们只需要关注 frps 和 frps.ini 文件。

3.2 frps配置

​ 其中 frps.ini 文件就是我们服务端的配置文件,我们需要根据自己情况稍作修改。输入命令:

vim frps.ini

​ 默认配置如图:

在这里插入图片描述

​ 我们可以根据自己的场景稍作修改:

[common]
bind_port = 7001
dashboard_port = 7501
dashboard_user = root
dashboard_pwd = 123456
token = qwer1234

​ 其中:

  • bind_port:客户端和服务端连接的端口,在配置客户端的时候要用到。
  • dashboard_port:服务端可视化界面的端口,若使用7501端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7501。
  • dashboard_user:打开服务端可视化界面的用户名,可自行设置。
  • dashboard_pwd:打开服务端可视化界面的密码,可自行设置。
  • token:用于客户端和服务端连接的口令,可以自行设置,不用和我保持一样,但需要记住,配置客户端的时候会用到。

​ 注意:配置项并未介绍完,详情请参见官方文档。

使用frp实现内网穿透_第3张图片

3.3 frps启动

​ 输入启动命令,启动frp服务端:

./frps -c frps.ini

​ 如果看到控制台输出如图,代表启动成功:

在这里插入图片描述

​ 此时,我们打开浏览器输入:

xxx.xxx.xxx(你的外网服务器ip):你配置的dashboard_port端口

​ 即可看到如下弹框(如果你的打不开,请确认防火墙关闭,或者在你的云服务器上开放端口号):

​ 查看防火墙状态:

systemctl status firewalld

​ 关闭防火墙:

systemctl stop firewalld

使用frp实现内网穿透_第4张图片

​ 输入配置的账号密码,点击登录,进入仪表盘:

使用frp实现内网穿透_第5张图片

​ 此时frp的服务端我们就配置完毕了,接下来开始配置客户端。

4、frp客户端配置及启动

4.1 下载frp客户端及配置

​ 此处我用的是本地电脑作为客户端,本地电脑为win10,64位操作系统,其他操作系统流程几乎一致。客户端下载地址和服务端一样,均为:https://github.com/fatedier/frp/releases

​ 此处我下载 frp_0.51.2_windows_amd64.zip 这个版本。

使用frp实现内网穿透_第6张图片

​ 解压文件,进入frp_0.51.2_windows_amd64目录,我们需要关心的文件为 frpc.exe 和 frpc.ini,用编辑器打开 frpc.ini 文件:

使用frp实现内网穿透_第7张图片

使用frp实现内网穿透_第8张图片

​ 这是默认的客户端的配置,接下来我们需要修改一下:

[common]
server_addr = xxx.xxx.xxx
server_port = 7001
token = qwer1234

[rbac_study]
type = tcp
local_ip=127.0.0.1
local_port = 3781
remote_port=6001

​ 其中:

  • server_addr:你外网服务器的ip。
  • server_port:外网服务器配置的bind_port。
  • token:外网服务器配置的token。
  • [xxx]:表示一个规则的名称,可以自己定义,此处我定义为我项目的名称。
  • type:表示转发的协议类型,有tcp、udp等选项可以选择。此处我选择tcp。
  • local_ip:本地的ip。
  • local_port:本地服务的端口号。
  • remote_port:服务端开放的端口号,可以自己配置。到时候我们通过访问外网服务器(frps)的ip + 该端口号就能转发到本地服务器(frpc)的服务 local_ip + local_port 配置的端口上。

使用frp实现内网穿透_第9张图片

​ 配置好后点击保存。

4.2 frpc启动

​ 打开win10的 Windows PowerShell 工具(win10自带,不用下载,在左下角的搜索框中搜索打开即可)。切到我们frp客户端的配置文件 frpc.ini 所在目录:

cd E:\CommonSoftware\frp_0.51.2_windows_amd64

​ 输入启动命令,启动frp客户端(请不要直接双击frpc.exe文件打开!!!):

./frpc -c frpc.ini

​ 看到控制台输出如图,代表启动成功:

在这里插入图片描述

5、测试

​ 到此处,frps和frpc的所有配置和启动事项都完成了,接下来我们可以通过访问我们的外网服务器(frps)ip + 我们在本地服务器(frpc)中配置的 remote_port 端口,就能直接转发到我们的本地服务上了。

​ 我用本地的Java项目测试:

使用frp实现内网穿透_第10张图片

​ 我本地启动了一个端口为 3781 的 rbac_study 服务,接下来我访问外网服务器的ip + 本地服务器(frpc)中配置的 remote_port 端口,能看到穿透成功。如图:

在这里插入图片描述

你可能感兴趣的:(frp,内网穿透)