使用frp配置内网(穿透[保姆级教程])


首先我们了解一下基础知识

什么是内网穿透

1.内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在 交换机 上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。

2.简单说,就是A客户端要访问B客户端,通过一台服务器进行桥接,桥接有两种方式,一种是相互转发,另一个是告诉对方的地址,自己就当一个介绍人的角色。

使用场景有哪些

首先我们参考一下本人自己画的图
在这里插入图片描述

1.小明的电脑和张三家里的电脑分别处在两个不同的局域网内,如果小明想访问张三家电脑的资源,这时就需要运用到内网穿透。借助frp端口映射技术进行内网穿透
2.张三在家办公想用家里的电脑,访问公司的电脑资源,这时也可以借助frp工具进行内网穿透进行实现

总结:在一个可以访问互联网的设备上,访问一个内网中的资源。

frp简介

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp 是一个可用于内网穿透的高性能的反向代理应用,分为服务端frps和客户端frpc,支持 tcp, udp, http, https 协议。详情可浏览该项目的Github主页: https://github.com/fatedier/frp/

frp的作用

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

frp工作原理

frp工作原理

1.服务端运行,监听一个主端口,等待客户端的连接;
2.客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
3.服务端fork新的进程监听客户端指定的端口;
4.外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
5.客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

实验环境的准备

frp实验准备
1台vps:vps拥有公网地址(这里我用的阿里云vps)
2台linux/windows虚拟机
1台可以联网的设备(这里我用的kali)

拓展:为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量。
实验环境	需要计算机可以上网,vps拥有公网地址
kali	192.168.0.55		(测试机[能访问baidu即可])
linux 192.168.0.208		(clint[内网机器])
Win7  192.168.0.213		(clint[内网机器])
vps   your-vps-ip			(server[公网机器])

	这里做实验做了两个内网机器供大家学习。两种方法。
		如果需要访问内网的网页服务,可以购买的域名。

vps

如果是第一次买,推荐需要的朋友选择这两款其中一款(笔者买的是第二款相对多了1核)
这是新人专区的特惠(如果直接从阿里云产品里购买里比较贵)

https://www.aliyun.com/activity/1111/index?spm=5176.21103406.J_6174043250.1.53321719sUISzv&scm=20140722.M_1294.P_3426.MO_466-ID_5976783-CID_21937-ST_3606-V_1

这里给大家贴上链接地址。新人活动应该是一直存在,如果链接失效,大家寻找一波一定会有收货。

在这里插入图片描述

域名

因为大家基本上是自用,这里给大家推荐一些,适合大众的域名购买
如果大家有阿里vps了,可以直接从这里进入(下方我也会贴上链接地址)
在这里插入图片描述

万网链接地址
https://wanwang.aliyun.com/domain/?spm=5176.10173289.0.0.2f6b2e77depa6w

点击新用户专享
在这里插入图片描述

这里大家输入自己的网址信息,查询后可以1元购买未被注册的域名
在这里插入图片描述

接着大家把购买的域名添加到这里,然后解析设置,按照阿里云的帮助信息填写好。

域名是需要备案的,这里我们可以以后在弄

在这里插入图片描述

1.frp的使用

1.1serve服务端设置

SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frp arch查看结果,如果是“X86_64“即可选择”amd64”,运行如下命令,根据架构不同,选择相应版本并进行下载。

先下载 frp客户端

wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz

这里因为是github如果下载慢可以在外面下好上传到vps里

然后解压

tar -zxvf frp_0.22.0_linux_amd64.tar.gz

文件夹改个名,方便使用

cp -r frp_0.22.0_linux_amd64 frp

把解压出来的文件夹复制到你想要的目录下,为了方便我直接放在用户目录下了,进入该目录

cd frp

查看一下文件

ls -a

我们只需要关注如下几个文件

frps
frps.ini
frpc
frpc.ini

在这里插入图片描述

前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。
因为我们正在配置服务端,可以删除客户端的两个文件
rm frpc
rm frpc.ini

然后修改frps.ini文件

vim frps.ini

这个文件应有如下格式

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。

“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
“dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
“vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。

可以运行frps的服务端

./frps -c frps.ini

如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。

2019/01/12 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2019/01/12 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080
2019/01/12 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443
2019/01/12 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2019/01/12 15:22:39 [I] [root.go:210] Start frps success

