
本文共 3386 字,大约阅读时间需要 11 分钟。
本期将介绍从互联网访问树莓派的第二期——frp内网穿透。实现内网穿透的软件有很多,有商业的,也有开源免费的,比如花生壳、nps、ngrok、frp。我也均有尝试体验,综合比较下来,frp的配置是相对简单的,而且方便扩展使用,本期主要介绍frp实现内网穿透远程访问树莓派。当然了,了解了如何实现内网穿透之后,你还可以通过frp实现其他方面的内网穿透访问。但请时刻谨记,不要随便穿透商业企业内网,除非你了解其中的安全风险或者设置好相应的安全措施。
1. frp内网穿透概述
frp是一个免费开源的用于内网穿透的反向代理应用,可以称为新一代高性能内网穿透工具,它支持TCP、UDP协议,也为http和https协议提供了额外的支持。当然要实现对内网的访问,你还是需要一台能够在公网访问的服务器来布置frp服务端,作为你的中转站,帮你实现公网←→frp服务器(中转站)←→内网的连接,让内网里的设备也可以被公网访问到。
frp本身是一个开源项目,作者是个中国人,在github上开源( ),也有很详细的中文文档介绍。
2. 服务端配置
服务端配置以腾讯云轻量服务器(lighthouse)为例,系统为Ubuntu 18.04 LTS。
首先,到github选择适合服务端的版本,选择frp_0.36.2_linux_amd64.tar.gz
。然后登录到云服务器进行设置。
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gztar -xzvf frp_0.36.2_linux_amd64.tar.gz
然后可以看到相关文件目录。
frp_0.36.2_linux_amd64/frp_0.36.2_linux_amd64/frps_full.inifrp_0.36.2_linux_amd64/frps.inifrp_0.36.2_linux_amd64/frpcfrp_0.36.2_linux_amd64/frpc_full.inifrp_0.36.2_linux_amd64/frpsfrp_0.36.2_linux_amd64/LICENSEfrp_0.36.2_linux_amd64/frpc.inifrp_0.36.2_linux_amd64/systemd/frp_0.36.2_linux_amd64/systemd/frpc@.servicefrp_0.36.2_linux_amd64/systemd/frpc.servicefrp_0.36.2_linux_amd64/systemd/frps.servicefrp_0.36.2_linux_amd64/systemd/frps@.service
其中,frpc
为客户端程序,frps
为服务端程序,*.ini
是配置文件,*.service
是systemd服务配置文件。
先看一下systemd服务配置文件,frps.service
内容如下:
[Unit]Description=Frp Server ServiceAfter=network.target[Service]Type=simpleUser=nobodyRestart=on-failureRestartSec=5sExecStart=/usr/bin/frps -c /etc/frp/frps.ini[Install]WantedBy=multi-user.target
frps_full.ini
配置文件内容很长,有兴趣大家可以自行查看学习,本处只是介绍ssh远程访问树莓派的相关配置,具体如下:
//frps.ini[common]bind_port = 7000
端口可以自行填写,但要注意打开云服务相关安全策略,将相应端口打开。
接下来,根据服务配置文件,将服务端程序frps
放到/usr/bin/
目录下,将frps.ini
放到/etc/frp/
目录下,将frps.service
放到/etc/systemd/system/
目录下。具体的程序位置你也可以选择自己设置的目录,但要注意修改服务文件中相应的目录地址。
//相应命令均以root权限运行mv frps /usr/bin/mkdir /etc/frpmv frps.ini /etc/frp/mv frps.service /etc/systemd/system/systemctl daemon-reload //更新服务systemctl enable frps.service //开启服务
这样就通过systemd服务实现了服务端frps程序开机自动启动。服务端至此已经配置完成。对于ssh远程访问,我们在服务端也只是配置了frp的远程访问端口就够了。
3.客户端配置
客户端上我们以树莓派设置为例,首先选择客户端版本frp_0.36.2_linux_arm.tar.gz
。然后登陆树莓派进行配置。
由于基本配置与服务端基本一致,可参照下方命令进行配置。
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_arm.tar.gz #下载程序版本 tar -xzvf frp_0.36.2_linux_arm.tar.gz #解压
客户端frpc.service
内容如下:
[Unit]Description=Frp Client ServiceAfter=network.target[Service]Type=simpleUser=nobodyRestart=on-failureRestartSec=5sExecStart=/usr/bin/frpc -c /etc/frp/frpc.iniExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini[Install]WantedBy=multi-user.target
修改并设置frpc.ini
内容如下:
[common]server_addr = x.x.x.x #服务器ip地址server_port = 7000 #服务器端口[ssh_pi] #服务设置名称,中括号内可自行命名type = tcp #服务类型local_ip = 127.0.0.1 #本地ip地址local_port = 22 #本地端口,ssh本地端口号remote_port = 9999 #内网穿透外网访问端口,可自行设置,但需将服务器端相应端口打开
接下来,按照如下命令完成配置。
//相应命令均以root权限运行mv frpc /usr/bin/mkdir /etc/frpmv frpc.ini /etc/frp/mv frpc.service /etc/systemd/system/systemctl daemon-reload //更新服务systemctl enable frpc.service //开启服务
这样就通过systemd服务实现了服务端frpc程序开机自动启动。树莓派客户端至此已经配置完成。
对于树莓派ssh远程访问,可以通过ssh -p 9999 pi@x.x.x.x
即可实现通过互联网的远程访问。
同样的,对于其他类型的服务只需相应修改客户端或服务端配置即可。
#frpc.ini[vnc_pi] #远程vnc服务type = tcplocal_ip = 127.0.0.1local_port = 5900remote_port = 1111[pi4_smb] #远程smb服务type = tcplocal_ip = 127.0.0.1local_port = 445remote_port = 2222[msdp] #windows远程访问type = tcplocal_ip = 127.0.0.1local_port = 3389remote_port = 3333
以上这些只需修改客户端即可。
本期内容就到这里,Enjoy!
欢迎关注我的公众号,持续更新中~~~
发表评论
最新留言
关于作者
