Raspberry Pi Zero 单板配置手记(二)登录到树莓派并共享网络

编程知识 更新时间:2023-04-28 12:46:50

RPi Zero 登录到树莓派并共享网络

  • 一、准备工作
    • 1. 工具/材料
    • 2. 安装必备工具
  • 二、搭建网络环境
    • 1. 配置 WiFi 网络
    • 2. 配置本地 DHCP 服务
  • 三、启动并登录到树莓派
    • 启动树莓派,获取 IP
    • SSH 远程登录
    • 重设密码
  • 四、共享主机网络
  • 收尾

本文章为系列文章《Raspberry Pi Zero 单板配置手记》的第二篇,上一篇为《Raspberry Pi Zero 单板配置手记(一)系统镜像的准备》。
因个人需求,只对单板的树莓派 (不含显示器、摄像头等外设,此 Zero 版本也不含无线模块) 及各种基本系统配置进行叙述。


一、准备工作

1. 工具/材料

  • 树莓派 Zero(单板,不带无线模块)
  • 先前已配置好的 TF 卡(请参考上一篇文章)
  • USB-microUSB 数据线(供电/连接电脑用,至少能承载 1A 电流)
  • 能联网的电脑,Linux 系统
  • 利用 WiFi 网络连接树莓派
    • 树莓派所用的无线网卡(接树莓派上,若树莓派具有无线模块,则无需额外准备)
    • 电脑所用的支持 AP 模式的无线网卡(接电脑上,若所在区域有 WiFi 则无需准备)
  • 利用 USB 数据线连接树莓派
    • 额外的 USB-microUSB 数据线(非必需)

2. 安装必备工具

  • hostapd 用于建立 WiFi 网络
  • isc-dhcp-server 用于搭建本地 DHCP 服务
$ sudo apt install --no-install-recommends -y \
  hostapd isc-dhcp-server

二、搭建网络环境

无论是利用 WiFi 网络还是 USB 连接树莓派,均需一番配置过程。

1. 配置 WiFi 网络

如果区域内有现有的 WiFi 网络,则可跳过此小节,但提前应在 TF 卡中 wpa_supplicant.conf 文件配置好所连的 WiFi 网络。
要想利用无线网络连接,我们先要建立一个 WiFi。我们将利用 hostapd 来进行有关操作。

找到并设置网卡
先不连接无线网卡,在电脑上打开终端,输入命令

$ ifconfig -a | egrep '^[^ ]*:'
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

在命令的输出内容,可以看到当前已连接的网络接口,此时再插入支持 AP 模式的无线网卡,再次执行相同命令

$ ifconfig -a | egrep '^[^ ]*:'
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

相比上一次输出,新增的网络接口,即为此设备接口,在本例中,为 wlan1,部分系统中显示可能为 wlx????????????,问号部分为网卡的 MAC 地址。

若系统中使用 NetworkManager,为了避免其在之后的过程中造成影响,我们先取消该设备的自动管理,其中 wlan1 替换成自己的设备接口名称

$ sudo nmcli d se wlan1 managed no  # 让 NetworkManager 不再自动管理 wlan1

配置 hostapd
新安装的 hostapd 需要进行两样配置,一个是默认的配置文件路径,一个是 WiFi 网络的配置。

使用文本编辑器编辑 /etc/default/hostapd 文件

# 找到 DAEMON_CONF 该行,取消注释并按此修改,或者新起一行,键入如下内容
DAEMON_CONF="/etc/hostapd/hostapd.conf"

然后切换到 /etc/hostapd/ 目录,编辑其下的 hostapd.conf 文件。若此文件不存在,则运行以下命令

$ gunzip -cdk /usr/share/doc/hostapd/examples/hostapd.conf.gz | sudo tee /etc/hostapd/hostapd.conf

此文件为示例文件,默认包含大量的注释内容,可用如下命令剥离所有注释。

egrep -v '^#|^$' /etc/hostapd/hostapd.conf | sudo tee /etc/hostapd/hostapd.conf

逐一编辑如下内容,找到对应的行,若无,则手动新起对应的行

# 设置网络接口,wlan1 改成自己的网卡接口名称
interface=wlan1
# 设置 SSID(WiFi 名称)
ssid=Test_Wifi
# 设置所在国家
country_code=CN
# 设置工作信道(按照网络环境自行选取,若不清楚可保持原样)
channel=1
# 设置 WiFi 加密方式 WPA2
wpa=2
# 设置 WiFi 密码(强度一定要足够)
wpa_passphrase=Test_Password
# 设置密钥管理方案及认证方案
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
# 禁用 WPS 以避免攻击
wps_state=0

