Linux下配置frp实现内网穿透
Linux下配置frp实现内网穿透
准备工作
FRP(Fast Reverse Proxy)是一种高性能的反向代理工具,可用于内网穿透、安全访问和数据传输等场景。本文主要介绍通过frp实现内网穿透,使外部用户能够访问内网服务器。配置frp的基础要求包括:
- 需要一台云服务主机/实体主机作为服务端,服务端需要有公网ip
- 将被访问的内网服务器作为客户端
- 客户端需要与一个能与服务端相互ping通的设备连接,例如与一台能访问公网的路由器相连
如果内网服务器完全处在vpn范围内(例如只能通过校园网连接),则服务端也需要配置相同的vpn,以保证两者相互连通
配置工作
- step1:在服务端和客户端上,下载frp软件包并解压缩
方式一:如果服务器不能直接wget到github,可以先在github官网链接上,将所需版本下载到本地,然后通过scp等方法传输到服务端和客户端上。
方式二:如果可以直接访问github,则使用wget命令下载,例如wget https://github.91chi.fun//https://github.com//fatedier/frp/rleases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
对下载文件进行解压缩操作,例如tar -xzvf frp_0.48.0_linux_amd64.tar.gz
- step2:配置服务端文件
进入解压缩后的目录,对frps.ini
文件进行修改。主要修改内容可包括:绑定端口、控制台设置、token设置、超时设置等
例如,将frps.ini
文件配置为:
[common]
bind_port = 6130 //设置绑定端口,用于让客户端绑定
dashboard_user = admin
dashboard_pwd = pwdadmin //设置控制台的访问账号和口令
dashboard_port = 8000 //配置后,可用服务端ip:dashboard_port访问控制台
token = 123456 //用于客户端的认证
heartbeat_timeout = 30
开放端口:在配置frps.ini
文件之后,要将涉及的相关端口开放,例如bind_port, dashboard_port等。如果服务端采用的是云主机,可通过配置安全组规则修改;如果不是,可以通过firewall-cmd
命令查询和开启,例如查询指定端口6130是否开启:firewall-cmd --query-port=6130/tcp
,例如开启6130端口:firewall-cmd --zone=public --add-port=6130/tcp --permanent
,并firewall-cmd --reload
- step3:配置客户端文件
进入客户端frp目录,对frpc.ini
文件进行修改,主要修改内容包括:服务端ip和端口、token设置、ssh设置、超时设置等
例如,将frpc.ini
文件配置为:
[common]
server_addr = x.x.x.x //服务端的公网ip
server_port = 6130 //与服务端的bind_port相同
token = 123456 //与服务端token对应
[ssh101] //可设置ssh名称
type = tcp
local_ip = 192.168.1.101 //给一个本地ip即可
local_port = 22 //本地端口
remote_port = 6101 //ssh时使用的端口
heartbeat_timeout = 30
同理,客户端的防火墙对应端口也需要开启
- step4:运行服务
在服务端运行:nohup ./frps -c ./frps.ini &
,将./frps -c ./frps.ini
命令后台运行
在客户端运行:nohup ./frpc -c ./frpc.ini &
可以登录控制台(服务端ip:dashboard_port)查看当前连接情况,包括客户端数量、连接数量等