frp内网穿透(反向代理)
前言:最近自己搞了一个黑群晖,想把它放家里,然后在外边也能访问家里的NAS,自己家里没有公网IP的前提下,有了以下的研究,就是内网穿透,内网穿透网上有很多方式,今天就说明其中的一种内网穿透的方法frp(亲测可用!!!)
frp搭建也需要分别搭建客户端和服务端两部分,其中服务端用于流量转发,需要有公网ip,客户端就是你想在外网访问的内网的设备。
1、项目地址
https://github.com/fatedier/frp
下载安装直接在项目的 releases 里下载自己对应的系统版本就行。
2、使用
官方使用文档:https://gofrp.org/docs/
frp 分成服务端和客户端,分别叫 frps 和 frpc,配置文件分别对应 frps.ini 和 frpc.ini
在需要的位置建一个文件夹把frps和frps.ini放在服务端,把frpc和frpc.ini放在客户端
3、服务器配置
-
配置frps.ini文件
[common] bind_port = 4444 # 客户端认证token token = 123qwertyuiop321 # 设置fps仪表盘端口、账号和密码,只是能看到连接服务器的端口和连接数量,实战中用处貌似不大,但如果设置一定要设置强密码 dashboard_port = 8000 dashboard_user = admin dashboard_pwd = 971108
附加fps仪表盘截图:
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_u
rl=upload%255Cimage-20230907161055227.png&pos_id=img-wDpkO6Vf-1694074402829) -
配置好文件,启动服务端
# 进入到frps的存放目录运行一下命令 # 设置运行权限 chmod -R 777 frps # 启动服务 frps -c frps.ini 或 ./frps -c frps.ini
-
设置服务开机自启
- 在/etc/systemd/system文件夹下,创建文件名为frps.service的文件,写入一下内容
[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini [Install] WantedBy = multi-user.target
- 操作systemctl的命令
# 开启服务 systemctl start frps.service # 关闭服务 systemctl stop frps.service # 查看状态 systemctl status frps.service # 设置开机自启 systemctl enable frps.service
4、客户端配置
客户端如果是NAS的话开机自启很难设置,也没有systemctl进程管理,需要在NAS页面上设置计划任务,注意在计划任务执行的代码中,必须cd到程序文件夹才能执行程序不能是/usr/local/frp/frpc -c /usr/local/frp/frpc.ini , 而是分两个命令,先到cd /usr/local/frp ,在运行命令 ./frpc -c frpc.ini
-
配置frpc.ini文件
[common] # 服务端ip地址(公网ip) server_addr = 120.194.212.67 # 服务端,端口 server_port = 4444 # 客户端认证 token,需要和服务端 token 保持一致 token = 123qwertyuiop321 [nas] type = tcp local_ip = 127.0.0.1 local_port = 5000 remote_port = 5000 #启用加密,防止流量被拦截 use_encryption = true #启用压缩,提升流量转发速度 use_compression = true
-
配置好文件启动服务端
# 进入到frps的存放目录运行一下命令 # 设置运行权限 chmod -R 777 frpc # 启动服务 frpc -c frpc.ini 或 ./frpc -c frpc.ini
-
设置开机自启(后台运行)
同3、服务器配置的第3步
5、问题
如果有连接不上的情况
- 查看进程是否运行
- 查看防火墙是否开启了,关闭防火墙
- 查看端口和ip是否正确