Browsed by
Tag: pi

树莓派(Raspberry Pi OS)搭建 samba 服务

树莓派(Raspberry Pi OS)搭建 samba 服务

最近重新搭建了一套树莓派的系统(Bullseye,arm64),将老系统的移动硬盘挂载在新系统,然后启用 samba 服务作为一个简易的 NAS 使用 。过程非常简单,不过与以前老系统搭建时有一点差别,简要记录一下以备以后查阅。

Pi 挂载了移动硬盘两个分区:(1)/media/pi/uwork;以及(2)/media/pi/udoc,将分别对应在 samba 中配置的两个访问目录:(1)/raspberrypi/hdd_work,以及(2)/raspberrypi/hdd_docs。

安装 samba

直接 apt 安装即可:

sudo apt install samba

配置

默认用户是 pi,系统虽然已经有这个用户了,但是 samba 中还是需要单独创建一个 pi 用户:

sudo smbpasswd -a pi

建议访问密码设置成和系统登录密码一样即可。然后修改 /etc/samba/smb.conf 文件,增加以下片段:

[hdd_work]
comment = work directory
path = /media/pi/uwork
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
valid users = pi

[hdd_docs]
comment = document directory
path = /media/pi/udoc
browseable = yes
writable = yes
create mask = 0777
direcory mask = 0777
valid users = pi

启动(重启) samba 服务

sudo systemctl restart smbd

查询 samba 的状态:

sudo systemctl status smbd
定时清理释放内存

定时清理释放内存

家里有台 Raspberry Pi3, 日常做点小任务,比如做 samba 服务器当 NAS、做 web 的功能测试、学习点 Linux 知识等,基本都是一些负荷不大的任务。不过由于我是死忠的 GUI 党, 因此总是喜欢进入 Pi 那个巨丑无比的界面里进行操作,这也导致 Pi3 的内存会逐渐显得有些捉襟见肘,时间长了,就不得不使用 swap 。这可能会有损 microSD 卡的寿命,因此希望 Pi 能定时清理、释放内存。

网上搜了搜,也比较简单,而且效果比较明显。简要记录一下:

在 /etc/cron.daily 目录下,创建一个 gilson-clearcache 文件,内容如下:

#!/bin/sh
sync
echo 3 > /proc/sys/vm/drop_caches

将这个文件设置为可执行文件即可:

sudo chmod +x ./gilson-clearcache

设置为可执行文件后,可以手工执行一下,可以看到 “free -m” 显示的结果里,“buff/cache available”等项有明显的改善。

不过考虑到 Pi3 可怜的 1GB 内存,这种内存回收方面的改善,估计不能从根本上解决问题,上 Pi4 (2GB或者4GB)或许更好。后续继续观察一下,如果实在不行,就换 Pi4 或者等 Pi5 吧。

Samba登录密码错误

Samba登录密码错误

在Pi上运行了Samba服务器,并创建了相应的samba用户和密码,但是从windows 7登录该samba服务器时,总是提示“用户名或者密码错误”。

可以肯定的是:用户名和密码都绝对没有错误!毕竟手写以及重新设置了无数遍,完全可以确认。

那问题出在哪里呢? 在网上搜索了一下,发现是windows 7的本地安全管理策略与samba配合有些问题,如下图所示:

修改windows本地安全策略

依次点击:控制面板 – 管理工具 – 本地安全策略 – 本地策略 – 安全选项,然后修改右侧的“网络安全 – LAN 管理器身份验证级别”项。

默认设置是“发送LM和NTLM,如果已协商,则使用NTLMv2会话安全”,需要修改为“仅发送NTLMv2响应,拒绝LM和NTLM”。

Pi3的不足之处

Pi3的不足之处

Pi3延续了Pi系列的特点,短小精干。从目前状况看,稳定性也不错,甚至可以说是一个基本可以商用的小系统了。经过近些年的应用,感觉还是有些不足,比如看看以下数据:

pi@raspberrypi3:~ $ uptime
15:21:51 up 44 days, 21:53, 2 users, load average: 0.81, 1.12, 1.10
pi@raspberrypi3:~ $ free -m
total used free shared buff/cache available
Mem: 927 788 34 9 104 80
Swap: 1123 250 873

连续运行44天,完成各项工作(实际工作负荷并不沉重),内存已经捉襟见肘,swap 使用了 250M 空间,系统明显变慢。当然,这可能是因为这个 Pi3 启动了图形界面,如果只是命令行方式,不会有这么多内存的需求。

考虑到 Pi4 似乎隔了很久还没发布,我倒是希望在 Pi4 中能看到以下改进:

(1)内存加到至少2G,基本能比较完善地支持图形系统了。

(2)支持5G频段的WiFi,希望无线网速越快越好。以太网接口取消算了。

(3)支持SSD。现在SD卡完全就是整个系统的瓶颈,除了体积小之外一无是处。如果能支持M.2 SSD,那就太好了。

网上有些网友也建议增加支持USB3,估计大部分这样的网友是打算用 Pi 组 NAS。我个人觉得意义不是特别大,NAS 更需要存储的完整性、一致性和稳定性,应该直接用专业的 NAS 硬件,Pi 并不适合这种场景。

2019-06-24 更新: Pi4正式发布,非常棒,内存可以选择4G,双频802.11ac!如果稳定性没问题的话,这几乎完美了。

升级树莓派系统至 Stretch 版本

升级树莓派系统至 Stretch 版本

Pi 官方的Raspbian版本已经正式升级到 Stretch,即 Debian 9 系统。目前使用的还是 Jessie 版本, 根据官方的指导文档,进行升级,总体是比较平顺的,当然也有一些需要总结和修订。

在升级之前,首先要把源系统更新(update)、升级(upgrade)。

