使⽤frp⼯具实现内⽹穿透以及配置多个ssh和web服务
frp简介
frp 是⼀个可⽤于内⽹穿透的⾼性能的反向代理应⽤,⽀持 tcp, udp 协议,为 http 和 https 应⽤协议提供了额外的能⼒,且尝试性⽀持了点对点穿透。
环境准备
ssh连接
1. 需要⼀台可以直接访问外⽹的服务器,⽐如阿⾥云服务器(服务端)
2. 需要做内⽹穿透的服务器,⽐如公司内部的局域⽹测试服务器(客户端)
web访问
3. 需要额外的已经备案的域名
下载地址
选择最新的就⾏,⼀般都是linux环境
安装步骤
客户端跟服务端都需要的安装操作
cd /usr/local/
wget github/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_
tar -zxvf frp_0.27.0_linux_
mv frp_0.27.0_linux_amd64 frp
下载完毕frp的⽬录⽂件
frpc:客户端可执⾏程序
frpc_full.ini:客户端所有配置项(可以再此⽂件查看frp的所有的配置项)
frpc.ini:客户端配置项
frps:服务端可执⾏程序
frps_full.ini:服务端所有配置项(可以再此⽂件查看frp的所有的配置项)
frps.ini:服务端配置项
LICENSE:许可证
服务端只需要编辑frps.ini⽂件
客户端只需要编辑frpc.ini⽂件
服务端配置
查看frps.ini⽂件,修改为如下内容
[common]
bind_port = 7000 # 客户端跟服务端绑定的端⼝号
默认的配置信息中只有⼀个绑定端⼝为7000,意思是我们在外⽹服务器中绑定7000端⼝和客户端进⾏通信。注:端⼝可以⾃定义,但是需要客户端和服务端进⾏统⼀。阿⾥云服务器需要在esc管理中配置安全组规则中暴露7000端⼝
启动服务端
./frps -c frps.ini
如下表⽰启动成功
启动成功之后,关闭xshell或者是退出回话,都会使连接断开,可以使⽤nohup来进⾏后台启动(后⾯启动都可以使⽤这种⽅式)
如下是后台启动并将⽇志输⼊到file.log⽂件中
nohup ./frps -c ./frps.ini > file.log 2>&1 &
客户端配置
查看frpc.ini⽂件,修改为如下内容
[common]
server_addr = 39.105.97.50 # 你的公⽹ip
server_port = 7000 # 绑定的端⼝,⾃定义,跟服务端⼀直即可
[ssh]
type = tcp
local_ip = 127.0.0.1 # 绑定的ip,填写127.0.0.1表⽰本机即可
local_port = 22
remote_port = 6008 # ssh默认是22,现在转发为6008端⼝
[common]表⽰以下配置信息是⼀些公⽤配置信息
ssh工具windowsserver_addr是我们服务端即外⽹服务器的公⽹访问ip
server_port是我们前⾯在服务端配置的frps.ini中bind_port中对应的端⼝。需保持两边⼀致
[ssh]表⽰以下配置信息是我们使⽤ssh连接内⽹服务器时需要的⼀些配置信息
type 是连接类型,ssh⽅式连接就⽤tcp
local_ip 是本机ip,直接使⽤127.0.0.1即可
local_port 是本地ssh端⼝,ssh默认端⼝为22
remote_port 是外⽹服务器请求过来的端⼝注:阿⾥云服务器需要在esc管理中配置安全组规则中添加6008端⼝
启动客户端
./frpc -c ./frpc.ini
OK,之后可以通过xshell来连接,只需要指定端⼝号为remote_port(6008)即可,如下
多个ssh配置
单个ssh配置成功,项配置多个,⼀样的操作,在另⼀台机器进⾏下载frp,之后只需要修改frpc.ini⽂件,修改格式如下
[common]
server_addr = 39.105.97.50
server_port = 7000
[ssh001] # 不能重复
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6009 # 不能重复
需要将remote_port进⾏修改,[ssh]名称不能重复
frpc命令启动即可。
外⽹服务器HTTP配置
配置了http之后,就可以访问内⽹的web服务了,⽐如云盘前提是需要有已经备案的域名,这样才能配置。
配置⽅式
服务端:修改frps.ini,内容如下
[common]
bind_port = 7000
vhost_http_port = 6001 # 访问6001端⼝,映射到内⽹web服务
bind_port和之前做ssh时是⼀个意思。也是为了和客户端建⽴通信的端⼝,只需要在之前的配置⽂件中添加上vhost_http_port = 6001,这个配置意思是让别⼈在访问我们的服务器6001端⼝时。frp将http请求转发到内⽹服务器
客户端:修改frpc.ini,修改内容如下
[common]
server_addr = 39.105.97.50
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6008
[web]
type = http
local_port = 8080 # 访问本地8080web服务
custom_domains = www.chendahai # 必须已经备案
[web]表⽰我们的配置是⼀个web服务
type表⽰我们的请求⽅式是http⽅式
local_port表⽰我们的本地服务端⼝号为80
custom_domains表⽰配置为⼀个已经备案的域名(必填,并且需要域名可⽤) 并且域名解析配置为外⽹
服务器ip OK,使⽤frpc命令重启即可,通过www.chendahai:6001,即可访问内⽹的8080服务了。
多个web服务配置
如果想配置多个web服务怎么办,跟ssh类似,添加多个[web]即可,注意不能重名
服务端不需要做任何修改,修改ftpc.ini内容如下
[common]
server_addr = 39.105.97.50
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6008
[web01]
type = http
local_port = 8080
custom_domains = www.chendahai
[web02]
type = http
local_port = 80
custom_domains = cd.chendahai # 使⽤⼆级域名进⾏配置
之后访问内⽹的80端⼝web服务可以通过cd.chendahai:6001就可以访问了,⼆级域名是需要配置域名解析的。 如下是配置了2个ssh和3个web服务,服务端⽇志如下
结束
OK,内⽹穿透基本配置完毕
frp的使⽤和配置相当简单,如有疑问或者想了解关于frp的其它功能可以查看
补充
倘若想配置连接数据库mysql
可以这么操作,修改frpc.ini,添加如下配置
[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3366
重启,连接即可
切记,如果需要,记得添加安全组规则
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论