使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

这篇具有很好参考价值的文章主要介绍了使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、FRP简介

FRP,即快速反向代理技术(fast reverse proxy)。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前,该程序可实现:“将位于 NAT 或防火墙后面的本地服务器暴露给互联网”。它目前支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议,允许通过域名 / IP将请求转发到内部服务器。

我个人理解的frp原理如图:

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 文章来源地址https://www.toymoban.com/news/detail-413146.html

        主机3想要通过端口X访问主机2的端口D,通过端口Y访问主机2的端口E,但是主机2位于局域网内,外部无法访问

        FRP借助于具有公网IP的主机1。在主机1上运行frps.exe,在主机2上运行frpc.exe,主机1和主机2上的这两个frp进程通过端口C时刻保持连接

        现在,可以通过访问主机1的端口A和端口B,通过两台主机上的FRP程序,转发给主机2的端口C和端口D,实现了内网穿透功能。

        例如,主机3通过端口X 主机1所绑定公网IP  的 端口B 发送请求,该请求由主机1的frps.exe通过端口B接收,然后从端口C转发。因为主机1和主机2的这两个进程通过端口C始终保持连接,因此,在主机2上,侦听端口C的frpc.exe可以接受到该请求并转发给端口D。由此,实现了从端口X端口D的访问。

注:

        以上提到的端口C对应于frps.ini文件中的bind_port 和frpc.ini文件中的 server_port。端口A、B对应于frpc.ini文件中的remote_port。端口D、E对应于frpc.ini文件中的local_port

 

二、前提条件

1. 具备一台拥有公网IP的主机(本文使用腾讯云服务器)。

2.局域网内的主机可以正常访问互联网。

 

三、问题描述

        我有一台位于某局域网下的主机,在该主机上部署了Docker、MySQL等服务,我希望能够在任意地方都能够访问到该主机。但是我的主机位于局域网内,在局域网外无法访问主机资源。考虑到当前有一台可用的腾讯云服务器(拥有一个公网IP),因此,希望通过frp技术实现内网穿透,能够通过腾讯云服务器的某些端口,访问位于局域网下主机的某些端口,进而实现在任意地方通过互联网访问局域网内主机的目的。

        主机和服务器的操作系统均为Windows,因此本文采用FRP的windows发行版。

 

四、软件资源

1. 资源下载

方式一、我在github上下载了linux及windows版本的发布程序,可以直接在下面链接下载。

frp-windows-linux-程序-download-from-github-网络基础文档类资源-CSDN文库

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 方式二、在github项目中下载(包含更多的操作系统/处理器版本)GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 2. 资源内容

本例的计算机使用的操作系统为Windows,处理器为X86架构,因此选择frp_0.48.0_windows_386.zip 文件。该文件包含以下内容:

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 其中:

frpc.exe  运行在客户端(内网中的主机,不具备公网IP)的程序。

frpc.ini  客户端程序的配置文件。

frpc_full.ini  客户端程序的配置文件的所有配置语句都可以参考该文件。

frps.exe  运行在服务器端(具备公网IP的主机)的程序。

frps.ini  服务器端程序的配置文件。

frps_full.ini  客户端程序的配置文件的所有配置语句都可以参考该文件

 

五、服务器端的部署

服务器端是指具备公网IP的主机。

此过程中使用到的文件为:frps.exe 和 frps.ini(两个文件建议放到同一个目录下)

1. 配置文件修改

为了尽可能降低配置复杂度,本次配置以最简方式进行。如果需要一些更复杂的配置或者是想要提高安全性,可以参考Releases · fatedier/frp (github.com)或其他相关资料。

frps.ini 文件的内容为:

[common]
bind_port = 7000

此处仅包含了一个端口号(此端口号可以修改为自己想要使用的任意未使用端口),没有做任何身份验证,因此该连接的安全性不能得到保证。可以增加验证环节,将上述文件修改为:

[common]
# bind_port可以根据自己的需求设置,此处以9000为例子
bind_port = 9000

# 此处token(令牌)的值也可以自己根据需要设置
token = ABC123456789xyz

2. 放通云服务器端口(如果非云服务器可跳过这一步)

