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

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