-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
所谓“内网穿透”,旨在使我们能够通过公网固定IP端口转发的方式,远程访问内网中的计算机。当前有许多内网穿透的工具,其中以开源的ngrok 和frp最为广泛。
本文以frp为例,借助一个有公网IP的VPS实现远程访问家中树莓派的目的。
| 实验平台 | 操作系统 | 说明 |
|---|---|---|
| 公网主机 | Centos 7 x86_64 GNU/Linux | 可远程操作,有固定的Ipv4地址,以下用百度的主机‘111.13.101.208’ 代指 |
| 树莓派 | Stretch armV7 | 内网路由下IP:192.168.155.4 |
frp 简介
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
安装
根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。
- 将 frps 及 frps.ini 放到具有公网 IP 的机器上。
- 将 frpc 及 frpc.ini 放到处于内网环境的机器上。
更详细的配置方式,参考官方安装文档
1 服务器端
由于本文公网服务器为linux 64 位,因此下载frp_0.16.1_linux_amd64.tar.gz,其余类型同理,输入uname -r可查看服务器架构。
ssh vps
cd /home/pi/iot/frp
wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz
tar xvf frp_0.16.1_linux_amd64.tar.gz
# 可删除客户端程序和配置文件
rm frpc frpc.ini服务器端配置文件示例,出于安全因素设置一个随机字符串作为privilege_token,同时在客户端配置文件中也要加入同样的随机字符串。
[common]
bind_port = 7000
vhost_http_port = 8080
privilege_token = *******
#log_file = /home/pi/iot/frp/frps-debug.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3服务器端启动
$ ./frps -c frps.ini2 树莓派端
由于树莓派为 armV7 架构,因此下载 frp_0.16.1_linux_arm.tar.gz
ssh pi
cd /home/pi/iot
mkdir frp
cd frp
https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_arm.tar.gz
tar xvf frp_0.16.1_linux_arm.tar.gz
# 可删除客户端程序和配置文件
rm frps frps.init配置文件示例
[common]
server_addr = 你的公网主机IP地址
server_port = 7000
privilege_token = *******,同服务端一致即可
#log_file = /home/pi/iot/frp/frpc-debug.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001
[web]
type = http
local_port = 80
custom_domains = yourdomain.com
use_compression = true树莓派端启动
$ ./frpc -c frpc.ini观察日志输出。
正确运行后,分别在服务器端 frps.ini 和 树莓派端frpc.ini 中#log_file 一栏中, 将前面的#去除,以便记录日志情况。
设置开机启动
1 服务器端
在服务器端,向/etc/systemd/system/路径下,新增frps.service文件
$ sudo su
$ cd /etc/systemd/system/
$ nano frps.servicefrps.service 文件如下,注意ExecStart路径与你的保持一致。
[Unit]
Description=frp server daemon ,a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/pi/iot/frp/frps -c /home/pi/iot/frp/frps.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frps
User=pi
Group=pi
[Install]
WantedBy=multi-user.target使能并设置开机启动
$ systemctl daemon-reload
$ systemctl list-unit-files | grep frps
$ systemctl enable frps.service
$ systemctl start frps.service
$ systemctl status frps.service2 树莓派端
同服务器端设置开机启动方式类似,树莓派端新增/etc/systemd/system/frpc.service
[Unit]
Description=frp client daemon ,A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/pi/iot/frp/frpc -c /home/pi/iot/frp/frpc.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frpc
User=pi
Group=pi
[Install]
WantedBy=multi-user.targetenjoy and have fun ~😉
