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

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

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

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

相关推荐

如何为MySQL服务器和客户机启用SSL?

用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...

OpenVPN客户端配置_openvpn客户端配置文件解析

...

k8s 证书问题排查_k8s dashboard 证书

从去年开始一些老项目上陆陆续续出现一些列的证书问题,(证书原理这里就不说了,官方文档一堆)多数刚开始的表现就是节点的kubelet服务起不来,节点状态NotReady表现日志如下failed...

企业级网络互通方案:云端OpenVPN+爱快路由器+Win11互联实战

企业级网络互通方案:OpenVPN搭建公有云+爱快路由器+Win11三地互联实战指南「安全高效」三地局域网秒变局域网实施环境说明...

OpenV** Server/Client配置文件详解

Server配置详解...

接口基础认知:关键信息与合规前提

1.核心技术参数(必记)...

S交换机通过SSH登录设备配置示例(RADIUS认证+本地认证独立)

说明:●本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。●通过不同的管理域来实现RADIUS认证与本地认证两种方式同时使用,两...

SSL证书如何去除私钥密码保护_ssl证书怎么取消

有时候我们在生成证书的时候可以加入了密码保护。然后申请到证书安装到了web服务器。但是这样可能会带来麻烦。每次重启apache或者nginx的时候,都需要输入密码。那么SSL证书如何去除私钥密码保护。...

SSL证书基础知识与自签名证书生成指南

一、证书文件类型解析...

S交换机通过SSH登录设备配置示例(RADIUS认证)

说明:本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。假设已在RADIUS服务器上创建了用户名yc123,密码test#123。对...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

HTTPS TLS握手流程_进行tls握手

1.客户端向服务器发送`ClientHello`消息,包括支持的TLS版本、加密套件、随机数等信息。2.服务器收到`ClientHello`消息后,解析其中的信息,并根据配置选择一个加密套件。3....

Spring Boot 单点登录(SSO)实现_spring boot 单点登录jwt

SpringBoot单点登录(SSO)实现全指南单点登录(SingleSign-On,SSO)是一种身份验证机制,允许用户使用一组凭证登录多个相关但独立的系统。在微服务架构和企业级系统中,SS...

源码分享:在pdf上加盖电子签章_pdf如何加盖电子公章

在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...

微信支付商户API证书到期 怎么更换

微信支付商户API证书到期更换是一个非常重要的操作,需要仔细按照流程进行。如果证书过期,所有通过API的支付、退款等操作都会失败,将直接影响您的业务。请按照以下详细步骤进行操作:重要前提:分清...