文件中,ssidwpa_pairwise 两项设置必须和之前在树莓派中设置的无线网络名称、密码一致,若不一致,请修改名称和密码一致,或参考篇一对应部分,重新修改 wpa_supplicant.conf 文件。

保存文件,启动 hostapd 服务

$ sudo systemctl unmask hostapd   # 作者电脑上 hostapd 服务被 masked 掉了
$ sudo systemctl restart hostapd  # 启动/重启 hostapd 服务

若没有错误提示,则服务应当启动成功,可用手机或其他设备搜索下 WiFi 网络,在本例中,我可以找到一个名为 Test_Wifi 的无线网,则无线网络配置成功。

2. 配置本地 DHCP 服务

无论是自行搭建的 WiFi 网络,还是打算利用 USB 与树莓派通讯,均需要搭建 DHCP 服务,才能正常连接。
若使用现有网络,则无需配置本地 DHCP 服务,可跳过此小节。

本例中,我们使用 isc-dhcp-server 来搭建 DHCP。

首先编辑文件 /etc/dhcp/dhcpd.conf,若此文件不存在,则新建。按照如下内容进行配置

# 设置地址租期
default-lease-time 600;
max-lease-time 7200;
# 关闭 DDNS 更新
ddns-update-style none;
# 唯一 DHCP 服务器,设置以忽略局域网中可能存在的其他 DHCP 服务器
authoritative;
# 在文件末尾声明新的子网
# 本例中使用主机 IP 为 10.0.1.1,子网掩码 255.255.255.0,范围 10.0.1.100 ~ 10.0.1.200
# 本例中,主机所连网络网关地址为 10.2.2.1,DNS 服务器地址为 10.2.2.1
subnet 10.0.1.0 netmask 255.255.255.0 {
	# 设置子网范围
	range 10.0.1.100 10.0.1.200;
	# 设置本地网关和路由主机为本机
	option routers 10.0.1.1;
	# 设置局域网的 DNS 服务器
	# 可用 nmcli 命令查看系统所用的 DNS 服务器设置
	# 若不清楚,可填 114.114.114.114 或 8.8.8.8
	option domain-name-servers 10.2.2.1;
	# 设置广播地址
	option broadcast-address 10.0.1.255;
}

要想完全配置 DHCP 服务器,还需要修改默认配置文件中的接口名称,若使用 USB 进行连接,则此接口名称暂时未知。故我们将其放到最后。

接下来编写一个启动 DHCP 服务的 bash 脚本。将其保存为 start_dhcp

$ cat << EOF > start_dhcp
#!/bin/bash
if [ "x\$1" == "x" ]; then
	echo "Usage: [sudo] \$0 <interface_name>"
	exit 1;
fi
type nmcli && nmcli d se \$1 managed no
ifconfig \$1 10.0.1.1 netmask 255.255.255.0 up -dynamic
sleep 1
systemctl restart isc-dhcp-server
EOF
$ chmod a+x start_dhcp  # 为脚本添加可执行权限

若使用 USB 连接,则跳过剩下的部分,直接参考“三、启动并登录到树莓派”,启动 DHCP 的过程将放到启动树莓派之后。

若使用 WiFi 连接,则接口名称同之前用来建立 WiFi 的网络接口,本例中是 wlan1,编辑文件 /etc/default/isc-dhcp-server

# 设置 DHCP 服务所用的接口名称
INTERFACESv4="wlan1"

然后启动 DHCP 服务

$ sudo ./start_dhcp wlan1

三、启动并登录到树莓派

