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

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

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

一、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

相关推荐

一日一技:用Python程序将十进制转换为二进制

用Python程序将十进制转换为二进制通过将数字连续除以2并以相反顺序打印其余部分,将十进制数转换为二进制。在下面的程序中,我们将学习使用递归函数将十进制数转换为二进制数,代码如下:...

十进制转化成二进制你会吗?#数学思维

六年级奥赛起跑线:抽屉原理揭秘。同学们好,我是你们的奥耀老师。今天一起来学习奥赛起跑线第三讲二进制计数法。例一:把十进制五十三化成二进制数是多少?首先十进制就是满十进一,二进制就是满二进一。二进制每个...

二进制、十进制、八进制和十六进制,它们之间是如何转换的?

在学习进制时总会遇到多种进制转换的时候,学会它们之间的转换方法也是必须的,这里分享一下几种进制之间转换的方法,也分享两个好用的转换工具,使用它们能够大幅度的提升你的办公和学习效率,感兴趣的小伙伴记得点...

c语言-2进制转10进制_c语言 二进制转十进制

#include<stdio.h>intmain(){charch;inta=0;...

二进制、八进制、十进制和十六进制数制转换

一、数制1、什么是数制数制是计数进位的简称。也就是由低位向高位进位计数的方法。2、常用数制计算机中常用的数制有二进制、八进制、十进制和十六进制。...

二进制、十进制、八进制、十六进制间的相互转换函数

二进制、十进制、八进制、十六进制间的相互转换函数1、输入任意一个十进制的整数,将其分别转换为二进制、八进制、十六进制。2、程序代码如下:#include<iostream>usingna...

二进制、八进制、十进制和十六进制等常用数制及其相互转换

从大学开始系统的接触计算机专业,到现在已经过去十几年了,今天整理一下基础的进制转换,希望给还在上高中的表妹一个入门的引导,早日熟悉这个行业。一、二进制、八进制、十进制和十六进制是如何定义的?二进制是B...

二进制如何转换成十进制?_二进制如何转换成十进制例子图解

随着社会的发展,电器维修由继电器时代逐渐被PLC,变频器,触摸屏等工控时代所替代,特别是plc编程,其数据逻辑往往涉及到数制二进制,那么二进制到底是什么呢?它和十进制又有什么区别和联系呢?下面和朋友们...

二进制与十进制的相互转换_二进制和十进制之间转换

很多同学在刚开始接触计算机语言的时候,都会了解计算机的世界里面大多都是二进制来表达现实世界的任何事物的。当然现实世界的事务有很多很多,就拿最简单的数字,我们经常看到的数字大多都是十进制的形式,例如:我...

十进制如何转换为二进制,二进制如何转换为十进制

用十进制除以2,除的断的,商用0表示;除不断的,商用1表示余0时结束假如十进制用X表示,用十进制除以2,即x/2除以2后为整数的(除的断的),商用0表示;除以2除不断的,商用1表示除完后的商0或1...

十进制数如何转换为二进制数_十进制数如何转换为二进制数举例说明

我们经常听到十进制数和二进制数,电脑中也经常使用二进制数来进行计算,但是很多人却不清楚十进制数和二进制数是怎样进行转换的,下面就来看看,十进制数转换为二进制数的方法。正整数转二进制...

二进制转化为十进制,你会做吗?一起来试试吧

今天孩子问把二进制表示的110101改写成十进制数怎么做呀?,“二进制”简单来说就是“满二进一”,只用0和1共两个数字表示,同理我们平常接触到的“十进制”是“满十进一”,只用0-9共十个数字表示。如果...

Mac终于能正常打游戏了!苹果正逐渐淘汰Rosetta转译

Mac玩家苦转译久矣!WWDC2025苹果正式宣判Rosetta死刑,原生游戏时代终于杀到。Metal4光追和AI插帧技术直接掀桌,连Steam都连夜扛着ARM架构投诚了。看到《赛博朋克2077》...

怎么把视频的声音提出来转为音频?音频提取,11款工具实测搞定

想把视频里的声音单独保存为音频文件(MP3/AAC/WAV/FLAC)用于配音、播客、听课或二次剪辑?本文挑出10款常用工具,给出实测可复现的操作步骤、优缺点和场景推荐。1)转换猫mp3转换器(操作门...

6个mp4格式转换器测评:转换速度与质量并存!

MP4视频格式具有兼容性强、视频画质高清、文件体积较小、支持多种编码等特点,适用于网络媒体传播。如果大家想要将非MP4格式的视频转换成MP4的视频格式的话,可以使用MP4格式转换器更换格式。本文分别从...