在服务器中放通所有要使用到的端口。

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

3. 防火墙设置

在设置 - Windows防火墙 - 允许应用通过防火墙 - 允许其他应用。

然后根据程序的路径找到frps.exe程序,并添加。

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

4. 在服务器端的命令行运行frps.exe程序

 在cmd中切换到对应目录下,运行:

frps.exe -c frps.ini

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

 需要保持命令行窗口打开。

 

六、客户端的部署

客户端是指内网中的主机,不具备公网IP

此过程中使用到的文件为:frpc.exe 和 frpc.ini(两个文件建议放到同一个目录下)

1. 配置文件修改

可以将客户端的配置文件frpc.ini内容修改为(请在server_addr处填写IP):

[common]
server_addr = 服务器端公网IP

# server_port要和frps.ini中的server_port保持一致
server_port = 9000

# token也要和frps.ini中的token保持一致
token = ABC123456789xyz

# 自己任意起一个名字,比如这里写mysql_port
[mysql_port]
# tcp、udp、http、https、stcp、xtcp默认是tcp
type = tcp

# 一般情况下是本机,即127.0.0.1
local_ip = 127.0.0.1

# 本地主机使用的端口
local_port = 3306

# 远程主机(服务器端,具有公网IP的主机)端口,设置完成后需要通过远程主机的此端口访问local_port,可以与local_port不一致。
remote_port = 10000

2. 运行程序

在cmd中切换到对应目录下,运行:

frpc.exe -c frpc.ini

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

连接成功 !

七、测试

在内网主机的3306上运行MySQL服务,通过其他主机进行测试:

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例测试成功! 

 

八、更细致的配置文件以供参考

frps.ini

[common]
# bind_port可以根据自己的需求设置,此处以9000为例子
bind_port = 9000

# 此处token(令牌)的值也可以自己根据需要设置
token = ABC123456789xyz

# only allow frpc to bind ports you list, if you set nothing, there won't be any limit'
# 只允许frpc绑定您列出的端口,如果不设置,则不会有任何限制
allow_ports = 9998,10000-20010


# max ports can be used for each client, default value is 0 means no limit
# 每个客户端可以使用的最大端口数,默认值为0表示没有限制
max_ports_per_client = 5

# pool_count in each proxy will change to max_pool_count if they exceed the maximum value 
# 如果每个代理中的pool_count超过最大值,则它们将更改为max_pool_count
max_pool_count = 5

# Check frp's status and proxies' statistics information by Dashboard.
# 通过仪表板检查FRP的状态和代理的统计信息。dashboard可以在frps端查看状态。
# dashboard's username and password are both optional 仪表板的用户名和密码都是随意的'
# 使用http://[server_addr]:9999 通过admin访问
dashboard_port = 9999
dashboard_user = admin
dashboard_pwd = admin123

# console or real logFile path like ./frps.log 
# 控制台或实际日志文件路径,设置日志文件路径后,原本的控制台输出
log_file = ./frps.log

# trace, debug, info, warn, error
log_level = trace

# 日志最大记录天数
log_max_days = 365


修改完成后还可以在 服务器的http://127.0.0.1:9999(端口号视配置而定) ,使用用户名和密码查看状态。

使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例

frpc.ini

[common]
server_addr = XXx.XXX.XXX.XXX
# server_port要和frps.ini中的server_port保持一致
server_port = 9000

# token也要和frps.ini中的token保持一致
token = ABC123456789xyz
# 自己任意起一个名字,比如这里写mysql_port

[mydocker]
# tcp、udp、http、https、stcp、xtcp默认是tcp
type = tcp
# 一般情况下是本机,即127.0.0.1
local_ip = 127.0.0.1
# 本地主机使用的端口
local_port = 10101
# 远程主机(服务器端,具有公网IP的主机)端口,设置完成后需要通过远程主机的此端口访问local_port,可以与local_port不一致。
remote_port = 10000

# 每个代理的名称不能相同,此处可以设置为mydocker2
[mydocker2]
type = tcp
local_ip = 127.0.0.1
local_port = 17002
remote_port = 17002

 

 

 