启动树莓派,获取 IP

  1. 使用 WiFi 网络连接
    若使用的是现有的 WiFi 网络,则电脑应提前登录到对应网络中。
    连接好线路并插入 TF 卡,如图所示

    作者使用的 Zero 不带无线模块,因此需要单接一个无线网卡,如图使用 OTG 接口连接了一个 USB 无线网卡。

    注意电路板上两个 micro USB 端口有所不同,一个有 USB 标识,是数据接口,可连接 USB 设备;另一个有 PWR IN 标识,仅能供电而无法传输数据。USB 设备一定要接到标有 USB 的端口上面。

    确定接好后,将供电线插入手机充电器然后接电,或插入到电脑的 USB 接口,树莓派 Zero 所需电流较小,仅凭电脑即可满足供电需求。

    若使用现有网络,则电脑端应访问 WiFi 路由器的管理页面,等待新设备的接入,得到设备 IP 地址。

    若使用的是自建的网络,则电脑端输入

    $ watch 'arp -n | grep -v incomplete'
    

    然后等待出现一个新的 IP 地址,对应的 MAC 地址应该与树莓派所使用的网卡,或其板载的无线模块 MAC 地址相符。

    在本例中,假设最终得到的 IP 地址为 10.0.1.100

  2. 使用 USB 连接
    连接好线路并插入 TF 卡,如图所示

    仅需要一根 USB-microUSB 数据线,插入到传输数据的 micro USB 口即可。
    当然供电口也可以接额外的供电线,这样与电脑的连接可随时断开,而不影响树莓派的正常运行。

    先不与电脑连接,在终端中输入

    $ watch "ifconfig -a | egrep '^[^ ]*:'"
    

    然后将数据口处的数据线另一端插入电脑 USB 接口中。若接了额外的供电线,则另一根线可连接充电器,也可以接入到电脑中。

    此过程中,注意电脑的终端中显示内容更新。当出现新的网络接口时,记住该名称,按 Ctrl+C 终止 watch 命令。

    在本例中,作者得到的最新输出是

    eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    eth1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    

    其中 eth1 为新增的网络接口名称,则快速编辑文件 /etc/default/isc-dhcp-server,设置其 INTERFACESv4= 的值为 eth1,即 INTERFACESv4="eth1"。保存后运行命令

    $ sudo ./start_dhcp eth1  # 在 eth1 上启动 DHCP 服务器
    

    紧接着,部分系统上可能看到网络提示,正在连接,或已建立有线连接。
    同样,监视 arp 命令,等待树莓派分配得到一个 IP 地址

    $ watch 'arp -n | grep -v incomplete'
    

    在本例中,假定最终得到的 IP 地址为 10.0.1.100

SSH 远程登录

无论是基于何种方式,我们目前已经获取到了树莓派的 IP 地址,本例中为 10.0.1.100
在终端中输入

$ ssh pi@10.0.1.100  # 以用户 pi 登录到树莓派

若是第一次登录,会提示

The authenticity of host '10.0.1.100 (10.0.1.100)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)? 

此时输入 yes 并回车即可。

Raspberry Pi OS 的默认密码为 raspberry,输入密码后回车。若看到如下的提示符,我们便已成功登录至树莓派

pi@raspberrypi:~ $

重设密码

在开启 ssh 服务的同时,若仍使用默认密码,会有安全隐患。
接下来,我们为树莓派重新设置用户密码和 root 用户的密码。

pi@raspberrypi:~ $ passwd  # 为当前用户 pi 重新设置密码
Changing password for pi.
Current password:  # 此时输入原密码 raspberry 即可,不会显示,需要终止时可按 Ctrl+C
New password:      # 输入新密码,不会显示
Retype new password:  # 再次输入同样的新密码
passwd: password updated successfully

pi@raspberrypi:~ $ sudo passwd  # 为 root 用户重新设置密码
New password:         # 此时不需要验证密码,直接输入新密码即可
Retype new password:  # 重复新密码
passwd: password updated successfully

至此,我们已成功登录到树莓派,并成功设置用户密码。


四、共享主机网络

当我们通过自建的 WiFi 或者 USB 数据线连接到树莓派时,此时树莓派仅和主机进行连接通讯,还无法访问到外界网络。
若使用现有的 WiFi 网络连接,则可忽略此部分。

我们在之前的配置中,已顺便为树莓派设置好了 DNS 解析和局域网网关。现在仅需要开启主机 Linux 系统上的流量转发即可。

基于 Debian 的 Linux 系统中,开启流量转发的方式是写 /proc/sys/net/ipv4/ip_forward 文件,同时开启防火墙的 nat 转发。
在主机的终端中输入

$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -I POSTROUTING -s 10.0.1.0/24 -j MASQUERADE

此时树莓派已可以通过主机共享网络连接,ssh 终端中可输入命令以验证连接可用性

pi@raspberrypi:~ $ ping blog.csdn -c 1 >/dev/null && echo Network OK.

接下来,你可以在 ssh 中对树莓派进行一系列的操作,包括更新软件包,安装其他工具等,这些问题在本文中不再赘述。


收尾

继昨天花长时间配置完树莓派的系统映像后,今天我们成功实现远程登录树莓派并共享主机网络。实际服务配置中,可能会出现不好解决的问题,可以在下方评论区评论,或者邮箱联系作者。

虽目前基本配置成功,但树莓派的无线网络连接还是不方便,我们使用 wpa_supplicant 只是配置了固定的网络,不够灵活,在下一篇文章中,我们会使用 NetworkManager 管理网络连接。

接下来是本系列文章的第三篇《Raspberry Pi Zero 单板配置手记(三)使用 NetworkManager 管理网络连接》。

更多推荐

Raspberry Pi Zero 单板配置手记(二)登录到树莓派并共享网络

本文发布于:2023-04-21 07:51:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/4cd7f55b2c455746a046c27571bd85a2.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单板   手记   网络   Raspberry   Pi

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 92748文章数
  • 23606阅读数
  • 0评论数