learning_record_doc/proxy/FRP内网穿透.md
2022-02-28 23:07:00 +08:00

6.9 KiB

FRP 内网穿透工具

FRP介绍

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

环境准备

在开始之前我们需要准备的东西有一台需要做内网穿透的内网服务器 (后文称为客户端),一台可以访问外网的服务器(后文称为服务端)(阿里云等) 以及一个已经备案并且别安服务器是服务端的域名(仅做 ssh 内网穿透不需要)。

安装

下载后上传至服务器或者使用wget命令下载 wget [下载连接]

建议安装路径 /opt

解压 tar -zxf *** 文件介绍

  • frpc: 客户端启动程序
  • frpc_full.ini: 客户端所有配置项(可以再此文件查看 frp 的所有的配置项)
  • frpc.ini: 客户端配置项
  • frps: 服务端启动程序
  • frps_full.ini: 服务端所有配置项(可以再此文件查看 frp 的所有的配置项)
  • frps.ini: 服务端配置项
  • LICENSE: 许可证

配置SSH转发

服务端配置

编辑服务端配置文件

#编辑服务端配置文件
vim frps.ini
#写入以下内容
[common]
bind_port = 7000 #用于和客户端连接通讯的端口

服务端启动 ./frps -c ./frps.ini

这行命令的意思是以frps.ini的配置启动frps服务端 但是这样启动后退出就会中断服务

使用nohup启动 nohup ./frps -c ./frps.ini &

客户端配置

编辑编辑客户端配置文件

#编辑客户端配置文件
vim frpc.ini
#写入以下内容
[common]
server_addr = 1.1.1.1 #服务端ip
server_port = 7000    #服务端bind_port的端口

[ssh]
type = tcp            #连接类型
local_ip = 127.0.0.1  #本机的话则直接写入127.0.0.1 也可以是本机其他可ssh远程主机的ip
local_port = 22       #ssh端口默认为22
remote_port = 6000    #设置远程服务端对应的端口

客户端启动 ./frpc -c ./frpc.ini

测试链接

ssh 服务端ip -p 6000

注意事项
  • 防火墙开启服务端端口7000、6000
  • 防火墙开启客户端端口22

配置http转发

服务端配置

编辑服务端配置文件

#编辑服务端配置文件
vim frps.ini
#写入以下内容
[common]
bind_port = 7000 #用于和客户端连接通讯的端口
vhost_http_port = 8080 #访问服务端的8080端口frp会将http请求转发到客户端

服务端启动 ./frps -c ./frps.ini

客户端配置

编辑客户端配置文件

#编辑客户端配置文件
vim frpc.ini
#写入以下内容
[common]
server_addr = 1.1.1.1 #服务端ip
server_port = 7000    #服务端bind_port的端口

[web]
type = http            #连接类型
local_ip = 192.168.3.5  #要转发web服务的ip地址本机的话可以省略这条 如果是其他web 写要进行转发的web服务的服务器ip
local_port = 80       #要转发web服务的端口
custom_domains = test.my.com #绑定域名 写多个则用,进行分割

客户端启动 ./frpc -c ./frpc.ini

测试

访问 http://test.my.com:8080

多WEB服务配置

根据域名来区分服务

服务端配置

编辑服务端配置文件

#编辑服务端配置文件
vim frps.ini
#写入以下内容
[common]
bind_port = 7000 #用于和客户端连接通讯的端口
vhost_http_port = 8080 #访问服务端的8080端口frp会将http请求转发到客户端

服务端启动 ./frps -c ./frps.ini

客户端配置

编辑客户端配置文件

#编辑客户端配置文件
vim frpc.ini
#写入以下内容
[common]
server_addr = 1.1.1.1 #服务端ip
server_port = 7000    #服务端bind_port的端口

[web]
type = http            #连接类型
local_ip = 192.168.3.5  #要转发web服务的ip地址本机的话可以省略这条 如果是其他web 写要进行转发的web服务的服务器ip
local_port = 80       #要转发web服务的端口
custom_domains = test.my.com #绑定域名 写多个则用,进行分割

[web2]                #保持唯一
type = http            #连接类型
local_ip = 192.168.3.5  #要转发web服务的ip地址本机的话可以省略这条 如果是其他web 写要进行转发的web服务的服务器ip
local_port = 8080       #要转发web服务的端口
custom_domains = test2.my.com #绑定域名 写多个则用,进行分割

客户端启动 ./frpc -c ./frpc.ini

测试

访问 http://test.my.com:8080 => 192.168.3.5:80 访问 http://test2.my.com:8080 => 192.168.3.5:8080

根据端口来区分服务

服务端配置

编辑服务端配置文件

#编辑服务端配置文件
vim frps.ini
#写入以下内容
[common]
bind_port = 7000 #用于和客户端连接通讯的端口

服务端启动 ./frps -c ./frps.ini

客户端配置

编辑客户端配置文件

#编辑客户端配置文件
vim frpc.ini
#写入以下内容
[common]
server_addr = 1.1.1.1 #服务端ip
server_port = 7000    #服务端bind_port的端口

[web]                 #保持唯一
type = tcp            #连接类型 注意这里不写http
local_ip = 192.168.3.5  #要转发web服务的ip地址本机的话可以省略这条 如果是其他web 写要进行转发的web服务的服务端ip
local_port = 80       #要转发web服务的端口
remote_port = 80      #访问服务器进行转发的端口


[web]                 #保持唯一
type = tcp            #连接类型 注意这里不写http
local_ip = 192.168.3.5  #要转发web服务的ip地址本机的话可以省略这条 如果是其他web 写要进行转发的web服务的服务端ip
local_port = 8080       #要转发web服务的端口
remote_port = 8080      #访问服务器进行转发的端口

客户端启动 ./frpc -c ./frpc.ini

测试

访问 http://服务端ip:80 => 192.168.3.5:80 访问 http://服务端ip:8080 => 192.168.3.5:8080

官方文档