树莓派相比于动辄几千上万的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的安装,使用以及优化。
配置一样,记得修改下载目录即可

四。参数优化

  cat > '/etc/sysctl.d/99-sysctl.conf' << EOF
net.ipv6.conf.all.accept_ra = 2
#fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_max_syn_backlog = 12800
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
  sysctl -p > /dev/null
    cat > '/etc/systemd/system.conf' << EOF
[Manager]
#DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=30s
#DefaultRestartSec=100ms
DefaultLimitCORE=infinity
DefaultLimitNOFILE=51200
DefaultLimitNPROC=51200
EOF
    cat > '/etc/security/limits.conf' << EOF
* soft nofile 51200
* hard nofile 51200
EOF
if grep -q "ulimit" /etc/profile
then
  :
else
echo "ulimit -SHn 51200" >> /etc/profile
fi
if grep -q "pam_limits.so" /etc/pam.d/common-session
then
  :
else
echo "session required pam_limits.so" >> /etc/pam.d/common-session || true
仅供参考
sudo sysctl -p
Linux命令:TCP连接高并发时Socket句柄数的修改 - 玩机大学
有台服务器的磁盘经常被syslog和daemon.log两个文件撑满,CPU负载也经常飚满。查看这两个文件,几乎全都是/core/transport/internet/tcp: failed to accepted raw connections &gt; 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来实现自动配置更好。

port=53 #设定dns服务器监听端口,默认53
domain-needed #从不转发空域名解析
bogus-priv #从不转发非公网解析
#dnssec #上游dns服务器支持dnssec解析的话可以启用
#strict-order #严谨查询
no-resolv #不读取/etc/resolv.conf文件
server=127.0.0.1#5555 #指定上游dns服务器为V2ray
#address=/360.cn/0.0.0.0 #内网dns劫持选项
bind-interfaces
except-interface=ppp0 #不对外网开放
#no-hosts #不读取hosts文件
#addn-hosts=/etc/banner_add_hosts #指定额外hosts文件
dhcp-range=192.168.1.3,192.168.1.200,255.255.255.0,7d #dhcpv4地址池
dhcp-option=option:router,192.168.1.2 #通告dhcpv4 路由器内网地址
dhcp-option=option:dns-server,192.168.1.2 #通告dhcpv4 dns地址
dhcp-authoritative
cache-size=10000 #设置dns缓存大小,最大10000
no-negcache #拒绝恶性缓存
log-queries 
log-facility=/var/log/dnsmasq.log

七。题外话

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