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

相关推荐
用户3157476081359 天前
成为程序员的必经之路” Git “,你学会了吗?
面试·github·全栈
柳叶寒17 天前
医院信息化与智能化系统(17)
java·nacos·gateway·全栈·项目
柳叶寒21 天前
医院信息化与智能化系统(15)
java·数据库·全栈·项目
kevinyan23 天前
Go项目Error的统一规划管理和处理策略
前端·go·全栈
柳叶寒1 个月前
医院信息化与智能化系统(8)
java·数据库·全栈·项目
柳叶寒1 个月前
医院信息化与智能化系统(6)
java·全栈·项目
余生H1 个月前
前端全栈混合之路Deno篇:Deno2.0如何快速创建http一个 restfulapi/静态文件托管应用及oak框架介绍
javascript·http·restful·全栈·deno
kevinyan1 个月前
Go日志门面的设计与实现-自动注入追踪ID标记代码位置、简化日志操作
vue.js·go·全栈
柳叶寒1 个月前
医院信息化与智能化系统(5)
java·数据库·全栈
余生H1 个月前
大模型进阶微调篇(一):以定制化3B模型为例,各种微调方法对比-选LoRA还是PPO,所需显存内存资源为多少?
人工智能·深度学习·机器学习·全栈·模型微调