frp 内网穿透

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,

且尝试性支持了点对点穿透。

详细说明 https://github.com/fatedier/frp/blob/master/README_zh.md

下载地址 https://github.com/fatedier/frp/releases

1.frp的作用

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,

支持自定义域名绑定,使多个域名 可以共用一个 80 端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和

udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机

2.frp支持的平台

darwinlinux 386 amd64armmips mips64 mips64le mipslewindows 386 amd64

3.常用场景

C 是内部网络它的 80 端口开放 WEB 服务,B 与 C 之间有防火墙过滤,现在想把 C 的 80 端口映射到公网 B 的 8000 端口上 那么 A 访问公网的 8000 的端口就能

访问 C 的 80 端口的 WEB 服务,同理如果想访问内网 C 的 22 端口,就把 22 端口映射 到公网某个端口上,那么 A 就能访问 B 的某个端口 就能访问 C 的 SSH 服务,

因 为这种方式是从 C 内部发起请求的,所以很好的穿透防火墙。

https://github.com/fatedier/frp/releases/tag/v0.46.1

4.测试环境

B公网vps 系统ubuntu

A与B分别都是内网的

5.frp分别服务端和客户端

frps 服务端为 linux 负责处理请求,转发流量

frpc 客户端 linux 和 windows 都支持 负责把本地的流量连到服务器,让服务 器读取&写入

在vps上修改规则

 6.frps配置服务器端

在vps上下载软件配置服务端

wget https://github.com/fatedier/frp/releases/download/v0.46.1/frp_0.46.1_linux_amd64.tar.gz

配置服务端文件 frps.ini

[common]

bind_port = 7000

token = fla_erro2023

bind_port 客户端连接的端口

token 密码 一定设置

运行./frps -c frps.ini 运行正常即可

设置开机启动

vi /lib/systemd/system/frps.service

[Unit]

Description=fraps service

After=network.target syslog.target

Wants=network.target

[Service]

Type=simple

#启动服务的命令(此处写你的 frps 的实际安装目录)

ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install]

WantedBy=multi-user.target

#启动frpc

systemctl daemon-reload

systemctl start frps

#设置为开机启动 systemctl enable frps

以上服务端配置完毕,frps 启动后将监听监听 7000 端口

用 ps aux 查看进程信息 和 netstat antl端口

7.frpc配置客户端

下载对应系统版本的 frpc 配置客户端信息

[common]

server_addr = xxx.xxx.xxx.xxx

server_port = 7000

token = fla_erro2023

[ssh]

type = tcp

local_ip = 127.0.0.1

local_port = 22

remote_port = 6000

[web]

type = tcp

local_ip = 127.0.0.1

local_port = 80

remote_port = 8000

说明

server_addr = xxx.xxx.xxx.xxx #服务器的 IP

server_port = 7000 #服务器的端口

token = fla_erro2023 #连接的密码

[web] #服务器名

type = tcp #连接协议类型

local_ip = 127.0.0.1 #访问的 ip 可以是内网任何一个

ip local_port = 80 #本地端口

remote_port = 8000 #远程服务器的 ip

启动 frpc.exe -c frpc.ini 通信正常后

 用浏览器访问

 整个流程就是客户端与服务器端建立通信后,当 A 访问 B 的的 8000 端口后,B 收到请求对流量进行转发,那么 A 就能访问到 C

posted @ 2023-01-11 22:22  kalibb  阅读(880)  评论(0编辑  收藏  举报