Raspberry远程控制 —— 私网地址NAT到公网

标签: raspberry 远程控制 地址 | 发表时间:2020-04-04 15:38 | 作者:0x7e2
出处:https://juejin.im/welcome/backend

实验环境

  • 树莓派 3B(包含一个8GB内存卡,越大越好)
  • MacOS 10.15.4(Windows 也可,别是树莓派就行)

目标

  • 树莓派开机自动连接服务器
  • 远程 ssh 连接树莓派

为树莓派安装系统

推荐下载官方提供的 raspbain 系统,后期可以通过修改 SD 卡中的配置文件,连接上 WIFI 网络。下载其他镜像可能做不到这一点。

如果手头的开发机系统是 *inux ,可以使用dd命令来将镜像烧写到 SD 卡。如果是 Windows 系统的话,可以考虑使用一些其他的软件去烧写。

MacOS 下, dd烧写镜像到SD卡的参考命令如下:

  # 假设SD卡在系统的设备文件是 /dev/disk2s1
diskutil unmount /dev/disk2s1
复制代码

写镜像(一定小心)

  sudo dd bs=4m if=/path_to/your_operator_system.img of=/dev/disk2
复制代码

写镜像过程中不会有进度提示,耐心等待即可。

完事儿之后,将 SD 卡插进树莓派,上电。

显示器、鼠标、键盘、网线啥啥的往上插就行了。如果没有显示器和鼠标键盘的话,则可以通过更改 /boot/wpa_supplicant.conf文件,将 WIFI 连接信息配进去,然后再上电即可。

配置文件的参考格式如下:

  country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
 
network={
ssid="WiFi-B"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}
复制代码

经过重重阻挠,假设已经连接到了网络。

从路由器的设备列表中找到树莓派的 IP,假设为 192.168.1.53, 通过以下命令:

  ssh [email protected]
复制代码

即可连接到树莓派,默认密码是 raspberry

随后,更新一下系统依赖即可:

  sudo apt update && sudo apt upgrade
复制代码

NAT

总所周知,IPv4地址是非常稀缺的资源,目前的话,大概在 20 ~ 30 美元一个。为家里的每一个设备都分配一个 IPv4 地址无疑是非常奢侈的一个事情。IPv6 虽说地址足够多,且现在的支持性虽然好了很多,但是链路还是不通畅,还需要时间去成熟。

NAT 全称是 Network Address Translation,网络地址转换。通过一定的手段,可以将私网网段的 IP 地址转换到公网上。当然这里的前提是我们需要有一个公网 IP 地址。这里不要买,租就好了。

比较合适的办法是在云服务器厂商打折的时候,买一台小的 VPS,一般一年也就不到 100 元。

FRP

将私网IP NAT 到公网的方法有很多,比如有ngrok、natapp等等,上述方法都是基于公网环境,条件较差,速度也不是特别理想ngrok私网部署是收费的,且易用性、功能有限。

比较推荐的解决方案是 FRP。开源,支持自己部署到 VPS 上。

FRP 分为两部分,frps和frpc。分别是 server 端和 client 端。绑定了公网IP地址的 VPS 运行 server端,需要远程控制的树莓派需要运行 client 端。

FRPC 配置参考

完整的配置文件参考项目中的 frpc_full.ini

其中, server* 要和 frps 中的配置对的上,分别是frps 运行机器所在的公网 IP 地址和运行绑定的 Port。login_fail_exit为 false 的时候,会在断网时候重试,直到连接成功。

admin_* 部分配置后,即可在本地访问 http://192.168.1.53:7400,完成对 client 配置的更改和reload

ssh 部分的 remote_port 字段,值推荐大于 1024,之后可以通过 ssh -oPort=[port] [email protected] 通过公网远程控制树莓派(自行替换命令中的 IP 和 Port)。

  [common]
user = "your_name"
server_addr = x.x.x.x
server_port = 7000
log_file = /var/log/frp/frpc.log
log_level = info
log_max_days = 7
privilege_token = [token]
login_fail_exit = false

admin_addr = 0.0.0.0
admin_port = 7400
admin_user = admin
admin_pwd = admin

[ssh]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = [port]
use_gzip = true
use_encryption = true
pool_count = 2

[range:VNC]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port=5901-5903
remote_port= 55901-55903
FRPS 配置参考
[common]
bind_port = 7000
vhost_http_port = [vhost_port]
subdomain_host = [domain]
dashboard_port = 7500
dashboard_user = [username]
dashboard_pwd = [password]
log_file = ./frps.log
log_level = info
log_max_days = 3
privilege_mode = true
privilege_token = [token]
max_pool_count = 50
复制代码

下面会以 frpc 为例,说明创建自启服务的操作姿势

自启服务

对于树莓派,我们希望每次系统启动的时候,自动运行 frpc,连接到配置好的服务器上,如果断网之后,还应该能够重试下去,保证我们随时随地 attach 进系统。

对于上述需求,开机自启部分可以配置自启动服务来实现。参考的做法如下:

下载 frp release:

  # 树莓派中运行
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_arm.tar.gz
tar xzf frp_0.21.0_linux_arm.tar.gz
cd frp_0.21.0_linux_arm
复制代码

将 frpc 和其配置文件移动到合适的位置,/etc一般存放配置文件,/usr/local 一般可以放自己安装的系统级软件,/sbin 一般放网络相关。没有固定的要求,记住放置的位置即可

  # 树莓派中运行
