在工作中,我们常常需要实现内网穿透功能,例如:在公网临时访问公司内部的web系统,在公网登录公司内部的服务器。
以前,为了实现这样的需求,部分公司会购买VPN(虚拟专用网),甚至自行开发内网穿透的软件;对于个人,则常常借助于花生壳来实现这样的需求。
如今,我们可以使用开源软件frp,轻松地实现穿透内网的功能。
1、frp介绍frp,是Fast Reverse Proxy的缩写,即“快速反向代理”。
通过使用frp,我们可以将内网某个服务器的端口,转换为公网上某台服务器上的某个端口来公开。
frp的架构如下所示:
通过这个架构图,我们可以看到,frp包括服务器(frps)和客户端(frpc);通过frp,借助一台公网的机器,我们可以将内网的多个服务对外公开。
2、frp软件的获取frp软件,可以通过github来获取。在github中输入frp,第一项就是我们寻找的软件:
点击这个项目,我们即可获得frp的源代码,点击code,下载得到的文件frp-dev.zip即为frp的源代码。
如果希望直接下载软件,可以点击该页面中的“Release”链接:
点击链接后,可以看到如下的软件版本:
这里根据实际情况,我下载了64位Linux版本,得到frp_0.37.0_linux_amd64.tar.gz。
3、frp的安装frp的安装比较简单,将frp_0.37.0_linux_amd64.tar.gz发送到要安装的机器,解开即可:
解开后,我们将得到frp_0.37.0_linux_amd64目录,目录中的文件,我们直接使用的,也就6个:
frpc——客户机运行的程序
frpc_full.ini——客户机上的最全配置文件样例
frpc.ini——客户机上的配置文件
frps——服务器运行的程序
frps_full.ini——服务器上的最全配置文件样例
frps.ini——服务器上的配置文件
4、frp的使用使用frp,我们可以将TCP或UDP端口开放出去,使得原来只能在内网可以使用的服务,在外网也能使用。
为了试验frp的功能,我在家找了一台破旧电脑,安装了Ubuntu操作系统,然后想办法通过腾讯云上的一台服务器,将家用电脑上22号TCP端口公开出去,看能不能在外网使用ssh登录家用电脑的Ubuntu系统。
这是我本次操作的完整过程:
第1步:将frp_0.37.0_linux_amd64.tar.gz分别发送到腾讯云服务器和家用电脑上,然后解开;
第2步:在腾讯云服务器上修改frps.ini文件,将内容修改为:
[common]
bind_port = 7000
log_file = ./frps.log
log_level = info
token = ABC1234567890
这些配置项的含义是:
(1)frps启动时,监听7000端口;
(2)运行日志写入到frps.log文件,日志的记录级别是info级别;
(3)frpc连接时,需要提供的token信息为ABC1234567890。
第3步:在腾讯云服务器上启动frps,执行的命令是:
./frps -c frps.ini
这是执行时frps.log文件的内容:
第4步:在家用电脑上修改frpc.ini文件,将内容修改为:
[common]
server_addr = 10.88.8.88
server_port = 7000
token = ABC1234567890
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
这些配置项的含义是:
(1)frpc连接的frps的IP地址是10.88.8.88,端口是7000;
(2)frpc链接frps时,需要提供的token是ABC1234567890;
(3)ssh服务在本地的端口是22,映射到服务器的端口是6000;
第5步:在家用电脑上启动frpc,执行的命令是:
./frpc -c frpc.ini
这是执行时的打印信息:
第6步:尝试用PUTTY或其他登录ssh服务的工具,登录家用电脑。这里使用腾讯云服务器的IP地址,端口为frpc上设置的6000:
这时,我发现可以登录到家用电脑了:
感觉太美好了!
5、后记frp软件用起来确实非常简单,而功能却极为强大,唯一的缺点,就是我们需要拥有一台外网的服务器。
当然,我们只需要一台服务器作为frps就可以了,这台服务器同时为多个frpc提供服务。
最新评论