开源内网穿透工具FRP配置SSH和网站访问,构建本地私有云NAS,非常详细的配置细节,复刻即可成功

简介:

FRP 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。名称其实就是使用了 Fast Reverse Proxy 的首字母缩写。

需求:

有一台链接了家里路由器的微服务器,可以访问外网,但是人在外面,无法通过外网链接到服务器,也没办法访问内网服务器上部署的私有云网盘。需要打通外网访问内网路由器。

原理介绍:

  • 需要一台外网的云服务器,有固定IP
  • 需要一个域名,二级域名也可以,能解析到固定IP,配置http访问的时候需要用到

需要在云服务器上部署服务端,即frps,在内网服务器部署客户端,frpc。 我的服务器都是centos操作系统的,不同系统请在github上下载对应版本。然后配通接口即可。
注意:frp下载下来就包含客户端和服务端版本

配置内容:

服务器端:

准备放开1个代理接口,1个http接口,1个https接口,按需来配,这里我不用https,所以没有配置,就开放了2个端口。 注意:需要云服务器配置放开这些端口

csharp 复制代码
[common]
bind_port = 8001 #绑定的代理端口
vhost_http_port = 8002 #http端口
auth_token = 123 #客户端一致的密码

log_file = ./frps.log #日志,方面查看错误

客户端:

common配置绑定server的端口 x.x.x.x是指服务器的IP frp.yourdomainname.com是需要填你自己以及绑好的域名

ssh是配置ssh远程链接的,请把本地服务器8003端口放开,22端口也要放开 web01是你的网站,对应的5000端口也要放开

csharp 复制代码
[common]
server_addr = x.x.x.x
server_port = 8001
auth_token = 123 #需要和服务器一样
process_keepalive_interval = 60 #进程保护,间隔多久检测
restart_delay = 1 #重启时间

log_file = ./frpc.log

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8003 #需要开放这个端口

[web01]
type = http
local_ip = 0.0.0.0
local_port = 5000
use_encryption = false
use_compression = true
header_X-From-Where = frp
custom_domains = frp.yourdomainname.com

说明下数据走的流程,ssh连到云服务器ip后走8001访问绑定的客户端,找到对应8003这个服务,然后走22这个端口 http同理,通过域名找到对应的服务端口访问

测试连接是否成功

csharp 复制代码
ssh root@x.x.x.x -p 8003

部署centos代码:

下载:如果没法连到github下载,可以本地先通过地址下载再传上去

csharp 复制代码
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz

解压:

csharp 复制代码
tar -xvf frp_0.32.1_linux_amd64.tar.gz

根据以上配置内容在配置好

在路径/usr/local创建文件夹frp,所有内容移植到此目录

添加执行权限: 确保 /usr/local/frp/frps 文件有执行权限。如果是客户端对应要执行frpc

csharp 复制代码
chmod +x /usr/local/frp/frps

配置systemctl来控制运行 vim打开文件 vim /usr/lib/systemd/system/frp.service 写入以下内容,注意上文的路径和此处有关。这里是启动的服务端,客户端类似,注意修改运行程序

csharp 复制代码
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

重新加载服务的配置文件

csharp 复制代码
systemctl daemon-reload 

用 systemctl 套装来控制FRP 启动,停止,重启,查看状态,设置开机自启,关闭开机自启

csharp 复制代码
systemctl start frp 
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp

执行即可完成!

PS:注意服务器和客户端都需要这样操作一遍,注意执行主体,服务器端是对应frps,客户端对应frpc

相关推荐
明月_清风2 天前
全栈工程师必会技术栈:从入门到架构的完整成长地图 🗺️
前端·后端·全栈
狂师2 天前
AI 测试提效 | 告别手工写脚本,分享我的 Playwright + Skill 批量生成 UI 自动化脚本方案
人工智能·测试·全栈
用户938515635072 天前
从零构建《天龙八部》知识库:EPUB 加载→文本分割→向量嵌入→Milvus 存储→RAG 问答,一条链路打通
javascript·人工智能·全栈
何时梦醒3 天前
React + TypeScript 企业级开发实战:从零搭建到组件架构演进
前端·react.js·全栈
前端双越老师3 天前
Nest.js 和 Spring Boot 为何如此像?写给前端转 Java 的同学
java·spring boot·全栈
Staticy4 天前
Claude Code 接国产模型不能识图?一个 MCP 让纯文本模型也能看图
人工智能·ai编程·全栈
极简前端打杂工4 天前
从0到1搭建通用低代码平台(-)— 表单设计器
前端·全栈
swipe4 天前
11|(前端转全栈)购物车不能只存在前端:用户维度数据如何在后端落库
前端·后端·全栈
swipe4 天前
10|(前端转全栈)库存扣减为什么最容易出事故?SKU、并发与原子更新
前端·后端·全栈
_lucas4 天前
给知识库网站接入AI问答
前端·ai编程·全栈