前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过 docker 部署 frp 内网穿透(Linux and Windows)

通过 docker 部署 frp 内网穿透(Linux and Windows)

作者头像
冷影玺
发布2024-10-09 14:02:32
7820
发布2024-10-09 14:02:32
举报
文章被收录于专栏:冷影玺

FRP 介绍

FRP (Fast Reverse Proxy) 是一个用于内网穿透的高效反向代理应用,它支持 TCP、UDP、HTTP 和 HTTPS 等多种协议,能够让处于防火墙或 NAT 后的内网服务通过公网访问。通过 FRP,内网服务可以绑定到外网 IP 地址和端口,用户可以方便地通过公网访问这些内网服务,适用于远程管理、应用发布等场景。

FRP 工作原理

FRP 分为两部分:客户端(frpc)服务端(frps)

  • frps 服务端:部署在拥有公网 IP 的服务器上,负责接收来自外部的请求并将其转发到内网的服务。
  • frpc 客户端:部署在内网的机器上,与 frps 建立持久连接,将内网的服务暴露给公网。

当客户端(frpc)向服务端(frps)注册时,会告知服务端希望暴露哪些内网服务。服务端会将这些服务的流量转发给客户端,并通过客户端再发送给相应的内网服务。

FRP 使用场景

远程访问内网服务:例如,你可以通过 FRP 访问家里或公司的服务器,而不需要配置复杂的端口映射。

  • 开发环境共享:开发者可以通过 FRP 共享自己本地的开发环境,外部团队可以直接访问内网的应用和 API。
  • 多种协议支持:FRP 支持 HTTP、HTTPS、TCP、UDP 等协议,可以穿透不同类型的服务。
  • 穿透防火墙/NAT:即使内网服务器处于 NAT 后面或防火墙后面,仍然可以通过 FRP 将服务暴露到公网。

FRP 的优势

  • 高效:FRP 采用了较为高效的协议和数据传输方式,性能较好,能够处理较大的流量。
  • 多协议支持:不仅支持常见的 TCP 和 HTTP,还支持 UDP、WebSocket 等协议,灵活性强。
  • 简单易用:配置文件简洁,支持多种配置方式,快速上手。
  • 安全性:FRP 支持 TLS、身份验证等安全机制,保障数据的传输安全。
  • 丰富的功能:如负载均衡、流量统计、服务限速等,可以满足各种复杂的应用场景需求。

服务器配置部署

1,创建并配置 frp 文件

代码语言:javascript
复制
[root@server ~]# cat /root/frps.ini 
[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
# 登录面板的密码
dashboard_pwd = 123456

# 身份验证
token = qwertyui
[root@server ~]#

2,拉取镜像启动容器

代码语言:javascript
复制
[root@server ~]# docker pull registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps

[root@server ~]# docker run --restart=always --network host -d -v /root/frps.ini:/etc/frp/frps.ini --name frps registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps
5d1c7d3ec1697c08bd77fa267e9ae007ffa8c379b81bb6953d6e01ff85c5cbb7

[root@server ~]# docker ps -a
CONTAINER ID   IMAGE                                                      COMMAND                  CREATED         STATUS                 PORTS                                       NAMES
5d1c7d3ec169   registry.cn-shenzhen.aliyuncs.com/mogublog_business/frps   "/bin/sh -c '/usr/bi…"   4 seconds ago   Up 3 seconds                                                       frps
[root@server ~]# 

3,登录 frp 的 web 后台进行查看(账号: admin 密码: 123456)

代码语言:javascript
复制
http://服务器IP:7500
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_02
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_02

客户端配置部署 Linux

1,创建并配置 frp 文件

代码语言:javascript
复制
[root@client ~]# cat /root/frpc.ini 
[common]
# server_addr为云服务器IP地址
server_addr = xx.xx.xx.xx
# server_port为服务端监听端口,bind_port
server_port = 7000
# 服务端设置的token
token = qwertyui

# 添加穿透端口1
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8822

# 添加穿透端口2
[nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8880
[root@client ~]#

2,客户端镜像拉取启动

代码语言:javascript
复制
[root@client ~]# docker pull registry.cn-shenzhen.aliyuncs.com/mogublog_business/frpc:latest

[root@client ~]# docker run --restart=always --network host -d -v /root/frpc.ini:/etc/frp/frpc.ini --name frpc registry.cn-shenzhen.aliyuncs.com/mogublog_business/frpc:latest 
5d73d9ee2583b73b84a2863f61ddf29d722b7ac8a79f1e366bec7998bc8e278b

[root@client ~]# docker ps -a
CONTAINER ID   IMAGE                                                             COMMAND                   CREATED         STATUS         PORTS     NAMES
5d73d9ee2583   registry.cn-shenzhen.aliyuncs.com/mogublog_business/frpc:latest   "/bin/sh -c '/usr/bi…"   4 seconds ago   Up 4 seconds             frpc
[root@client ~]# 

3,测试内网穿透端口 1

代码语言:javascript
复制
root@ceshi:~# ssh root@服务器IP -p 8822
root@服务器IP's password: 
Last login: Tue Oct  8 16:38:52 2024 from localhost
[root@client ~]# 

4,测试内网穿透端口 2

代码语言:javascript
复制
# 拉取一个 nginx 镜像并启动
[root@client ~]# docker run -d  -p 80:80 --name=web --restart=always nginx
32204c6ca6c19ff662ba21511a916dc58141add3c02fa8cd34b1c024cdf03474
[root@client ~]# 
[root@client ~]# 
[root@client ~]# docker ps -a
CONTAINER ID   IMAGE                                                             COMMAND                   CREATED          STATUS         PORTS                               NAMES
32204c6ca6c1   nginx                                                             "/docker-entrypoint.…"   11 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web
[root@client ~]# 
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_03
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_03

客户端配置部署 windows

1,进入 GitHub 下载对应版本

代码语言:javascript
复制
https://github.com/fatedier/frp/

2,解压 创建 frpc.ini 文件 添加内容

代码语言:javascript
复制
[common]
# 服务端公网ip
server_addr = 47.116.17.20
# 对应服务端配置 bind_port
server_port = 7000
# 对应服务端配置中的 token
token = qwertyui

[mstsc]
type = tcp
# 此处不需要改
local_ip = 127.0.0.1
# windows服务器默认的远程端口,如果考虑安全问题,可以修改远程端口,对应再修改此处
local_port = 3389
# local_port映射的远程端口,也就是映射的服务端的端口
remote_port = 8888
通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_04
通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_04

3,创建 bat 启动文件并添加内容

代码语言:javascript
复制
frpc.exe -c frpc.ini
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_05
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_05

4,运行bat文件之后 web 网页查看端口已生效

通过 docker 部署 frp 内网穿透(Linux and Windows)_windows_06
通过 docker 部署 frp 内网穿透(Linux and Windows)_windows_06
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_07
通过 docker 部署 frp 内网穿透(Linux and Windows)_linux_07

5,测试远程登录

通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_08
通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_08
通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_09
通过 docker 部署 frp 内网穿透(Linux and Windows)_frp_09
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FRP 介绍
  • FRP 工作原理
  • FRP 使用场景
  • FRP 的优势
  • 服务器配置部署
  • 客户端配置部署 Linux
  • 客户端配置部署 windows
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档