泽兴芝士网

一站式 IT 编程学习资源平台

FRP内网穿透搭建教程

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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言