配置frp端口映射
在学习工作中,我们通常需要接入内网查找资料使用内网资源,但是又不想始终保持内网连接(存在内网网速,vpn代理等限制)。又或者我们没办法接入内网,那么这时候我们如何通过外网访问内网资源呢?内网穿透也就是端口映射解决了 这个问题,目前有许多工具可供使用,这里我们选择了github上一个开源的项目frp,有内网vpn的话可以不用往下看了。
frp是一种快速反向代理,可帮助您将NAT或防火墙后面的本地服务器公开到Internet。到目前为止,它支持TCP和UDP以及HTTP和HTTPS协议,在这些协议中,请求可以通过域名转发到内部服务。
从上面来看,frp可以转发请求!这正是我们需要的,请求通过frp转发给内网的服务器进行内网访问。
准备:一台公网云服务器(阿里云或者腾讯云都可)、树莓派、笔记本。
1、服务器端
下载frp压缩包并且解压:
wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd64.tar.gz
tar -zxvf frp_0.29.1_linux_amd64.tar.gz
进入解压缩文件夹,这里有4个主要的文件frpc、frpc.ini、frps、frps.ini。而frps_full.ini和frpc_full.ini为配置文件的完整版,我们只需要配置frpc.ini和frps.ini文件即可。服务端配置frps.ini文件:
frps.ini
[common]
bind_port = 9583//frp服务连接端口,需与frpc的服务端口对应
vhost_http_port = 8080
开启frp服务:
./frps -c ./frps.ini
2、树莓派端
下载下载frp压缩包并且解压:
wget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_amd.tar.gz//这里注意版本同上面一致都为v0.29.1,由于树莓派内核等原因选择frp_0.29.1_linux_amd版本
tar -zxvf frp_0.29.1_linux_amd64.tar.gz
同理解压缩之后会有frpc.ini文件,frpc.ini文件配置为:
[common]
server_addr = ip//云服务器外网ip
server_port = 9583//frp服务连接端口,需与frps的服务端口对应
[ssh]//配置ssh连接
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000//服务器远程端口
[web]
type = http
local_port = 80
custom_domains = www.example.com
[test_static_file]//文件服务器配置信息
type = tcp
remote_port = 9259//远程端口
plugin = static_file
plugin_local_path = /tmp/files//文件系统本地路径
plugin_strip_prefix = static
plugin_http_user = username//进入文件系统的用户名
plugin_http_passwd = userpassword//进入文件系统密码
开启frp服务:
./frpc -c ./frpc.ini
3、云服务器开放端口
本人使用的是阿里云轻量应用服务器,端口开放步骤:
1.游览器输入网址:
https://www.aliyun.com/
登陆阿里云账号。
2.控制台->已开通的云产品->轻量应用服务器->服务器列表->选择自己的服务器->安全->防火墙->添加规则,这里给出端口配置规则。
3.开放所需的端口,本人是开放了9583、6000。
自此树莓派和云服务器连接成功,图示:
4、远程连接内网服务器
现在我们服务器端frps.ini文件、树莓派端frpc.ini都已经配置好并且服务都开启了,服务器端口也已经开放。接下来使用xshell连接树莓派:
输入服务器ip和frpc.ini配置的远程ssh连接端口,用户名和密码。
连接成功!
另:我是在frpc.ini中配置了文件服务器,在服务器开放相应端口之后输入:
http://ip:port/static/
即可访问树莓派/tmp/files下的文件,注意:files文件夹是要自己创建,文件路径和port在前面配置树莓派端的[test_static_file]下配置过的,其中网址中ip即为云服务器外网ip。
效果:
可能遇到的问题
1、连接超时:检查frpc.ini和frps.ini配置文件端口是否对应,服务器端口是否开放。
2、本地127.0.0.1:22连接连接被拒绝:检查ssh服务是否开启。
注意:认真确认自己字符符号是否打错!
这里给出一位大哥问题总结博客:
https://www.jianshu.com/p/7d0404fd1e01
也可关注公众号:"faify with you"一起讨论交流。
祝大家生活愉快!