frp穿透内网访问树莓派上的web站点

这篇文章主要介绍如何通过frp穿透内网,访问树莓派上的web站点,主要记录关键的操作步骤和容易出错的地方,以便大家参考。

前言

都需要用哪些工具呢?

  • 一个公网IP
  • frp
  • 树莓派
  • 域名(可有可无)

公网IP可以用类似花生壳这样的工具代替,但是如果有自己的服务器最好,就不用再买其它套餐了,而且速度还快!

域名也可以申请免费的域名,在这个网站freenom.com申请


关于域名的申请及解析、服务器的购买等本文将不再赘述,网上的参考资料很多。

本地站点配置

这里我使用的是用hexo生成静态博客的方式,本博客也是基于此。具体的生成方法可以参考一下两篇文章。

这两篇文章详细的记录的生成的每一个步骤,大家可以作为参考。

frp的使用

首先推荐大家去看frp的官网文档,因为frp仍然处于开发阶段,我并不能保证本教程一致适用,但是大家遇到问题可以留言。

安装frp

在树莓派上:

1
wget https://github.com/fatedier/frp/releases/download/v0.24.0/frp_0.24.0_linux_arm.tar.gz

在服务器上:

1
wget https://github.com/fatedier/frp/releases/download/v0.24.0/frp_0.24.0_linux_amd64.tar.gz

一定要根据自己服务器和树莓派的系统选择合适的版本,并且服务器端和客户端的版本号必须一致,比如像上面这样,两端都必须使用V0.24.0!!!

配置frp

  1. 修改frps.ini文件,设置http访问端口为8080:
1
2
3
4
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8888
  1. 启动frps:
1
./frps -c ./frps.ini
  1. 修改frpc.ini文件,假设frps所在的服务器的IP为x.x.x.x,local_port为本地机器上web服务对应的端口,绑定自定义域名www.yourdomain.com:
1
2
3
4
5
6
7
8
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
  1. 启动frpc:
1
./frpc -c ./frpc.ini
  1. www.yourdomain.com的域名A记录解析到IPx.x.x.x,如果服务器已经有对应的域名,也可以将CNAME记录解析到服务器原先的域名。

  2. 通过浏览器访问http://www.yourdomain.com:8888即可访问到处于内网机器上的web服务。

配置自启动

看了很多网上的资料,感觉还是在/etc/profile.d/写一个简单的脚本最为简单。

1
2
3
#!/bin/sh
sudo /usr/local/nginx/sbin/nginx
sudo nohup /home/pi/frp_0.24.0_linux_arm/frpc -c /home/pi/frp_0.24.0_linux_arm/frpc.ini &

Linux系统启动时默认会执行/etc/profile.d/文件夹下的所有文件。

配置失败的原因

  1. 服务器端和树莓派的系统和版本不一致导致。
  2. 防火墙未关闭,可以服务器控制台添加相应的安全组规则。

彩蛋

这是我运行在寝室树莓派上的网站:rpi.lihtao.com🤓



其实它就运行在这样一个锈迹斑斑的Raspberry Pi 3B上🤭🤭🤭

欢迎大家访问!🤗🤗🤗

Donate comment here
-------------本文结束感谢您的阅读-------------
0%