frp实现内网穿透
没有公网IP是一件很不方便的事情,尤其是在国内的网络环境。例如在校园网情况下想要使用远程桌面,只能使用第三方远程桌面软件。为了解决这个问题,则需要内网穿透。
What is frp?
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
准备工作
在使用frp之前,需要一台有公网IP的服务器,一台需要实现内网穿透的机器客户端。
另外如果需要搭建web服务穿透,最好好要有域名。
frp软件包下载地址为:https://github.com/fatedier/frp/releases
根据自己的系统选择合适、稳定的版本。特别注意,服务器和客户端使用的frp版本要一致。
服务器
下载frp
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar命令解压
tar -zxv
使用cd指令进入解压出来的文件夹,里面包括了服务器端和客户端程序,以及配置文件实例等
cd frp_0.36.2_linux_amd64/
ls
Snipaste_2021-05-08_22-31-51.png
编辑配置文件
vi frps.ini
frp运行时占用的端口的需要防火墙允许,frp才能正常运行。防火墙端口配置可参考CentOS 7防火墙 - 简书
[common]
#frp监听端口
bind_port = 7000
#鉴权令牌
token = 123123
#web代理占用端口
vhost_http_port = 8080
#开启仪表盘,也就是web后台管理
dashboard_port = 7700
dsshboard_user = username
dashboard_pwd = 123456
[common]bind_port = 7000部分是必须有的配置,为了安全起见,token也必须配置一下。保存配置文件后,就可以启动了。
./frps -c ./frps.ini
Snipaste_2021-05-08_22-50-33.png
到此为止,服务器端就配置好了。
客户端
下载frp,前面一系列的操作和服务器端一样
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar -zxv
cd frp_0.36.2_linux_amd64/
编辑客户端配置文件
vi frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 123123
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web]
type = http
local_port = 80 #本地web监听端口
custom_domains = xxx.com
[desktop]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
#remote_port:个人使用端口,不能重复
remote_port = 1892
保存配置,输入以下指令运行frp客户端。
./frpc -c ./frpc.ini
Snipaste_2021-05-08_23-17-05.png
此时在服务端会看到"start proxy sucess"字样,即连接成功。
可以通过服务器ip:6000和客户端建立ssh连接。
win可以通过服务器ip:1892进行远程桌面。
web服务可以通过xxx.com:8080访问。
服务器ip:7700可以在web浏览器对frp进行监控。
如果连接失败,大部分可能是防火墙原因,一定要记得开放对应端口。
后续frp管理
此时如果断开与服务端或者客户端的SSH连接(比如关掉了Xshell)也就中止了frp的运行。让服务端的frp和客户端的frp在后台运行,方法很多,这里直接使用nohup指令。
服务器:
nohup ./frps -c ./frps.ini &
客户端:
nohup ./frpc -c ./frpc.ini &
小结
frp的配置还是比较简单,一些特性功能可直接参考官方文档 | frp