frp是什么?
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。github
由frpc与frps组成,frps是服务端,frpc是客户端。
使用frp我们可以将家中的机器通过阿里云、腾讯云代理出来,从而可以在公网访问服务。
下载frp命令工具
通过dpkg --print-architecture
查看你操作系统的位数。我的是amd64。
如果没有dpkg直接yum install
即可。
github-release
下载对应的frp包。
1 | # 实际上文件是在amazon.s3存储上,可能需要翻墙下载 |
使用Docker来启动frp服务
通过命令启动需要管理好进程,当需要多个转发服务的时候不好管理。也无法得知客户端究竟开放了哪个端口。
通过docker可以很好的管理服务。
centos7安装Docker
获取docker镜像:
1 | # 克隆项目 |
开放ssh服务
配置frps服务端
我是通过docker启动的服务端,主要好管理端口与服务。
通过命令启动frps服务
如果没有docker或者不希望通过docker启动服务端的话,可以使用命令启动。
准备ssh.ini配置文件:
1 | [common] |
启动frps服务:
1 | setsid frps -c ssh.ini |
通过docker-compose启动frps服务
通过docker-compose.yml
配置启动服务:
1 | version: '2' |
通过docker-compose配置文件,可以一目了然启动了哪些frp服务,占用了哪些端口。
这里使用docker默认的frps配置文件,开放7000服务端口。
上面40021是反向代理服务端口,34090则是对外开放服务端口。34090是由frpc客户端配置的端口。
我们的frpc客户端需要连接40021,我们连接ssh服务时通过34090端口。
开放外网端口
通过防火墙开放40021端口和34090端口(centos7使用firewalld服务):
1 | ~ firewall-cmd --zone=public --permanent --add-port=40021/tcp |
如果是阿里云服务,则到管理台配置安全组即可。
配置frpc客户端
通过命令行配置frpc客户端,这里不能使用docker配置。
因为docker内配置frpc只能转发docker环境内的服务。ssh是宿主机上的服务。
准备ssh.ini配置文件:
1 | [common] |
运行frpc服务:
1 | setsid frpc -c ssh.ini |
连接ssh测试:
1 | ssh -i ../sdk_key/lxz -oPort=34090 xxx@xxx.xxx |
我是配置了秘钥登陆的。所以指定秘钥登陆。
用户配置与ssh秘钥登陆
frp配置web服务转发
这里就只放配置文件了。具体可以参考 github文档
frps配置
1 | [common] |
frpc配置
1 | [common] |
如果没有购置域名,可以通过绑定host的形式访问服务。