frp 实现内网穿透远程连接内网PC
一、frp 的作用
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
二、安装 frp
FRP在Github开源:https://github.com/fatedier/frp
在releases页面下载对应的版本。压缩包只是对应平台不同,每个包解压都包含服务器端和客户端
1、在服务端您可以通过该命令下载
wget - O frp_0.44.0_linux_amd64.tar.gz https://www.zmy6.com/wp-content/uploads/fujian/frp_0.44.0_linux_amd64.tar.gz
2、使用命令解压压缩包
tar -xzvf frp_0.44.0_linux_amd64.tar.gz
解压文件压中包含客户端和服务端配置文件
- "frps"、"frps_full.ini"、"frps.ini"是放在服务器端运行的可执行文件和配置文件。
- "frpc"、"frpc_full.ini"、"frpc.ini"是放在客户端端运行的可执行文件和配置文件。
3、修改配置文件
使用命令vim frps.ini修改frps.ini文件,然后保存退出:
[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = 123456
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
说明:
- "bind_addr"是服务器本地IP,不改。
- "bind_port"是frp监听端口。
- "token"是验证token建议设置上。
- "dashboard_port"是frp面板端口。
- "dashboard_user""dashboard_pwd"是面板的账户密码。
除了"bind_addr"参数之外的其他参数,都可以根据需求自行修改,务必记住改过的参数。
4、服务器端frps赋予执行权限:
chmod 755 ./frps
5、运行frps
./frps -c ./frps.ini
可以配合nohup或者screen在让frps后台运行。注意防火墙或者宝塔之类放行响应的端口。登录网页查看一下是否确实成功运行
访问面板
面板仅供参考,可用可不用。访问 http://服务器ip:7500
上面配置的7500端口,使用上面配置的用户名和密码 admin/admin
客户端配置
下载frp
演示的客户端为windows,下载frp windows版"frp_0.44.0_windows_amd64.zip",解压进入文件夹:
修改配置文件
本地演示用到程序是windows远程桌面,使用3389端口。需要用frp将windows客户端的3389转发到服务器端上。比如将客户端的3389转发到服务器端的33389端口。用文本编辑器打开"frpc.ini"文件
注意配置文件不支持注释,请不要把汉字复制进去
[common]
server_addr = 155.94.169.143 #公网服务器ip
server_port = 7000 #与服务端bind_port一致
[yclj]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 3389是windows的远程连接端口
remote_port = 33389 # 远程服务器端口(自定义)
保存然后执行
windows 使用cmd或者powershell进入当前目录,执行
./frpc.exe -c ./frpc.ini
出现success就是连接成功
如果没有提示,请注意在服务器防火墙或者宝塔之类的管理面板里放行响应的端口!
现在我们在外网任意一台电脑,打开windows远程桌面程序,输入服务器ip:33389,就可以连接到本地windows了
原理
- 服务器端启动根据配置文件监听7000端口。客户端根据配置文件启动和服务器的frp 7000端口进行连接。
- 两者连接成功之后,客户端读取本地配置文件告诉服务器端,需要哪些转发操作用到什么端口。
- 上述操作中,客户端读取本地配置文件告诉服务器端,客户端转发本地的3389端口到了服务器端的33389。
- 然后服务器端再新开33389的监听端口,把来自外网访问33389端口的流量转发到客户端3389