frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
1、利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
2、对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
3、利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务。
frp 搭建需要一台具有公网 IP 的服务器,并且访问效果和服务器的带宽和内网的上行带宽有关系。
内网穿透实现方法
内网穿透有很多商业的软件比如花生壳、NATAPP 等,这里不多介绍。
还有一些半开源的工具比如 ZeroTier ,配置简单,但是需要额外安装软件。
再者就是 frp 、ngrok 等开源工具,利用具有公网 IP 的服务器搭建。
frp 内网穿透实践
frp:https://github.com/fatedier/frp
中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
准备工作
做内网穿透前需要提前准备一些东西的
1、一台公网服务器,建议国外的 VPS ,带宽大一些;
2、一台内网服务器,我这里是 QNAP 的 NAS ,Linux 系统;
3、域名,用于解析,访问内网;
4、内网服务,访问的主要内容。
frp 的安装配置
这里 具有公网 IP 的机器称为服务端,处于内网环境的机器称为客户端。
1、下载 frp 文件
在 https://github.com/fatedier/frp/releases 下载最新版即可。
下载并解压文件
cd usr/local/
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
tar -zxvf frp_0.21.0_linux_amd64.tar.gz
cd frp_0.21.0_linux_amd64
这里主要有 4 个文件,分别是 frpc、frpc.ini 和frps、frps.ini 。
将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。
2、配置具有公网 IP 的机器,也就是 frps.ini 文件
使用 vim frps.ini
命令修改配置文件
[common]
bind_port = 7000 # 内网穿透服务端口
bind_udp_port = 7001 # 点对点内网穿透
vhost_http_port = 10080 # 外部访问的 http 端口
vhost_https_port = 10443 # 外部访问的 https 端口
dashboard_port = 7500 # 管理面板端口
dashboard_user = admin # 管理面板用户名
dashboard_pwd = admin # 管理面板密码
token = asdfgh # 身份验证
更多内容参考:frps 完整配置文件
启动 frps 服务
./frps -c ./frps.ini
后台启动方法
nohup ./frps -c ./frps.ini &
3、配置处于内网环境的机器,也就是 frpc.ini 文件
使用 vim frpc.ini
命令修改配置文件
[common]
server_addr = X.X.X.X # 内网穿透服务地址
server_port = 7000 # 内网穿透服务端口
token = asdfgh # 身份验证,与服务端一致
[qnap-web]
type = http
local_ip = 127.0.0.1 # 内网服务地址
local_port = 8080 # 内网服务端口
use_encryption = true # 加密传输
use_compression = true # 压缩传输
custom_domains = x.wshunli.com # 访问域名
这里 custom_domains
是外网服务器解析的域名,否则无法访问;可根据 vhost_http_port
端口反向代理解析。
更多内容参考:frpc 完整配置文件
启动 frpc 服务方法与 frps 类似。
前台启动:./frpc -c ./frpc.ini
后台启动:nohup ./frpc -c ./frpc.ini &
4、frp 控制面板的使用
这里需要根据公网 IP 服务器访问,即 http://{server_addr}:{dashboard_port}
更多内容参考 frp 中文文档
Linux 服务进程停止命令
1、查找被占用的端口
[root@localhost ~]# netstat -tln | grep 30080
tcp6 0 0 :::30080 :::* LISTEN
2、查看被占用端口的PID
[root@localhost ~]# lsof -i:30080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 4390 root 4u IPv6 36195 0t0 TCP *:30080 (LISTEN)
docker-pr 4390 root 7u IPv6 170434 0t0 TCP localhost:30080->localhost:42162 (ESTABLISHED)
frpc 4509 root 6u IPv4 170433 0t0 TCP localhost:42162->localhost:30080 (ESTABLISHED)
3、杀掉相关进程
[root@localhost ~]# kill -9 4509
参考资料
1、一分钟实现内网穿透(ngrok服务器搭建) - 学习笔记 - CSDN博客
https://blog.csdn.net/zhangguo5/article/details/77848658
2、十分钟教你配置frp实现内网穿透 - 诗雨远方的博客 - CSDN博客
https://blog.csdn.net/u013144287/article/details/78589643
3、突破电信局域网:frp内网穿透教程(客户端:lede/win) - 电脑讨论 - Chiphell - 分享与交流用户体验
https://www.chiphell.com/thread-1853360-1-1.html
4、使用frp进行内网穿透入门 - QQ小冰 - CSDN博客
https://blog.csdn.net/weixin_36241363/article/details/78457359
5、威联通折腾篇二:使用 frp 内网穿透 | Verne in GitHub
https://blog.einverne.info/post/2018/06/qnap-frp-usage.html
6、nohup和&后台运行,进程查看及终止 - 弥尘 - 博客园
https://www.cnblogs.com/baby123/p/6477429.html
评论 (0)