开源内网穿透工具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 [email protected] -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

相关推荐
ci0n4 天前
PVE 网卡冗余配置
全栈
不想说话的麋鹿5 天前
「项目实战」从0搭建NestJS后端服务(八):静态资源访问以及文件上传
前端·node.js·全栈
hboot7 天前
rust 全栈应用框架dioxus
前端·rust·全栈
林夕11208 天前
Node.js Web开发进阶:Stream、HTTP模块与文件上传全解析
前端·node.js·全栈
天天扭码8 天前
用一个项目揭开AI全栈的神秘面纱——让AI根据你的项目数据生成回答
openai·ai编程·全栈
Edward-tan8 天前
【玩转全栈】—— Django+vue3+讯飞星火API 实现前端页面实时AI答复
vue3·全栈·django5
小鬼难缠z9 天前
阿里云部署Hugo与备案实践
程序员·全栈
南囝coding10 天前
独立开发者工具 • 半月刊 • 第 008 期
产品·全栈·设计
深度学习机器19 天前
SmolDocling-256M:极小参数量的视觉语言模型|端到端文档解析方案的另一种思路
人工智能·产品·全栈
404BrainNotFound21 天前
Dokploy部署Net服务,打造CI/CD开发环境
运维·全栈