百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

FRP内网穿透搭建教程(frps 内网穿透)

haoteby 2025-05-10 22:00 11 浏览

一、FRP内网穿透工具

1、FRP简介:

frp 是一个开源项目, 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,

反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。

协议类型

描述

tcp

单纯的TCP端口映射,服务端会根据不同的端口路由到不同的内网服务。

udp

单纯的UDP端口映射,服务端会根据不同的端口路由到不同的内网服务。

http

访问HTTP应用。

https

访问HTTPS应用。

stcp

安全的TCP内网代理,需要在被访问者和访问者的机器上都部署frpc,不需要在服务端暴露端口。

sudp

安全的UDP内网代理,需要在被访问者和访问者的机器上都部署frpc,不需要在服务端暴露端口。

xtcp

点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。

tcpmux

支持服务端TCP端口的多路复用,通过同一个端口访问不同的内网服务。

2、FRP配置:

从本地外网机器获取到的公网ip无法使用,需购买云服务器,如购买阿里云、腾讯云服务器,将服务端部署到云服务器上,客户端部署到可以访问内外网的跳板机上;

2.1 服务器端配置frps.ini:(需要安装在外网机器上)

1、下载安装包
https://github.com/fatedier/frp/releases/tag/v0.37.1

2、解压安装包、并拷贝frps.exe 、frps.ini拷贝指定目录,windows下如C盘: C:\frp\ (方法windows、Linux版本都适用)

3、配置服务端frps.ini :(windows、Linux版本都适用)

[common]

bind_port = 7000 #frps服务端的端口

token = cjjs@88888888 #客户端连接服务端的密码

max_pool_count=20 #最大连接数

dashboard_port = 7500 #控制面板的服务端口,用于web页面查看所有客户端连接信息与状态

dashboard_user = admin #控制面板登录账户

dashboard_pwd = admin #控制面板登录密码

vhost_http_port = 80 #设置http端口

vhost_https_port = 443 #设置https端口

[可选]

log_level = debug #设置日志显示级别{debug, info, warn, error)

log_max_days = 5 #设置日志最大天数

privilege_mode = true #设置特权模式是否开启,开通后web,ssh等使用都可以直接在客户端设置

privilege_token = admin #设置特权模式token值

subdomain_host = abc.cn #设置动态二级域名

注:frps.ini文件可以使用默认配置直接启动就行,当然最好加个token,加强安全验证。

4、启动服务端:

(1)将文件frps.exe 、frps.ini拷贝至任意目录(C:\frps);

(2)启动frps服务: frps.exe -c frps.ini

2.2 客户端配置frpc.ini:(需要安装在可以同时访问内网外网的跳板机上)

1、将解压安装包中的frpc.exe 、frpc.ini拷贝指定目录;(windows、Linux版本都适用)

2、配置客户端frpc.ini :(windows、Linux版本都适用)

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = yydds@88888888 #连接frp服务端的密码

[ssh] #配置ssh服务

type=tcp

local_ip=10.199.108.11 #内网服务器ip

local_port=22 #内网服务器端口

remote_port=30000 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即22号端口

use_encryption=true #可选,表示是否加密

use_compression=false #可选,表示是否压缩

[RDP] #配置远程桌面

type=tcp

local_ip=10.41.71.128 #内网服务器ip

local_port=3389 #内网服务器端口

remote_port=30001 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即3389号端口

[http_proxyx]

type = tcp #通信数据类型

remote_port = 1080 #在frp服务端开设代理服务的端口

plugin = socks5 #通过插件开设socks5代理服务

#plugin_user = abc123 #通过插件设置连接代理的用户名

#plugin_passwd = abc123 #通过插件设置连接代理的密码

#user_compression=true

3、启动客户端:

frpc.exe -c frpc.ini

2.3 web配置

1、公网服务器,配置服务端frps.ini

[common]

bind_port = 7000 #frps服务端的端口

token = yydds@88888888 #客户端连接服务端的密码

vhost_http_port = 80 #http端口

vhost_https_port = 443 #https端口

2、内网跳板机,配置客户端frpc.ini

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = yydds@88888888 #连接frp服务端的密码

