asp.net网站本机访问慢,专业东莞网站制作公司,优秀的网站设计案例,深圳 做网站 车公庙一、FRP简介
FRP#xff0c;即快速反向代理技术#xff08;fast reverse proxy#xff09;。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前#xff0c;该程序可实现#xff1a;“将位于 NAT 或防火墙后面的本地服务器暴露给互联网”。它目前支持 TCP 和…一、FRP简介
FRP即快速反向代理技术fast reverse proxy。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前该程序可实现“将位于 NAT 或防火墙后面的本地服务器暴露给互联网”。它目前支持 TCP 和 UDP以及 HTTP 和 HTTPS 协议允许通过域名 / IP将请求转发到内部服务器。
我个人理解的frp原理如图 主机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文库 方式二、在github项目中下载包含更多的操作系统/处理器版本GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 2. 资源内容
本例的计算机使用的操作系统为Windows处理器为X86架构因此选择frp_0.48.0_windows_386.zip 文件。该文件包含以下内容 其中
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. 放通云服务器端口如果非云服务器可跳过这一步
在服务器中放通所有要使用到的端口。 3. 防火墙设置
在设置 - Windows防火墙 - 允许应用通过防火墙 - 允许其他应用。
然后根据程序的路径找到frps.exe程序并添加。 4. 在服务器端的命令行运行frps.exe程序 在cmd中切换到对应目录下运行
frps.exe -c frps.ini 需要保持命令行窗口打开。 六、客户端的部署
客户端是指内网中的主机不具备公网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 连接成功
七、测试
在内网主机的3306上运行MySQL服务通过其他主机进行测试
测试成功 八、更细致的配置文件以供参考
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 wont 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 frps status and proxies statistics information by Dashboard.
# 通过仪表板检查FRP的状态和代理的统计信息。dashboard可以在frps端查看状态。
# dashboards 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端口号视配置而定 使用用户名和密码查看状态。 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 如有不当或错误之处恳请您的指正谢谢