sudo mkdir -p /etc/frpc
sudo mkdir -p /var/log/frp
sudo cp frpc /usr/local/sbin
sudo cp frpc.ini /etc/frpc
sudo touch /var/log/frp/frpc.log
复制代码

创建系统服务文件,ExecStart 位置一定得指对

  sudo vim /etc/systemd/system/frpc.service
复制代码

参考格式如下:

  # /etc/systemd/system/frpc.service

Description=frpc daemon
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/sbin/frpc -c /etc/frpc/frpc.ini

[Install]
WantedBy=multi-user.target

复制代码

注册服务自启

  sudo systemctl start frpc
sudo systemctl enable frpc
复制代码

大功告成~,Frps 的配置方式和 Frpc 大同小异,不过需要在 VPS 中操作就好了。

之后在随便任何一台机器上运行

  ssh -oPort=[port] user@public_ip
复制代码

就可以通过ssh连接到到树莓派。还可以通过 ssh 命令的 -i 参数,指定连接用的秘钥,实现免密连接。这部分会在接下来的文章中进行说明。

感谢阅读。

长按两秒识别二维码关注 ▼

相关 [raspberry 远程控制 地址] 推荐:

Raspberry远程控制 —— 私网地址NAT到公网

- - 掘金后端
树莓派 3B(包含一个8GB内存卡,越大越好). MacOS 10.15.4(Windows 也可,别是树莓派就行). 远程 ssh 连接树莓派. 推荐下载官方提供的 raspbain 系统,后期可以通过修改 SD 卡中的配置文件,连接上 WIFI 网络. 如果手头的开发机系统是 *inux ,可以使用dd命令来将镜像烧写到 SD 卡.

RaspBerry Pi连接WiFi

- - 平凡的世界
推荐 EDUP EP-N8508GS无线网卡 树莓派专用,这个直接免驱,省去很多麻烦事.

安装树莓派 Raspberry PI

- - CSDN博客综合推荐文章
树莓派终于到货了,是这个样子的. 上面有一行日期是 Raspberry PI (c) 2011.12. 选择这个镜像: RASPBIAN Debian 2014-01-07. 780M的压缩包,很大的样子. 似乎还有个NOOBS的安装方式,完全无感. 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G Class10 TS64GSDXC10.

Raspberry Pi 4 開賣,USD$35

- - Gea-Suan Lin's BLOG
Raspberry Pi 4 開賣,目前推出的是 Model B,最低規格的 1GB RAM 版本與之前 RPi 3 相同都是 USD$35,另外這次提供了以前沒有的 2GB 與 4GB 版本,分別是 USD$45 與 USD$55:「 Raspberry Pi 4 on sale now from $35」.

远程控制软件列表

- 董玉伟 - 素包子
想收集一个远程控制软件的列表,会在软件安装卸载列表出现的,特别是能穿透nat回连到外网的,欢迎大家补全,特别是国产的. 回头要把他们回连的站点也拎出来. 向日葵 logmein (竟然是上市公司) TeamViewer 各种VNC gotoassist live mesh softether 反向的VPN logmein旗下的hamachi 反向VPN crossloop http://www.crossloop.com/howto/access_codes?src=hp 这里有几十个老外的远程控制软件列表.

Android手机远程控制电脑

- - Wing的风言风语
人类总是有一股很强的控制欲,就像三体里面很多人抢着当执剑人一样,尽管执剑人的生活估计在地狱都很难找到. 用电脑控制另一台电脑显然已经不能满足我们了,于是就想到了用手机远程控制电脑,这里介绍两款免费的Android手机的软件. 官方网址: http://www.teamviewer.com/zhCN/index.aspx.

Java局域网远程控制

- - ITeye博客
JOptionPane.showMessageDialog(null, "被控制端已断开连接,或网络异常!");. JFrame frame = new JFrame("远程控制");. String ip = JOptionPane.showInputDialog("请输入远程连接IP");. ip = JOptionPane.showInputDialog("请输入远程连接IP");.

34 个使用 Raspberry Pi 的酷创意

- - LinuxTOY
如果你手头有一个 Raspberry Pi(树莓派),你会拿它来做什么. 或许以下 34 个如何使用 Raspberry Pi 的创意能够给你带来一些启发. BitTorrent 服务器. Apple Time Machine 支持. GPS 跟踪器(带 3G 支持). Advice Machine(无用但很酷).

西门子推出 iPad 家电远程控制系统 homeConnect

- HUan - Engadget 中国版
如今移动平板设备已经深入生活,那么如何让它和我们的家用电器进行沟通呢. Siemens 西门子在 IFA 上给了我们答案,他们发布了 homeConnect ,又名「远程厨房」. 也就是说你可以远程操控你家厨房的洗碗机和烹饪,当然,是通过 iPad 来完成. 应用系统可以接管你家的厨房电器,可以查看电量使用情况,远程关闭电源,如果碗洗好了你会得到通知.

向日葵手机远程控制Android版

- nikelius - cnBeta全文版
给大家隆重介绍下向日葵的手机版,这是通过某支付公司组织的开发者沙龙上找向日葵的产品经理拿到的向日葵Andriod手机内部版,用了一下很易上手,而且跟现在流行的多点触摸屏做到了流畅的融合. 下载地址: http://u.115.com/file/aqzs2jq8. 要控制远程主机只装这个东东可不行,先到向日葵官网上下载向日葵被控端程序,安装到要控制的主机上.