[web_http]

type = http

local_ip = 10.199.108.10 #内网服务器ip

local_port = 80 #内网网站使用的端口

remote_port = 30002 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即80号端口


[web_https]

type = http

local_ip = 10.199.108.10 #内网服务器ip

local_port = 443 #内网网站使用的端口

remote_port = 30003 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即443号端口


4、重新启动frp服务:

1)重启frps: ./frps.exe -c frps.ini

2)重启frpc: ./frpc.exe -c frpc.ini

2.4 STCP配置

背景: frp的tcp模式相当于设备直接向公网暴露了一个tcp端口;任何设备都可以尝试连接这个端口,会有很大的安全风险;而stcp协议就是为解决这个安全问题;

限制特定设备能够使用这个端口。

1、公网服务器,配置服务端frps.ini

[common]

bind_port = 7000 #frps服务端的端口

token = yydds@88888888 #客户端连接服务端的密码


2、内网跳板机,配置客户端frpc.ini

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = cjjs@88888888

[rdp]

type = stcp

sk = abcdefg #只有sk一致的用户才能访问到此服务

local_ip = 127.0.0.1

local_port = 3389 #远程桌面的本地端口地址


3、本地电脑,配置客户端frpc.ini

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = cjjs@88888888

[rdp_visitor]

type = stcp

role = visitor #stcp的访问者

server_name = rdp #要访问stcp的代理名字

sk = abcdefg #只有sk一致的用户才能访问到此服务

bind_addr = 127.0.0.1 #绑定本地ip、端口,用于访问远程桌面服务

bind_port = 6000

4、在本地电脑打开远程桌面服务,输入127.0.0.1:6000,即可访问内网跳板机上的远程服务。

2.5 XTCP配置

XTCP 的配置方式和STCP很类似;但是会采用P2P的方式进行打洞穿透,如果成功,后续的流量将不会经过frps,而是直接通信,不再受到frps所在服务器的带宽限制。

1、公网服务器,配置服务端frps.ini

[common]

bind_port = 7000 #frps服务端的端口

token = cjjs@88888888 #客户端连接服务端的密码


2、内网跳板机,配置客户端frpc.ini

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = cjjs@88888888

[rdp]

type = xtcp

sk = abcdefg #只有sk一致的用户才能访问到此服务

local_ip = 127.0.0.1

local_port = 3389 #远程桌面的本地端口地址


3、本地电脑,配置客户端frpc.ini

[common]

server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)

server_port = 7000 #frps服务端的端口

token = cjjs@88888888

[rdp_visitor]

type = xtcp

role = visitor #stcp的访问者

server_name = rdp #要访问stcp的代理名字

sk = abcdefg #只有sk一致的用户才能访问到此服务

bind_addr = 127.0.0.1 #绑定本地ip、端口,用于访问远程桌面服务

bind_port = 6000

4、在本地电脑打开远程桌面服务,输入127.0.0.1:6000,即可访问内网跳板机上的远程服务。

3、各服务访问方式

(1)SSH访问方式:

