树莓派相比于动辄几千上万的x86-64服务器而言,价格低廉,CPU效能虽远不及高端的x86-64芯片组,但对于像我一样的个人用户而言作为本地服务器而言已然足够,毕竟如果效果一样,谁又乐意花费额外的金钱呢?

本文主要为我个人从树莓派到手,安装,使用等方面的经历,仅供参考。

https://www.raspberrypi.org/products/raspberry-pi-4-model-b/


一.树莓派及配件的购买

1.我买的4g内存版本,后来发现完全用不着这么大内存,1g都够用,但买都买了,就不重要了。

2.原先打算拿树莓派看奈飞的来着,所以买了一条micro hdmi --> hdmi线,后来发现不管怎么搞树莓派都不能正常播放奈飞,又浪费了。。。

3.SD卡,原先手上有一张128gb的,后来拿树莓派下bt下废了,不得不重新搞一张,再次浪费。。。

4.散热外壳,这个倒是没有浪费,夏天还是很有用的,冬天我嫌风扇吵就把风扇关掉了。

5.拿来外接的SSD,之前因为直接拿SD卡下bt下废了一张SD卡,这次换SSD,用usb3.0 --> sata3转接器就行。


二.关于树莓派系统的经历

1.原先打算拿来看奈飞(Netflix),就用了官方带桌面系统的Raspbian后来发现看不了。。。

2.后来发现树莓派4的cpu是64位的,Raspbian是32位系统,被坑进去了。。。

Raspbian

3.用Raspbian成功把一张SD卡下废后,换上ubuntu server 19.10 arm 64位系统和外接SSD重新上线。

Install Ubuntu Server on a Raspberry Pi 2, 3 or 4 | Ubuntu
Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

三。具体使用

由于32位系统不好用,我就不写了,就写写64位的。

(1)ssh进入,默认用户名密码均为ubuntu,设置密码完成后需重新连接。

(2)关于网络配置:由于我作为服务器使用,故配置静态地址

cd /etc/netplan
sudo nano 50-cloud-init.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      #dhcp4: true
      optional: true
      addresses:
        - 192.168.1.2/24
      gateway4: 192.168.1.1
      nameservers:
          #search: [mydomain, otherdomain]
          addresses: [127.0.0.1]
sudo netplan apply

然后重新[email protected]即可

(3)SSD的挂载

sudo fdisk -l
sudo mkdir /ssd
sudo nano /etc/fstab
/dev/sda1    /ssd    ext4    defaults    0    0
sudo mount /ssd
sda1换成你的设备即可

(4)关于透明代理

wget https://github.com/v2ray/v2ray-core/releases/download/v4.21.3/v2ray-linux-arm64.zip
建议提前下载完成后上传

config配置一样

使用Ubuntu 18.04打造超级家庭网关(边缘路由器)
此方案成功实现了全局域网透明代理,bbr上传加速,内网穿透,kms全自动激活Windows和Officw,无污染本地dns,使用Qbittorrent-nox下bt以及pt,Web服务器等功能。本文更新于2019.11.19,原文写于2019.9.4。‌
我就不重新写一遍了

至于使用dnsmasq抗dns污染并缓存上文也有写,interface改成lo,eth0即可

(5)关于下bt

Qbittorrent-nox --玩转VPS篇一
Qbittorrent作为一款现代化,高效能,功能强大的BT客户端受到了相当多人包括我在内的人的喜欢。本文主要介绍Debian/Ubuntu系统下Qbittorrent-nox的安装,使用以及优化。
配置一样,记得修改下载目录即可

四。参数优化

sudo nano /etc/sysctl.conf

net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 12800
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.eth0.disable_ipv6 = 0
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3
仅供参考
sudo sysctl -p
Linux命令:TCP连接高并发时Socket句柄数的修改 - 玩机大学
有台服务器的磁盘经常被syslog和daemon.log两个文件撑满,CPU负载也经常飚满。查看这两个文件,几乎全都是/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:18919: accept4: too many open files的报错。最后通过修改socket句柄 …

五。坑爹的Debug经历

1.USB3.0 i/o error问题

(1)刚开始外接SSD时用的32位系统,下BT频频爆出i/o 错误,当时心态是崩的,搜了一遍教程发现是uas的锅,但最坑爹的是官方的Raspbian系统不能禁用uas(起码我就失败了),后来我把SSD改到usb2.0口运行后i/o错误就消失了,看来确实是usb3.0驱动的Bug。

(1)我当然不甘心被usb2.0的i/o压制,打算换上64位系统试试,结果发现尼玛Bug一模一样,不过好在这回可以禁用uas了,自此再无i/o错误发生。

(3)具体操作

lsusb
1找出对应的usb id
echo options usb-storage quirks=357d:7788:u | sudo tee /etc/modprobe.d/blacklist_uas_357d.conf
sudo update-initramfs -u
:u前面的id替换掉
sudo reboot
lsusb -t
只要Drivers不是uas就成功了

2.透明代理问题

不知道为什么V2ray开本机透明代理后频频爆炸,后来看log发现一大堆too many open files。。。

解决方案在上文有相关链接

3.TCP cookie问题

由于下bt时,同时连入连接数暴增,看日志发现有些包被内核丢了,日。。。

net.ipv4.tcp_max_syn_backlog = 12800
这个参数开高就解决

六。旁路由透明代理方案

以windows为例

然后找到ipv4配置

网关和dns伺服器填树莓派ip,本机ip不和其他设备冲突即可

当然直接在树莓派上安装dhcp服务器dnsmasq来实现自动配置更好。


七。题外话

树莓派4相比前代一个相当大的改进在于成功支持了千兆网络以及usb3.0,并且CPU效能相比前代也有相当大的提升,可谓性价比很高了,毕竟由本地服务器来负担一部分主力电脑的工作还是很爽的一件事。