在经过了各种小骚蹄子(传统方案)的洗礼后,弱水三千,我终究只取了frp这一瓢饮
简介
什么是Frp
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 FRP ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
- 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
以上内容来自官方
怎么使用Frp实现内网穿透
搭建服务端
首先,你需要拥有一台具有公网IP的服务器或者VPS,然后使用任意ssh终端连接上你的主机。
wget https://raw.githubusercontent.com/MvsCode/frp-onekey/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
然后,输入代码(感谢大佬提供的脚本),出现以下界面。
[图片上传失败...(image-4662c8-1704110284483)]
国内服务器选择1,国外服务器选择2或者直接enter。
然后其实一直按enter就行了
+------------------------------------------------------------+
Check your server setting, please wait...
+------------------------------------------------------------+
| frps for Linux Server, Author Clang ,Mender MvsCode |
| A tool to auto-compile & install frps on Linux |
+------------------------------------------------------------+
Please select frps download url:
[1].gitee
[2].github (default)
Enter your choice (1, 2 or exit. default [github]):
-----------------------------------
Your select: github
-----------------------------------
Loading network version for frps, please wait...
FRPS_VER set to: 0.53.2
frps Latest release file frp_0.53.2_linux_arm64.tar.gz
Loading You Server IP, please wait...
You Server IP:104.28.211.190
————————————————————————————————————————————
Please input your server setting:
————————————————————————————————————————————
Please input frps bind_port [1-65535](Default Server Port: 5443):
frps bind_port: 5443
Please input frps vhost_http_port [1-65535](Default : 80):80
frps vhost_http_port: 80
Please input frps vhost_https_port [1-65535](Default : 443):445
frps vhost_https_port: 445
Please input frps dashboard_port [1-65535](Default : 6443):
frps dashboard_port: 6443
Please input frps dashboard_user(Default : admin):
frps dashboard_user: admin
Please input frps dashboard_pwd(Default : JPaOPrCi):
frps dashboard_pwd: JPaOPrCi
Please input frps token(Default : S7al5RUf0oADvKvT):
frps token: S7al5RUf0oADvKvT
Please input frps subdomain_host(Default : 104.28.211.190):
frps subdomain_host: 104.28.211.190
Please input frps max_pool_count [1-200]
(Default : 50):
frps max_pool_count: 50
Please select log_level
1: info (default)
2: warn
3: error
4: debug
-------------------------
Enter your choice (1, 2, 3, 4 or exit. default [1]):
log_level: info
Please input frps log_max_days [1-30]
(Default : 3 day):
frps log_max_days: 3
Please select log_file
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]):
log_file: enable
Please select tcp_mux
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]):
tcp_mux: true
Please select kcp support
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]):
kcp support: true
============<span style="font-weight: bold;" class="mark"> Check your input </span>==========<span style="font-weight: bold;" class="mark">
You Server IP : 104.28.211.191
Bind port : 5443
kcp support : true
vhost http port : 88
vhost https port : 445
Dashboard port : 6443
Dashboard user : admin
Dashboard password : JPaOPrCi
token : S7al5RUf0oADvKvT
subdomain_host : 104.28.211.190
tcp_mux : true
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
</span>============================================
Press any key to start...or Press Ctrl+c to cancel
以上为所有可能出现的所有界面,这里强调几个参数
Bind port是监听端口,对应客户端的服务端口
vhost http port 默认80不要修改
vhost https port 默认443不要修改
Dashboard port是web控制台的端口,如你的服务器IP为0.0.0.0,那么你可以通过0.0.0.0:端口号访问web管理界面
Dashboard user是web控制台的账号
Dashboard password是web控制台的密码
token是客户端连接服务端的密码
搭建客户端
由于客户端的系统千奇百怪,能搭建客户端的方式也不尽相同,就像如果你拥有群晖,那么使用矿神套件无疑是最简洁的方式,但在此处我们只讲述普适方法。
还是ssh连接到系统,然后......
抄代码,启动!
安装客户端
wget https://github.ioiox.com/stilleshan/frpc/raw/branch/master/frpc_linux_install.sh && chmod +x frpc_linux_install.sh && ./frpc_linux_install.sh
编辑配置
vim /usr/local/frp/frpc.ini
下面给出一个frpc的示例文件,包括了http,https,tcp隧道的配置
# frpc.ini 示例配置文件(带有HTTP、HTTPS和TCP隧道的配置)
[common]
# 通用配置
# frps 服务器地址
server_addr = your_frps_server_ip #输入你的服务器IP
# frps 服务器端口
server_port = 7000 #前文中的bind_port
# 通信密钥,与 frps 中设置的一致
token = your_token #前文中的token
# HTTP 配置
[web]
type = http
local_port = 80
custom_domains = your_custom_domain.com
http_user = your_http_user #可以没有
http_pwd = your_http_password #可以没有
# HTTPS 配置
[secure_web]
type = https
local_port = 443
custom_domains = your_secure_domain.com
http_user = your_https_user #可以没有
http_pwd = your_https_password #可以没有
# 证书文件路径
# ssl_cert = ./path/to/your/certificate.crt
# 证书密钥文件路径
# ssl_key = ./path/to/your/private_key.key
# TCP 隧道配置
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# 更多的 TCP 隧道配置
# [custom_tcp]
# type = tcp
# local_ip = 127.0.0.1
# local_port = 8080
# remote_port = 6001
稍微哔哔两嘴,曾几何时,frpc.ini的配置一度是使用frp进行穿透的最大劝退因素,虽然整体配置不难,但对于新手小白来说可能还是有点卧槽的,但现在嘛......
来来来,chatgpt给我写个frpc.ini呗,我要巴拉巴拉巴拉.......
真香~
最后嘛,在客户端执行
systemctl restart frpc
穿透完成!
不是那么好用但是也有点用的webui
在讲搭建服务端的时候,我们曾提到过设置web管理界面的端口账号密码。
那么......这是个什么玩意儿呢?
[图片上传失败...(image-cb18c9-1704110284483)]
如图所示,这玩意展示了服务端的一些信息,而且,在proxies选项卡下还能查看每个隧道使用的具体流量,单从面板的角度来说倒是不错了。
但是嘛,相比nps家的管理面板,我也只能说这玩意能用了,毕竟存在几个明显的缺点
1.面板全英文,完全不支持中文
2.只能查看信息,无法在管理面板进行修改(这方面大力点赞nps)
本文原始发布地址:blog.050905.xyz/index.php/archives/12/