frp实现内网穿透

frp实现内网穿透

实现原理:在公网服务器上运行服务端(frps)和在内网主机运行客户端(frpc),将内网服务快速暴露到公网上个【实现端口转发,支持多种协议】

用法:公网服务器跑frps,内网跑fprc,配置映射规则。

适合长期使用。

注意事项【也是排错思路】:

  • selinuxfilewalldNetworkManager都要关闭,指令如下,如果开启,一定要关闭。

    systemctl status selinux
    systemctl status filewalld
    systemctl status NetworkManager
  • 服务端bind_port端口和客户端server_port保持一致

  • server_addr为服务端ip

  • 不要开代理(不管是规则还是全局,直接关掉)

环境相关:

  • 服务端【centos7.8 设置为NAT模式,让他相对于内网处于公网状态 192.168.144.133】
  • 客户端【win10 划分子网 我设置为192.168.1.11】

1、部署服务端

环境相关:centos7.8【NAT模式】安装了frp53.0 版本(linux版)。

服务端的IP为:192.168.144.133

1、进入到/opt目录下,将frp53版本拖动到该目录下

# 1.解压
tar -zxf frp_0.53.0_linux_amd64.tar.gz
# 2.进入frp_0.53.0_linux_amd64目录
cd frp_0.53.0_linux_amd64
# 3.添加服务端接收外部 HTTP 请求的端口
vim frps.toml
# 添加这行配置
vhostHTTPPort = 80
"""
这里区分一下:
bindPort # 服务端与客户端之间的通信端口
vhostHTTPPort # 服务端接收外部 HTTP 请求的端口
"""
# 4.启动服务端
./frps -c frps.toml

2、部署客户端

环境相关:win10【划分子网,让他处于内网】安装了frp53.0(windows版)。

客户端(内网)IP为:192.168.1.11

下载链接:https://github.com/fatedier/frp/releases?page=2

1、使用小皮部署一个网站

  • 把目录列表功能打开

  • 将http对应端口改为8888

  • www目录下创建一个cs文件夹,然后里面放file.pdf文件(不管什么pdf都行,方便测试)

  • 启动,我用的nginx + mysql + ftp,如下图所示

2、将安装包解压到C:\tools\frp_0.53.0_windows_amd64目录下

3、配置客户端【在frpc.toml文件中】

# 介绍一下配置
"""
serverAddr # 服务端的公网ip
serverPort # 服务端通信端口
name="web-alex" # 代理名称,随意取
customDomains = "web.alex.com" # 绑定的域名
# 下面两行即告诉服务端我内网要暴露的ip和端口
localIP"192.168.1.10" # 内网服务的IP
localPort = 8888 # 内网服务的端口
"""
# 配置如下【这个实验我的配置以域名访问为准】【注意:通过域名访问和通过公网的ip和端口访问的客户端配置是不一样的。】
# 通过域名访问的配置【使用这个配置,就使用web.alex.com进行访问】
"""
serverAddr = "192.168.144.133"
serverPort = 7000
[[proxies]]
name = "web"
type = "http"
localIP = "192.168.1.11"
localPort = 8888
customDomains = ["web.alex.com"]
"""
# 通过公网ip:端口访问的配置【使用这个配置,就使用公网:ip进行访问】
"""
serverAddr = "192.168.144.133"
serverPort = 7000
[[proxies]]
name = "web"
type = "tcp" # 使用 tcp 类型
localIP = "192.168.1.11" # 内网服务的 IP 地址
localPort = 8888 # 内网服务的端口
remotePort = 8888 # 公网访问的端口
"""
# 能够看出来两者配置不同在于:
域名访问: 通常使用 http 或 https 类型的代理
公网:端口访问:通常使用 tcp 或 udp 类型的代理

3、启动客户端,在解压目录下打开终端,执行以下命令

frpc.exe -c frpc.toml

查看服务端,有下列响应

4、在宿主机上手动域名解析,在C:\Windows\System32\drivers\etc下的hosts文件中配置

192.168.144.133 web.alex.com

5、访问web.alex.com就能访问到内网中的主机,如下图所示

我再访问一下内网中的pdf文件,如下图所示

现在我来捋一下做内网穿透的这个过程。

1、启动 frpc(客户端),做了以下动作

  • 与frps(服务端建立连接);并告诉他我的代理名为web,绑定了``www.alex.com`;这个时候通道保持开放。

2、服务端运行中

  • 服务端监听的7000端口与客户端进行通信,80接收外部HTTP请求(服务端已知道web.alex.com对应某个客户端的代理)

3、游览器访问呢web.alex.com

  • 经过解析到达192.168.144.133:80后,看到web.alex.com找到对应代理,通过现有的7000端口转发给客户端

4、客户端收到请求后,转发给192.168.1.11:8888

posted @   清风拂山岗(小高同学)  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示