依照目前针对内网穿透的三种方案:
其中第一种方案因为ipv4地址紧张,ipv6还未普及等原因,很难获取到自家的公网IP,且IP固定因为不便于更换服务器位置。
第二种方案和第三种方案其实本质差不多,都是需要一个有外网地址的服务器做中转,把对于网站的访问再通过服务器到客户端的形式转移给你的内网服务器来处理。鉴于使用体验和数据安全等原因还是自己搭建外网服务器中转比较好,故采用frp来进行内网穿透。
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
更多的使用方法!
2.1 frp分为服务端和客户端,在https://github.com/fatedier/frp/releases下载对应版本的frp压缩包,内含服务端文件和客户端文件。
下载命令:sudo wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz
2.2 新建文件夹frp在/usr/local/下,下载frp压缩包到frp文件夹里。然后解压frp压缩包并进入其文件夹:
sudo tar -zxvf frp_0.35.1_linux_amd64.tar.gz
2.3 配置服务端(公网的服务器),先删掉frpc和frpc.ini文件,然后vim打开frps.ini文件进行配置。
[common]
bind_port = 7000 # 用于frp客户端和服务端连接的端口,配置客户端时和这个一样
token = 123 # 用于frp客户端和服务端连接的口令,需自行设置并记录,客户端会用到
dashboard_port = 7500 # 服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为公网服务器的公网IP)查看frp服务运行信息。
dashboard_user = xxx # 打开仪表板页面登录的用户名和密码,需自行设置
dashboard_pwd = xxxxx
vhost_http_port = 6081 # 访问客户端web的http服务自定义的端口号
vhost_https_port = 10443
保存后启动:
./frps -c ./frps.ini
2.4 配置客户端(内网服务器),先删掉frps和frps.ini文件,然后vim打开frpc.ini文件进行配置。
[common]
server_addr = x.x.x.x # 公网服务器的IP
server_port = 7000 # 与服务器的bind_port相同
token = 123 # 与服务器的token相同
# 公网通过ssh访问内部服务器
[ssh]
type = tcp # 连接协议
local_ip = 192.168.1.101 # 内网服务器的IP,使用127.0.0.1也可以
local_port = 22 # ssh终端默认端口号
remote_port = 6000 # 自定义访问内部ssh的端口号,当进行外网访问内部服务器时用的端口
#公网访问内部web服务器以http方式
[web]
type = http # 访问协议
local_port = 80 # 内网web服务的端口
custom_domains = xxxxxx.com # 所绑定的公网服务器域名,一级、二级域名都可以,必须要有
保存后启动:
./frpc -c ./frpc.ini
4.1 在 /lib/systemd/system/ 路径下创建 frpc.service 文件,其完整路径为:/lib/systemd/system/frpc.service
4.2 编辑frpc.service文件,添加如下代码:
#frpc.service
[Unit]
Description=frpc Service
After=network.target syslog.target
Wants=network.target
[Service]
User=pi
Type=simple
ExecStart=/填写frpc的绝对路径/frpc -c /填写frpc的绝对路径/frpc.ini
[Install]
WantedBy=multi-user.target
4.3 重载并设置开机启动
sudo systemctl daemon-reload
sudo systemctl enable frpc
4.4 以上操作完成以后重启树莓派看看是不是已经成功启动了frpc,可以在命令行执行下面指令的最后一个查看frpc的状态。
//启动命令
sudo systemctl start frpc
//停止命令
sudo systemctl stop frpc
//重启命令
sudo systemctl restart frpc
//查看状态
sudo systemctl status frpc
使用frp进行内网穿透
十分钟教你配置frp实现内网穿透
frp在树莓派上的开机启动设置
我会将我的网站开放到服务器过期为止,到2021-2-18,晚上关闭,欢迎大家尝试使用!网站代码还有很多不完善的地方,敬请谅解!(目前暂停访问了!)