然后修改软件源文件,将 jessie 修改为 stretch,共有两个文件需要修改:

/etc/apt/sources.list
/etc/apt/sources.list.d/raspi.list

修改完成后,直接更新版本即可:

sudo apt-get update
sudo apt-get -y dist-upgrade

更新过程耗时比较长,耐心等待即可。需要注意的是,Stretch 版本中将 MySQL 替换为 MariaDB 了,因此如果是安装了MySQL, 需要重新安装 MariaDB。 好在替换过程似乎也很顺利,如果是深度使用MySQL,建议仔细检查这个替换。

升级完成后,音频库没有必要,可以删掉;另外有个字体库则需要单独安装以支持中文:

sudo apt-get -y purge "pulseaudio*"
sudo apt-get install fonts-droid-fallback

在体验最新版本的过程中,发现 xrdp 无法使用。需要卸载以前的版本,同时重新安装 VNC 软件。

sudo apt-get remove xrdp vnc4server tightvncserver
sudo apt-get purge tightvncserver xrdp
sudo apt-get install -y xrdp vnc4server tightvncserver

在用 Windows 的远程桌面登录时, 也要明确指示采用 Xvnc 而不是 Xorg 。以前的版本倒是没有这么麻烦,不知道是升级导致的问题,还是新版本就有这个问题。

升级后感觉明显快了很多,这有点意外,毕竟硬件没有改变,基础 Debian 系统在效率方面改变似乎也并不很大。

解决DNS污染

解决DNS污染

DNS污染可能是一个比较普遍的问题,主要表现在:(1)DNS查询返回的IP地址根本是错误的。“错误”意思是IP地址要么根本不存在,要么就是个和域名完全无关系的地址。(2)IP地址虽然可能是对的,但是其他参数被莫名修改,例如TTL参数等。

测试了各类DNS服务器,例如阿里DNS、DNSPod(鹅厂)、Google DNS等。无一例外,最终的结果都或多或少被一些看不见的手给修改、甚至屏蔽了。从技术角度上讲,DNS协议本身非常随意、非常粗糙,是典型的互联网蛮荒时代的产物,比如面向UDP、无加密、无鉴权等,因此网络上任何一只手都有可能修改DNS的查询结果。网络进化到IPv6阶段,当然能解决这个问题,不过既然目前绝大部分设备还只支持IPv4协议栈,因此我们还是不得不修修补补来解决这个污染问题。

最根本的解决方法就是加密DNS查询。目前有些DNS服务商提供了私有的加密DNS方式,不过不太通用,需要私有的客户端程序配合。实际上可以不用搞这么复杂,自己建立加密通道,传递DNS消息即可。例如,参考下图的拓扑逻辑:

实现简单DNS透传的逻辑单元
实现简单DNS透传的逻辑单元

在这个网络中,有两个关键程序:dnsProxy和dnsAgent。

dnsProxy顾名思义就是个Proxy,本身并不负责DNS协议的解析,也不保存DNS的查询结果等信息,只是单纯地将DNS消息传递给真正的DNS服务器,并返回相应的结果即可。dnsProxy另一个功能是对外提供加密的数据连接,例如TLS、SSL加密等,甚至可以只是简单地对数据包进行自定义的异或运算即可。另外就是对外提供非标准连接接口,这点非常重要。DNS采用标准UDP53接口作为DNS服务器接口,网络上那些看不见的手,往往就是扫描并篡改53接口的数据包。这个小程序跑在境外(大家都懂的)的一台VPS设备上,推荐采用DigitalOcean,专业的云计算服务商,采用SSD硬盘,价格公道,我们一直用TA,如果你有兴趣的话,请点击这里自行了解细节。

dnsAgent是另一个小程序,主要负责建立与dnsProxy的加密连接,接收普通设备的DNS请求并将其传递给dnsProxy,同时返回DNS结果给普通计算设备。对于网内设备而言,dnsAgent就是个伪装的DNS服务器。同样,dnsAgent其实也不需要关心、也不需要解析DNS协议细节。在我的网络中,dnsAgent跑在一台常年吃灰的树莓派上(还是第一代的)。

实现这些仅仅需要一点UDP、TCP的网络知识,甚至不需要了解DNS协议的细节,无需对DNS数据包做修改。完成后可以愉快地打开很多以前打不开的网站。当然,有些网站始终是打不开的,这是另一个与DNS无关的话题了。

Pi打开IPv6

Pi打开IPv6

默认已经安装了IPv6协议栈,但是没有打开IPv6功能,这点比较奇怪。不过打开IPv6功能也不复杂,一行命令即可:

sudo modprobe ipv6
Pi3开卖了

Pi3开卖了

第三代树莓派正式开卖,感觉改进很大,值得入手。最吸引人的除了CPU升级为64位ARM外,还有就是内置WiFi!想当初为了支持USB接口的WiFi,那是一顿折腾啊,Pi3就省事多了。

话说现在手头上还是Pi一代(model B),用起来一直很稳定,相当具有可玩性。

新闻链接:https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/

 

 

简单安装树莓派

简单安装树莓派

步骤比较简单,采用官方最新的raspbian安装很顺利,简要记录几点:

(1)从官网上下载推荐的win32diskimager软件,将raspbian的镜像写入SD卡。

(2)在路由器上找到raspberry pi的地址,通过ssh直接登录即可。缺省用户名为pi,密码为raspberry。

(3)登录进去后,首先运行sudo raspi-config,将系统扩展至整个SD卡,否则有很多空间无法使用。

(4)安装中文字体:

sudo apt-get install ttf-wqy-zenhei ttf-wqy-microhei

(5)安装xrdp,这样就可以使用windows系统自带的“远程桌面连接”登录raspberry了:

sudo apt-get install xrdp