0X00 前言
在生活中,如果需要将内网的服务映射到公网,但自身环境又在一个大内网中,没有公网IP时,我们可以通过内网穿透来实现公网IP服务器来代理内网中的服务。
内网穿透的工具有很多,例如 花生壳等,但为了安全和扩展性,我这里使用开源的FRPS来进行穿透。
0X01 搭建FRPS服务端
FRPS的下载地址为:https://github.com/fatedier/frp/releases/tag/v0.37.1 。
在服务器上下载对应系统版本的软件包,本次用的是Ubuntu
,因此通过wget
下载软件包,并解压:
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
mv frp_0.37.1_linux_amd64/ frp/
cd frp/
进入到frp目录中,可以看到有以下文件:
其中,frpc
为客户端文件,我们此时搭建服务端,因此这些文件用不上,可以删除。
rm -f frpc frpc.ini frpc_full.ini
fprs.ini
是服务端的配置文件,我们通过vim编辑器修改配置如下:
bind_port = 9000
dashboard_port = 7500
token = 123456789
dashboard_user = liuxincode
dashboard_pwd = hello
vhost_http_port = 10080
vhost_https_port = 10443
其中,bind_port = 9000
值服务端监听端口为9000
。dashboard_port = 7500
为管理面板端口为7500
,token = 123456789
指客户端在连接到服务端时,需要提供值为123456789
的token
才允许注册。dashboard_user = liuxincode
和 dashboard_pwd = hello
指的是在进入管理面板时的账号为liuxincode
,密码为hello
。vhost_http_port = 10080
和vhost_https_port = 10443
分别为代理http和https的端口为10080
和10443
。
接下来,我们直接运行frps
,并给他指定配置文件为frps.ini
。
nohup ./frps -c frps.ini >info.log &
此时,FRP服务端已经搭建完毕。
0X02 FRPC的使用
在需要进行穿透的机器上,下载frp客户端( https://github.com/fatedier/frp/releases/tag/v0.37.1 )。
编辑frpc.ini
配置文件:
[common]
server_addr = 47.101.205.141
server_port = 9000
token = 123456789
[liuxincode_tomcat]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 18080
[liuxincode_web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 10080
在上述配置中,common
节点下配置我们服务端信息,其中server_addr
填写部署了frps服务器的公网IP地址。server_port
和token
填写frps配置中的bind_port
和 token
。
[liuxincode_tomcat]
和 [liuxincode_web]
是自己定义的两个穿透服务的名称,type填写需要实现穿透的协议类型,local_ip
填写内网ip,local_port
填写服务端口,remote_port
填写一个远程服务器未使用的端口。
运行frpc程序,我们可以通过 server_addr + remote_port
来访问 local_ip + local_port
的服务。
0X03 使用FRP dashboard面板
浏览器打开我们的server_addr
+ dashboard_port
地址,如:0.0.0.0:7500,在弹出的账号密码输入框中输入服务端配置的dashboard_user
和dashboard_pwd
登录成功后即可进入面板。