ssh root@81.70.5.18 -p 30000 (mobaxterm 登录方式,30000为客户端映射的端口,81.70.5.18 为腾讯云服务器ip。

(2)RDP(远程桌面)访问方式:

win系统下打开远程桌面:输入81.70.5.18 :30001 #30001为客户端映射的端口,181.70.5.16 为腾讯云服务器ip。

(3)Web访问方式:

打开浏览器,输入 81.70.5.18 :30003 #30003为vhost_https_port映射的端口,即客户端配置的远程端口;

4、frp加入开机启动服务

1、frps加入开机启动服务

tar -zxvf frp.tar.gz -C ./

mkdir /etc/frp

cp frp_0.37.1_linux_386/frps /usr/bin/frps

cp frp_0.37.1_linux_386/frps.ini /etc/frp/frps.ini

cp frp_0.37.1_linux_386/systemd/frps.service /usr/lib/systemd/system/frps.service

systemctl status frps.service

systemctl start frps.service


2、frpc加入开机启动服务

tar -zxvf frp.tar.gz -C ./

mkdir /etc/frp

cp frp_0.37.1_linux_386/frpc /usr/bin/frpc

cp frp_0.37.1_linux_386/frpc.ini /etc/frp/frpc.ini

cp frp_0.37.1_linux_386/systemd/frpc.service /usr/lib/systemd/system/frpc.service

systemctl status frpc.service

systemctl start frpc.service

相关推荐

网站seo该怎么优化

一、网站定位在建设一个网站之前,我们首先要做的就是一个网站清晰的定位,会带来转化率相对较高的客户群体,我们建站的目的就是为了营销,只有集中来做某一件事,才会更好的展现我们的网站。在做SEO优化的同时...

3个小技巧教你如何做好SEO优化

  想半路出家做SEO?可是,怎么才做的好呢?关于SEO专业技术弄懂搜索引擎原理,咱们做搜索引擎排名的首先就是要了解搜索引擎的工作原理,对SEO优化有更深入了解之后再来做SEO,你就能从搜索引擎的视点...

SEO指令分享:filetype指令

filetype用于搜索特定的文件格式。百度和谷歌都支持filetype指令。比如搜索filetype:pdf今日头条返回的就是包含今日头条这个关键词的所有pdf文件,如下图:百度只支持:pdf...

网站seo优化技巧大全

SEO在搜索引擎中对检索结果进行排序,看谁最初是在用户的第一眼中看到的。实际上,这些排名都是通过引擎的内部算法来实现的。例如,百度算法很有名。那么,对百度SEO的优化有哪些小技巧?下面小编就会说下针对...

小技巧#10 某些高级的搜索技巧

由于某些原因,我的实验场所仅限百度。1.关键词+空格严格说来这个不能算高级,但关键词之间打空格的办法确实好用。我习惯用右手大拇指外侧敲击空格键,这个习惯在打英文报告时尤其频繁。2.site:(请不要忽...

MYSQL数据库权限与安全

权限与安全数据库的权限和数据库的安全是息息相关的,不当的权限设置可能会导致各种各样的安全隐患,操作系统的某些设置也会对MySQL的安全造成影响。1、权限系统的工作原理...

WPF样式

UniformGrid容器<UniformGridColumns="3"Rows="3"><Button/>...

mysql自动备份,并zabbix检测备份文件是否正常,备份文件大小

推荐...

MySQL学到什么程度?才有可以在简历上写精通

前言如今互联网行业用的最多就是MySQL,然而对于高级Web面试者,尤其对于寻找30k下工作的求职者,很多MySQL相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基...

jquery的事件名称和命名空间的方法

我们先看一些代码:当然,我们也可以用bind进行事件绑定。我们看到上面的代码,我们可以在事件后面,以点号,加我们的名字,就是事件命名空间。所谓事件命名空间,就是事件类型后面以点语法附加一个别名,以便引...

c#,委托与事件,发布订阅模型,观察者模式

什么是事件?事件(Event)基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。通过委托使用事件事件在类中声明且生成,且通过...

前端分享-原生Popover已经支持

传统网页弹窗开发需要自己处理z-index层级冲突、编写点击外部关闭的逻辑、管理多个弹窗的堆叠顺序。核心优势对比:...

Axure 8.0 综合帖——新增细节内容

一、钢笔工具与PS或者AI中的钢笔工具一样的用法。同样有手柄和锚点,如果终点和起点没有接合在一起,只要双击鼠标左键即可完成绘画。画出来的是矢量图,可以理解为新的元件。不建议通过这个工具来画ICON图等...

PostgreSQL技术内幕28:触发器实现原理

0.简介在PostgreSQL(简称PG)数据库中,触发器(Trigger)能够在特定的数据库数据变化事件(如插入、更新、删除等)或数据库事件(DDL)发生时自动执行预定义的操作。触发器的实现原理涉及...

UWP开发入门(十七)--判断设备类型及响应VirtualKey

蜀黍我做的工作跟IM软件有关,UWP同时会跑在电脑和手机上。电脑和手机的使用习惯不尽一致,通常我倾向于根据窗口尺寸来进行布局的变化,但是特定的操作习惯是依赖于设备类型,而不是屏幕尺寸的,比如聊天窗口的...