如有不当或错误之处,恳请您的指正,谢谢!!!

 

到了这里,关于使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用frp实现内网穿透

    本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 一打五师兄走之前留了一块树莓派给我,暑假闲来无事拿出来玩玩 如果每次都连接显示屏和键盘使用有点麻烦而且低级 正常笔记本和树莓派都连着实验室的WIFI,网段一样,是可以ssh远程登录的 但我突

    2024年02月09日
    浏览(43)
  • 使用Frp进行反向代理实现远程桌面控制[teamviewer/nomachine]

    V1.0.0 – by Holden Date : 2023-06-20 ​ frp 是一个可用于内网穿透的高性能的反向代理,支持 tcp, udp 协议,为http和https应用协议提供了额外的能力,且尝试性支持了点对点穿透。 ​ 目前由于teamviewer经常被认为进行商业活动,从而出现禁止使用的问题; ​ TeamViewer有一个功能,就是

    2024年02月09日
    浏览(45)
  • 使用wireguard+frp实现内网穿透远程桌面

    注意:阿里云服务器如果不部署frp发现无法联通,重启下服务器就好了,我也不知道为啥 服务器要求:服务器版本:centos7,内核5.6+最好,有外网ip 1. wireguard服务端部署 2. wireguard客户端配置 3. frps部署 4. frpc配置 ● 配置精简,可直接使用默认值 ● 只需最少的密钥管理工作,

    2024年01月20日
    浏览(41)
  • 【计算机网络相关】内网穿透介绍以及使用FRP实现内网穿透Windows远程桌面

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 1.1 本人对内网穿透的理解 一般来说,如果在公网环境是无法访问到内网的

    2024年02月01日
    浏览(43)
  • 内网穿透-Frp(1)使用樱花Frp(Sakura Frp)进行免费的内网穿透操作步骤

    背景介绍:因需要在4G路由器(openwrt,mips架构)上提高页面和视频流展示,需要在公网能访问的,问题:4G卡不能固定IP,所以没办法使用公网+端口映射方式进行;故采取内网穿透frp方式进行公网访问,frp需要跳板机(server端);樱花支持mips架构;经测试成功;故记录供学习参考

    2024年02月05日
    浏览(44)
  • 使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p

    通过frp实现内网client访问另外一个内网服务器 1)配置公网服务端frps 2)配置内网服务端frpc Ubuntu 配置公网服务端frps 配置 frps.ini ./frps -c frps.ini 启动 配置service自启(可选) /etc/systemd/system/frps.service systemctl start frps.service 启动服务 systemctl enable frps 设置自启 配置内网服务端frpc 配

    2024年02月15日
    浏览(42)
  • FRP实现内网穿透

    使用旧笔记本电脑安装Centos当作服务器使用,配置了网络后Centos可以访问外网了。当我想要在其他网络环境下连接我家里的服务器,怎么办呢,因为没有公网IP所以只能通过连接内网IP访问使用。如果在其他网络环境下显然是无法连接家里的内网IP的,以下提供2种解决方案:

    2024年02月19日
    浏览(47)
  • 使用 frp 内网穿透

    使用 frp 内网穿透是一种常见的实现本地服务暴露到公网的方式。要实现frp内网穿透,您可以按照以下步骤进行操作: 首先需要下载并安装 frp 客户端,可以从 frp 官方网站下载相应的客户端,根据您的操作系统选择合适的版本:https://github.com/fatedier/frp/releases。 在 frp 客户端

    2024年02月08日
    浏览(39)
  • frp内网穿透服务使用

    frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 有了内网穿透你能干什么? 远程访问内网的 http/https 服务 远程桌面(Windows/Mac) 远程文件、 SSH 小程序开发

    2024年02月01日
    浏览(40)
  • 如何搭建frp实现内网穿透?

    所谓内网穿透,也就是局域网能够直接通过公网的ip去访问,极大的方便用户的日常远程的一些操作的使用。比如nas的远程访问,个人博客的搭建等等。 然而,从公网中访问自己的私有设备向来是一件难事儿。 比如自己的主力台式机、NAS等等设备,它们可能处于路由器后,或

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包