在这里插入图片描述
此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面
在这里插入图片描述

1.2服务端后台运行

我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。

nohup ./frps -c frps.ini &

输出如下内容即表示正常运行

nohup: ignoring input and appending output to 'nohup.out'

此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序​jobs
在结果中我们可以看到frps正在后台正常运行

[1]+  Running                 nohup ./frps -c frps.ini &

此时访问 x.x.x.x:7500 依然可以打开仪表板界面,至此,服务端即设置完成。
这里有个坑,这里设置了后台运行。如果更改了配置需要重新运行这个程序 需要先结束这个进程

ps -aux | grep "frps"
kill -9 加id

在这里插入图片描述

1.3客户端设置

这里我运用的linux主机设备,和windows都进行了测试


frp的客户端就是我们想要真正进行访问的那台设备,
大多数情况下应该会是一台Windows主机
Linux配置方法类似
下载链接
https://github.com/fatedier/frp/releases
这里的坑,win7下用的和 linux下用的程序不同

在这里插入图片描述

根据客户端设备的情况选择相应的frp程序进行下载
用文本编辑器打开frpc.ini,与服务端类似,内容如下。

[common]
server_addr = x.x.x.x
server_port = 7000
token = 12345678
[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002

这里需要注意
[common]
server_addr = x.x.x.x 这里是vps地址
server_port = 7000 这里是上面写的sever端口
token = 12345678 这里是上面server的token
在这里插入图片描述

其中common字段下的三项即为服务端的设置。

“server_addr”为服务端IP地址,填入即可。
“server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
“token”是你在服务器上设置的连接口令,原样填入即可。

frp实际使用时,会按照端口号进行对应的转发,原理如下图所示。(侵权请联系删除)

frpc.ini的rdp、smb字段都是自己定义的规则,自定义端口对应时格式如下。

“[xxx]”表示一个规则名称,自己定义,便于查询即可。
“type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。
“local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。
“remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。
RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。

SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。

frpc程序不能直接双击运行!
配置好frpc.ini文件后

在cmd命令行 或者powershell运行
frpc.exe

如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。

2019/01/12 16:14:56 [I] [service.go:205] login to server success, get run id [2b65b4e58a5917ac], server udp port [0]
2019/01/12 16:14:56 [I] [proxy_manager.go:136] [2b65b4e58a5917ac] proxy added: [rdp smb]
2019/01/12 16:14:56 [I] [control.go:143] [smb] start proxy success
2019/01/12 16:14:56 [I] [control.go:143] [rdp] start proxy success

这里运用kali里的工具可以直接访问vps的7001端口进入远程桌面的Win7

redesktop you-vps-ip:端口

在这里插入图片描述

在这里插入图片描述

1.4结果测试

参考链接 -中文frp手册
https://www.bookstack.cn/read/frp/spilt.8.spilt.3.README_zh.md
https://www.cnblogs.com/sanduzxcvbnm/p/8508741.html

还有诸多方法待实验,例如dns...

1.4.1 用kali进行测试 3389远程连接是否成功。
这里运用了一台可以上网的 kali
需要进行测试的是远程连接一台Win7

这个地址是我们的vps地址,端口为上方设置的端口
在这里插入图片描述

1.4.2 在web端实现 可以访问内网8080端口数据
这里利用linux 测试了 web服务
1.通过自定义域名访问部署于内网的 web 服务
修改 frps.ini 文件,设置 http 访问端口为 8060:
# frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 8060
vhost_https_port = 8090

在这里插入图片描述

2.启动 frps;
./frps -c ./frps.ini
3.修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com:
# frpc.ini
[common]
server_addr = your-vps-ip
server_port = 7000
token = 12345678
[web]
type = http
local_port = 8080
custom_domains = www.yourdomain.com

在这里插入图片描述

在这里插入图片描述

这里输入的域名 是vps的域名,加上frp的端口就进入到了内网的tomcat
在这里插入图片描述

最后在frp管理界面可以查看详情(例如走的一些流量或者详细信息)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

<think>好的,用户现在在寻找关于Dify搭建的详细教程,特别是保姆的完整指南。我需要根据他们提供的引用内容来组织回答。首先,用户提到了引用[2],里面提到了使用Docker部署Dify,然后整合Ollama和私有化知识库的步骤。我应该详细分解这些步骤,确保结构清晰,符合用户要求的系统指令,比如使用正确的中文回答、分步骤说明,并且生成相关问题。 首先,我需要确认用户的需求是搭建Dify平台,可能用于构建知识库应用。引用中的步骤包括Docker部署、Ollama集成、知识库创建和嵌入模型选择。需要将这些步骤逐一解释,确保每个部分都详细,比如安装Docker的部分可能需要先检查系统是否已安装,如果没有,需要指导用户如何安装。然后,部署Dify时,可能需要拉取镜像、运行容器,并检查服务是否正常启动。 接下来是集成Ollama,用户可能不熟悉Ollama是什么,可能需要简要说明它是一个本地运行大模型的工具,然后给出具体的安装和启动命令。然后配置Dify的后台设置,修改模型配置,这里需要确保用户知道如何找到配置文件,可能需要给出路径或者具体的配置示例。 创建知识库的部分,需要引导用户进入Dify界面,创建知识库,上传文档,并选择嵌入模型。这里需要强调嵌入模型的重要性,比如选择beg-m3模型的高效性,以及如何处理文档格式。完成嵌入后,测试知识库的问答功能,确保一切正常。 最后的应用创建部分,用户可能需要将知识库集成到聊天应用中,这里需要指导用户如何在Dify中创建应用,并绑定知识库,设置对话流程等。 同时,用户提到内网穿透,引用[1]是关于Windows搭建网站和内网穿透的内容,虽然用户主要关注Dify,但可能需要在内网穿透部分简要提及相关工具,如frp或Ngrok,并引用[1]作为参考,但根据用户的问题,可能不需要深入展开,除非用户特别询问。 生成的相关问题需要围绕Dify部署的常见问题,比如优化部署、解决集成问题、模型选择、私有化知识库管理以及内网穿透的具体方法。这些问题应该帮助用户进一步解决可能遇到的挑战。 最后,检查回答是否符合所有系统指令:使用正确的中文、分步骤、LaTeX格式正确(但当前内容中可能没有数学表达式,所以不需要处理)、生成相关问题,并在引用处正确标注[^1]和[^2]。 现在需要将这些思考整理成一个结构清晰、步骤分明的回答,确保用户能够按照步骤操作,同时自然地插入引用标注。</think>以下是关于Dify私有化部署的保姆教程,整合了Docker部署、Ollama集成与知识库创建的完整流程: ### 一、Docker环境准备 1. 安装Docker Desktop(Windows/Mac)或Docker Engine(Linux) 2. 验证安装:终端执行`docker --version`,显示版本号即成功[^2] ### 二、部署Dify平台 ```bash # 拉取最新镜像 docker pull dify/dify:latest # 启动容器(含PostgreSQL/Redis) docker run -d --name dify \ -p 8080:8080 \ -v /data/dify/storage:/app/dify/storage \ dify/dify:latest ``` 部署完成后访问`http://localhost:8080`进入控制台 ### 三、Ollama集成配置 1. 安装Ollama(支持macOS/Linux/Windows) ```bash # Linux安装示例 curl -fsSL https://ollama.com/install.sh | sh ollama serve ``` 2. 在Dify后台修改模型配置: ```yaml # config.yaml ollama: base_url: http://localhost:11434 models: - llama2 - mistral ``` ### 四、知识库创建流程 1. **新建知识库** - 登录Dify控制台 → 知识库 → 新建 - 命名规范建议:`部门_类型_版本`(如`技术部_产品手册_v1.2`) 2. **文档上传规范** - 支持格式:PDF/DOCX/Markdown/TXT - 单文件建议<20MB - 批量上传使用ZIP压缩包 3. **嵌入模型选择** ```python # beg-m3模型配置示例 embedding_model = "BAAI/bge-m3" max_seq_length = 8192 ``` 该模型支持中英文混合检索,适合长文本处理 ### 五、应用创建与测试 1. 创建对话型应用 2. 绑定已创建的知识库 3. 配置对话流程: ``` 用户输入 → 意图识别 → 知识库检索 → 模型生成 → 结果反馈 ``` 4. 使用测试窗口验证问答准确性
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞雪掩晨曦❀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值