美文网首页
frp 详细 从头搭建内网穿透

frp 详细 从头搭建内网穿透

作者: Jason_Zhang_ | 来源:发表于2021-01-17 17:03 被阅读0次

为什么需要内网穿透功能

从公网中访问自己的私有设备向来是一件难事儿。
自己的主力台式机、NAS等等设备,它们可能处于路由器后,或者运营商因为IP地址短缺不给你分配公网IP地址。如果我们想直接访问到这些设备(远程桌面,远程文件,SSH等等),一般来说要通过一些转发或者P2P组网软件的帮助。
我有一台计算机位于一个很复杂的局域网中,我想要实现远程桌面和文件访问,目前来看其所处的网络环境很难通过简单的端口映射将其暴露在公网之中,我试过这么几种方法:

  1. 远程桌面使用TeamViewer。可用,但需要访问端也拥有TeamViewer软件,不是很方便,希望能使用Windows自带的远程桌面。且TeamViewer不易实现远程文件访问。
  2. 使用蒲公英VPN软件进行组网,可用,但免费版本网络速度极慢,体验不佳,几乎无法正常使用。
  3. 使用花生壳软件进行DDNS解析,可用,但同第二点所述,免费版本有带宽限制,无法实际使用。
  4. 搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享。

frp是什么

简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。
截至本文完成,frp的最新版本为v0.22.0,本文使用最新版本。

准备工作

搭建一个完整的frp服务链,我们需要

  1. VPS一台(也可以是具有公网IP的实体机)
  2. 访问目标设备(就是你最终要访问的设备)
  3. 简单的Linux基础(会用cp等几个简单命令即可)

VPS相关

  • 因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。
  • 我使用了DigitalOcean的新加坡机房,北京移动、中国教育网下测试速度尚可。
  • 系统使用Ubuntu 16.04.5 x64,frp客户端和服务端本身同时均支持Linux和Windows,且配置方法一样,请根据实际环境自行测试,如果你是新建的VPS,那选择Ubuntu 16.04.5 x64就可以了。

服务端设置

SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frp
arch
查看结果,如果是“X86_64“即可选择”amd64”,
运行如下命令,根据架构不同,选择相应版本并进行下载
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz
然后解压
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
vhost_http_port = 8070

服务端后台运行

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

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 依然可以打开仪表板界面,至此,服务端即设置完成,你可以关闭SSH窗口了。

客户端设置

frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机,因而本文使用Windows主机做例子;Linux配置方法类似,不再赘述。

同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。
假定你下载了“frp_0.22.0_windows_amd64.zip”,将其解压在了C盘根目录下,并且将文件夹重命名为“frp”,可以删除其中的frps和frps.ini文件。
用文本编辑器打开frpc.ini,与服务端类似,内容如下。

[common]
server_addr = 39.106.66.139
server_port = 7000

[web]
type = http
local_port = 8070
custom_domains = www.myzhang.top
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6008

相关文章

  • frp 详细 从头搭建内网穿透

    为什么需要内网穿透功能 从公网中访问自己的私有设备向来是一件难事儿。自己的主力台式机、NAS等等设备,它们可能处于...

  • 利用frp进行树莓派的内网穿透同时架设可外网访问的web服务器

    写在前面:本文用了两个来自CSDN的文章: 使用内网穿透工具frp 树莓派3 利用frp内网穿透搭建非常感谢两位大...

  • frp搭建内网穿透

    frp介绍 frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 h...

  • FRP内网穿透搭建

    作者博客 GitHub:https://github.com/fatedier/frp请保持服务端版本号与客户端版...

  • FRP搭建内网穿透

    前言 frp是一个开源的项目, 可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http ...

  • (五)frp内网穿透安全配置

    frp的安装介绍 已经在第一节文章有介绍请参考 (一)frp内网穿透ssh登录内网ip服务器 frp 内网穿透安全...

  • Springboot实现跨域

    为了实现内网穿透,使用的frp。 请求链路:localhost前端—>云端服务器—>经frp穿透内网到localh...

  • (二)frp内网穿透访问内网数据库

    frp的安装介绍 已经在第一节文章有介绍请参考 (一)frp内网穿透ssh登录内网ip服务器 通过内网穿透访问内网...

  • frp内网穿透环境搭建

    开发近一个月的微信小程序,今天终于提交了第一个版本。晚间空闲,做个小结 回顾这段时间,遇到了很多问题,也收获了很多...

  • 自己搭建frp内网穿透

    你是否有这样的苦恼?自己写好的项目不能方便的展示到外网,你是否又有这样的苦恼?哎呀花生壳怎么还要钱啊,现在完全不用...

网友评论

      本文标题:frp 详细 从头搭建内网穿透

      本文链接:https://www.haomeiwen.com/subject/chtzaktx.html