FRP——搭建内网穿透服务器
FRP—— Fast Reverse Proxy
软件介绍:
frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it supports TCP and UDP, as well as HTTP and HTTPS protocols, where requests can be forwarded to internal services by domain name. frp also has a P2P connect mode.
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
准备:
- 具备公网IP服务器(Ubuntu 18.04.4 LTS,阿里云)
- 本地计算机(Ubuntu 20.04 LTS)
操作:
1.FRP软件包
从github页面下载FRP软件包:https://github.com/fatedier/frp/releases
从中选择适合自己系统及架构的版本下载,并将软件包分别放在服务器和本地计算机中,任意位置均可。具体方法可以使用wget,也可以使用scp,方法不限。此次设置将软件包放在了/home路径下。
版本列表如下:
注1:软件包中包含服务器端和客户端两种程序,以frps和frpc区分。frps即为frp server,frpc即为frp client。
注2:可在终端中输入指令arch来查看架构。
root@iZ2zejeormv0s1jgutmmejZ:~# arch
x86_64
2.服务器FRP程序设置(frp server)
解压软件包:
tar -zxvf frp_0.33.0_linux_386.tar.gz
进入解压后软件包目录,并删除客户端文件:
rm -rf frpc*
3.服务器FRP配置(frp server)
打开frps.ini文件,并编辑参数:
设置bind_port参数,此端口用来连接客户端。
# frps.ini [common] bind_port = 7000
设置dash_board参数,分别设定端口号、登录用户名和登录密码。设定此参数后可以通过浏览器查看FRP的服务信息。
dashboard_port = 7201 dashboard_user = user dashboard_pwd = password
注:通过浏览器输入“服务器IP:7201”进行访问。
4.本地计算机FRP程序设置(frp client)
解压软件包:
tar -zxvf frp_0.33.0_linux_386.tar.gz
进入解压后软件包目录,并删除服务器端文件:
rm -rf frps*
5.客户端FRP配置(frp client)
[common]下设置服务器IP及端口,端口须与服务器中frps.ini文件的设置的相同。
[ssh]设置ssh服务映射:
local_port:设置为本地计算机ssh端口22
remote_port:设置与local_port相连接的服务器端口。
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 7200
注:可添加更多其它服务映射,具体设置请参考官方文档。
6.端口检查
确保服务器和本地计算机相关端口已打开,尤其是服务器会有相应的策略组,需在服务器控制台开启。可使用nmap等工具进行测试。
7.启动服务
在服务器运行服务端程序:
./frps -c frps.ini
服务端程序运行成功则显示如下信息:
2020/07/29 11:33:10 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000 2020/07/29 11:33:10 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500 2020/07/29 11:33:10 [I] [root.go:209] start frps success
在本地计算机运行客户端程序:
./frpc -c frpc.ini
客户端程序运行成功则显示如下信息:
2020/07/29 05:42:56 [I] [service.go:282] [26687067e8a12f6f] login to server success, get run id [26687067e8a12f6f], server udp port [0] 2020/07/29 05:42:56 [I] [proxy_manager.go:144] [26687067e8a12f6f] proxy added: [ssh] 2020/07/29 05:42:56 [I] [control.go:179] [26687067e8a12f6f] [ssh] start proxy success
8.测试
从别的计算机上通过以下指令则可连接到本地计算机。
ssh -oPort=7200 user@x.x.x.x
至此,成功从外网访问内网计算机,实现内网穿透。
注:更多功能使用及介绍可参考frp中文文档。
frp中文档:https://github.com/fatedier/frp/blob/master/README_zh.md
2020-07-29 14:10:11