[toc]
入门/萌新篇
安装树莓派基地系统
买回来一块树莓派4b裸板,首先得给它刷上系统。那么选官方的树莓派系统呢?还是选一个干净的ubuntu系统呢?嘿嘿,我们都不选,我们使用树莓派爱好者基地编译好的树莓派基地系统。里面集成了各种功能强大的图像化面板。
优化/关闭多余服务
安装宝塔服务
进阶/折腾篇
raspberry安装 hexo博客
学习raspberry是少不了折腾的,每一次的折腾都能积累不少经验,这些失败的记忆和折腾的历程会伴随时间慢慢淡去,一个博客能够记下你的学习历程以及知识的积累。那么,入门的萌新都不舍得花钱买服务器,公网ip,域名等等。那么,我们现在开始搭建的博客,可以在有“免费的x级域名”的github下用“免费的仓库”来搭建我们“宝贵的知识宝库”。
首先我们安装nvm
1 | wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz |
然后解压
1 | tar -xzvf v0.39.1.tar.gz |
进入解压目录中
1 | cd nvm-0.39.1/ |
安装
1 | ./install.sh |
执行完成后会弹出这样的信息
export NVM_DIR=”$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && . “$NVM_DIR/nvm.sh” # This loads nvm
[ -s “$NVM_DIR/bash_completion” ] && . “$NVM_DIR/bash_completion” # This loads nvm bash_completion
然后在终端粘贴这个命令配置环境
1 | export NVM_DIR="$HOME/.nvm" |
检测nvm是否安装成功
1 | nvm --version |
查看已经安装的版本
1 | nvm list |
查看可安装版本
如何查看通过NVM安装的Node.js版本呢?
你可以直接使用NVM命令:
1 |
|
安装Node.js
我们安装16.15.1版本node.js:
1 | nvm install 16.15.1 |
激活Node.js版本
我们安装好Node.js以后,需要激活它
1 | nvm use 16.15.1 |
换腾讯的源
1 | npm config set registry http://mirrors.cloud.tencent.com/npm/ |
安装Git
1 | apt-get install git |
安装hexo博客软件
1 | npm install -g hexo-cli |
创建博客orange目录
1 | mkdir orange |
初始化博客目录
1 | cd orange |
启动博客服务
1 | # 在orange目录里面,执行后去4000端口查看博客生成 |
终端
临时获得访问GitHub
很多时候,我们使用终端去克隆下载GitHub的东西的时候,发现会被拒绝的现象出现,这个原因是我们国家的GFW在发挥着不可或缺的作用,那么Github在世界是有大量的CDN节点的,我们可以利用这个特性,让我们的终端临时性重新获得下载东西的能力。
首先,访问tool.lu把域名的ip解析出来
然后修改Linux系统的/etc/hosts
文件
那么终端就能临时性的访问Github的能力了。
终端代理访问GitHub
如果你们设计了本地代理软件的话,可以把局域网共享打开然后让树莓派也获得访问GitHub能力,这样终端下载国外的deb包速度也是很快的(因为我不习惯换国内源,国内源删太多东西了,有些资源包说没有的时候比下的慢更难受)
1 | vim /etc/profile |
弄好后,记得要source /etc/profile
让其临时生效,不然就要重启才能使用了
通过proxy_on
启动代理,proxy_off
关闭代理。
可以执行curl cip.cc
验证:
1 | root@raspbian:~# proxy_on |
更加先进的clash终端代理
下载项目
1 | $ git clone https://github.com/Elegycloud/clash-for-linux-backup.git |
进入到项目目录,编辑.env
文件,修改变量CLASH_URL
的值。
1 | cd clash-for-linux |
注意:
.env
文件中的变量CLASH_SECRET
为自定义 Clash Secret,值为空时,脚本将自动生成随机字符串。
启动程序
直接运行脚本文件start.sh即可
- 进入项目目录
1 | $ cd clash-for-linux |
- 运行启动脚本
1 | $ sudo bash start.sh |
1 | source /etc/profile.d/clash.sh |
- 检查服务端口
1 | $ netstat -tln | grep -E '9090|789.' |
- 检查环境变量
1 | $ env | grep -E 'http_proxy|https_proxy' |
以上步骤如果正常,说明服务clash程序启动成功,现在就可以体验高速下载github资源了。
重启程序
如果需要对Clash配置进行修改,请修改 conf/config.yaml
文件。然后运行 restart.sh
脚本进行重启。
注意: 重启脚本
restart.sh
不会更新订阅信息。
停止程序
- 进入项目目录
1 | $ cd clash-for-linux |
- 关闭服务
1 | $ sudo bash shutdown.sh |
1 | $ proxy_off |
然后检查程序端口、进程以及环境变量http_proxy|https_proxy
,若都没则说明服务正常关闭。
Clash Dashboard
- 访问 Clash Dashboard
通过浏览器访问 start.sh
执行成功后输出的地址,例如:http://192.168.0.1:9090/ui
- 登录管理界面
在API Base URL
一栏中输入:http://Secret(optional)
一栏中输入启动成功后输出的Secret。
点击Add并选择刚刚输入的管理界面地址,之后便可在浏览器上进行一些配置。
- 更多教程
此 Clash Dashboard 使用的是yacd项目,详细使用方法请移步到yacd上查询。
终端界面选择代理节点
部分用户无法通过浏览器使用 Clash Dashboard 进行节点选择、代理模式修改等操作,为了方便用户可以在Linux终端进行操作,下面提供了一个功能简单的脚本以便用户可以临时通过终端界面进行配置。
**脚本存放位置:scripts/clash_proxy-selector.sh**
注意:
使用脚本前,需要修改脚本中的 Secret 变量值为上述启动脚本输出的值,或者与
.env
文件中定义的 CLASH_SECRET 变量值保持一致。
备份
备份一个盘符
首先,先确定盘符,然后开始备份
1 | dd bs=4M if=/dev/sda | gzip > bask-raspberry.img.gz |
解压至盘符
1 | gzip -cd bask-raspberry.img.gz | dd bs=4M of=/dev/sda |
备份到远程服务器
1 | scp -p bask-raspberry.img.gz user@ip:path/ |
scp 和 rsync : scp是每次传都是重新重传独立的一份,rsync使用的是差分传输算法,只会传输发生了变化的那部分
定时备份脚本
1 |
|
这里需要双方互换ssh-key,不然需要验证密码,这样脚本就无法完成最后一步
命令
学到这里了,那么我默认你已经是具有RHCSA(RHCSA是Red Hat Certified System Administrator的简称,属于红帽linux的初级入门认证)的实力。下面学到的命令,跟RHCSA学到的可以起到相辅相成的作用。
安全移除数据
别以为,你rm -rf
就是删掉了数据,其实跟win一样都是只删掉了对应的inode表项
,是可以通过修复底层数据的修复来还原整个文件系统,如果你需要安全清理某些敏感数据,可以试一下shred
这是通过多次覆盖,下面是覆盖5次。(其实dd
命令也是可以以比特为单位覆盖数据,shred
能干多次而已)
1 | shred -v -n 5 a.txt |
我的世界
我的世界启动器安装
HMCL
下载好后点开安装即可
我的世界程序安装
想要我的世界服务跑起来,光有启动器是不行的,还得有我的世界程序。那么这个 程序可以跑在本地电脑(自己一个人游玩和局域网内和小伙伴们一起游玩),也可以跑在公网服务器上(自己游玩的同时,小伙伴们也不限制在局域网连机,小伙伴可以在各自的家里舒舒服服地躺着玩,也因为是公网服务器,世界各地的小伙伴也可以进来happy,只不过由于地域距离的问题,他们要顶着高ping和国人玩耍。正常来讲是我们顶着高ping去玩人家的服务器,网易服务器的尿性你们懂的!!!)
raspberry树莓派4b部署我的世界
pinecraft
里面已经支持到了1.20.1
,旧版本的MC也可以通过之前发布的版本找到,本次以1.16.5
作为安装教程。
下载安装程序:
1 | git clone https://github.com/Cat5TV/pinecraft.git |
进入下载程序目录:
1 | cd pinecraft/ |
安装
1 | sudo ./install |
敲下安装命令可以看到一个非常好看的安装界面,不要吐槽,这在linux算是貂蝉西施那样的尤物了。我们按下两下空格,等待安装包下载。。。
下面是安装路径和启动用户(pi),我们按下空格确认,这样我就知道程序运行在哪里,运行程序的用户是谁了。
选择种子。。。
选择服务器是什么版本的我选择fabric的。。。因为我只会fabric,你们如果不会直接默认paper(人家优化好说不定。。。)
模式选择生存模式
同意一下协议
它想写点东西进你的boot
意思是。。。把你的树莓派超频到1.9Ghz,吃掉你的树莓派内存4398MB~5319MB,要记得你这我的世界的版本是1.16.5
1 | htop |
可以看出mc吃内存和占用cpu很高
切换用户
1 | su - pi |
进入目录
1 | cd minecraft/ |
编辑文件,允许非正版用户加入MC
1 | vim server.properties |
改成false
我们来看一下这个MC目录里面的结构
里面有个叫server的执行文件,我们可以修改里面给java赋予的内存,可以把最小值改到1G即(1024M)
我一般喜欢把能降低的都降低。。。尽量压缩使用内存留给更多后续服务
然后执行停止命令
1 | ./stop |
然后执行运行我的世界命令
1 | screen -R MC |
然后
1 | ./server |
等待到100%就可以使用启动器进入我的世界了
我们按住ctrl+a
然后ctrl+d
就能把这个sscreen程序运行的mc服务常驻后台
我们再看看htop
,先后对比
修改server之前
修改server之后
Mem内存的使用状况已经降低,我们可以为后续加mod留出更大的空间
查看服务器ip
1 | ip add |
由上面,可以知道我们MC服务器ip是内网地址192.168.0.107,那么我本机也是在内网的可以直接连接。
启动器打开,进MC,左上角FPS达到惊人的98
启动器
我们刚刚安装好HMCL后,打开应该都是这个样子
我们首先登录账号,如果有微软正版账号也可以用正版登录,这里选择离线模式和微软账号都没有任何区别,这里用离线模式登录。
然后,回到最初界面,可以看到有个用户了。
接下来,我们选择我的世界版本。
点击安装新游戏版本
我们服务器安装的就是1.16.5fabric版本
我们还是遵循选新不选旧原则
本体+fabric+fabric API确认无误之后然后点击安装
点击安装,静待安装成功
安装成功,回到最初界面,发现图标变了。
点击游戏开始玩原汁原味的MC 1.16.5吧!!!
加装光影
光影只会占本地端电脑的性能,不关linux服务器的事,所以光影只需放在本地即可
然后,在本地电脑端找到.minecraft
–>shaderpacks
放入下载好的光影压缩包
然后在游戏加载光影压缩包即可
材质包
加装mods
MOD它是一个英语的缩写,它的全称应该是modification,这个其实是修改的意思,不过中文给音译过来变成了“模组”,所以MOD其实就是游戏模组,作用就是对原本的游戏内容再加入一些新的东西,让我的世界这款游戏,更加的多样化。
这里有个要点,就是服务器加mod,本地不加mod是无法调用mod的。反之,本地加了mod,服务器没有加mod也是用不了的。必须要两端都加mod才能成功使用mod。
首先,在你linux服务器上面找到你mc的服务文件夹,然后cd
进去,然后ls
一下就能看到mods
文件夹了
在网上找到喜欢的mod,然后下载相对应版本的mod放进去mods文件夹中
就是这样啦!什么模组菜单啦!一键整理啦!创世神啦!
然后,在本地电脑端也要找到.minecraft
–>mods
放入和服务器端一样的mod
打开游戏就会自动和服务器同步载入mod啦
MC调用独显帧率暴涨
搭好MC会发现,进去玩的时候50
多帧,下雨的时候直接掉到40
多帧,这怎么办?
按F3
可以看到这个图,左边的52FPS
夜晚状态,中间的GPU
占用72%
,右边的CPUI5-12450H
可以知道目前使用的是CPU的核显,那个性能懂得都懂。
接下来教你们怎么驱动独显跑MC,帧率暴涨,首先打开MC的启动器
,我的以HMCL
作为演示。
打开HMCL
,然后点击设置
记住这个java路径
点击电脑的开始菜单,找到设置按钮,并且点击进去
找到游戏选项,点击进去
在Xbox Game Bar
找到右上角这个图形设置
,并且点击进去
打开里面的硬件加速GPU计划
,再点击下方的浏览找到Java
的路径
把java.exe
,javac.exe
,javaw.exe
这三个都加入进去
并且三个都设置为独显
设置完成之后重启电脑,再次打开MC的F3就能看到帧率暴涨了
按F3
可以看到这个图,左边的144FPS
夜晚状态,中间的GPU
占用10%
,右边的CPUI5-12450H
,但是下方多了个3050显卡
ZeroTier
最最最最nb的内网穿透工具!
zt安装命令
1 | curl -s https://install.zerotier.com | sudo bash |
自己先去zt官网创建网卡,然后需要的设备安装zt并且加入该网络就行了,支持linux、苹果和安卓手机、win电脑、mac等
pi-apps
https://github.com/Botspot/pi-apps
docker
安装docker
Centos
1 | curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
阿里云源
1 | sudo yum-config-manager \ |
官方源
1 | sudo yum-config-manager \ |
由于树莓派基地系统自带了docker,我们只需要将docker服务启动即可,为了docker能够更好完成和为我们设备提供优质服务,这里建议将docker设置为开机自启。
1 | # 查看docker状态 |
怎么说咧!想要玩得起docker,有个地方是我们不得不去的,那就是docker的官方宝藏之地——Dockerhub,里面有世界各地说话又好听、技术又高的大佬,他们写好的容器则上传到了dockerhub,这些容器就是一个小型的服务或者说是应用。这些应用可以独立或者混合其他容器一起使用。我们后面会讲到部署一个wordpress博客
然后用到mariadb数据库容器
的案例。再此之前,我们还是先老老实实去b站学习有关docker的各种课程,学习好docker对我们后面学习其他的容器化有很大帮助,而docker里面的网络内容则会贯穿整个进阶篇章。
配置镜像加速
额,换了上面的源就别搞下面的加速了
镜像加速
1 | vim /etc/docker/daemon.json |
加入这个中科大的源
1 | { |
重新加载配置
1 | systemctl daemon-reload |
1 | systemctl restart docker |
docker-compose安装
把二进制包放下面路径
1 | /usr/local/bin/ |
并且改名为docker-compose
就行了
papermc-server
openwrt
openwrt软路由可以替我们电脑实现一些魔法上网的功能,将fq功能给予树莓派处理可以让我们的fq体验更加顺畅丝滑。
下面我以docker容器化部署一下openwrt,实现家庭设备魔法上网。
拉取镜像
1 | # 先下载openwrt镜像,这个镜像是树莓派4b的openwrt镜像 |
查看镜像
1 | docker images |
打开网卡混杂模式
1 | sudo ip link set eth0 promisc on |
创建网络(须结合实际网络情况,不能照抄命令)
1 | docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet |
1 | --subnet=192.168.1.0/24 #树莓派正所处在192.168.1.x网段 |
查看macnet网络创建程度
1 | docker network ls |
创建并启动容器
1 | docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi4 /sbin/init |
进入容器并修改相关参数
1 | docker exec -it openwrt bash |
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
1 | vim /etc/config/network |
我们需要更改 Lan 口设置:
1 | config interface 'lan' |
所有的 192.168.1.x
需要根据树莓派所处网段修改,option gateway
填写路由器的 IP。
option ipaddr
项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。
重启网络
1 | /etc/init.d/network restart |
输入完成这段命令之后,按住键盘的ctrl+p+q
就能退出openwrt
容器的命令行界面。
如果有更换mac的要求,下面给一个临时更换的办法,重启会失效要注意哦!
1 | ip link set dev br-lan address 12:34:56:78:9A:BC |
进入控制面板
在浏览器中输入option ipaddr
项目中的 IP 进入 Luci 控制面板,若option ipaddr
的参数为 192.168.1.100
,则可以在浏览器输入 http://192.168.1.100
进入控制面板。
用户名:root
**密码:password
**
登录进去后可以看到树莓派的基础信息、cpu架构、cpu温度等信息
fq的功能配置:左边的列表选择服务
–>PassWall
,可以看到这个界面。
首先,打开里面的主开关
复制fq节点的订阅地址到节点订阅选项
设置完成之后点击手动订阅可以看到相应日志
回到节点列表就可以看到大量节点出现
我一般喜欢开放固定端口代理流量,这样我就可以通过ip+端口
使用代理服务器
清理完成刷新一下,fq服务就可以使用了。win系统有代理功能的,首次fq可以先在win系统里面设置,然后打开谷歌浏览器安装代理插件。
这样可以很好的切换,而且只有浏览器能够fq,想要电脑全局fq就在代理里面设置ip+端口
即可。记住win的代理和浏览器的插件只能开一个,别环路了。。。
网络修复
用久了发现,树莓派居然没办法将自己的流量代理这就很离谱了,我用ping
命令测试了openwrt
的容器ip
,发现是没办法ping
通的,然后把openwrt
防火墙清空了还是不行。在同一个网段下,主机居然无法ping
通自己肚子里
的openwrt
,这里我重新想了docker容器和主机之间的网卡之间的关系。
我认为,我在发送ping命令的icmp给openwrt的时候,流量通过树莓派的物理网卡出去了,但是路由器说流量应该流回树莓派内,然后接收到流量的树莓派因为规则把这股流量给丢弃了(因为没有找到内部的openwrt设备ip),这是我的猜想。
所以,我觉得应该桥接一个网卡出来,这个网卡是和树莓派、openwrt都在同一个网段下的才行,而且ip要独立(非树莓派的ip、非openwrt的ip)
编辑/etc/network/interfaces
文件
1 | # 添加下面 |
pre-up ip link add macvlan link eth0 type macvlan mode bridge
: 在接口启动之前,使用ip link add
命令创建一个名为macvlan
的macvlan
类型的子接口,连接到eth0
主接口上,以桥接模式运行。post-down ip link del macvlan link eth0 type macvlan mode bridge
: 在接口关闭之后,使用ip link del
命令删除macvlan
子接口。
重启树莓派即可,就发现可以ping
通openwrt
的容器ip
了
docker版的openwrt还有其他的很多功能,可以自己私下去探索,这里就不再多说了,各自努力吧!
aria2
1 | docker run -d \ |
WebUI
1 | docker run -d \ |
mariadb
先拉取mariadb
1 | docker pull mariadb |
下面需要修改的地方就是密码password修改成为自己需要的密码就可以刷入命令了
1 | docker run --restart=always --name mariadb01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /data/mariadb/mysql.conf.d/mysql.cnf:/etc/mysql/mysql.conf.d/mysql.cnf -v /data/mariadb/data:/var/lib/mysql -d mariadb |
那么再教你个好玩的,使用Navicat连接数据库爽的一批
wordpress
httpbin
现在越来越多的测试人员除了功能测试外,都已开始接触并进行接口测试。在学习接口测试时,尤其对于测试新手来说,接口测试工具上怎样填写请求地址、方法、请求参数等,还是多多少少有些困难,而且往往找不到合适的调试与请求的接口服务地址而无从练手。那么本地化部署httpbin
就能满足你对接口调试的需求啦
1 | docker pull kong/httpbin |
1 | docker run -d --restart always -p 8080:80 --name httpbin kong/httpbin:latest |
双网卡内外网优先级设置
根据自己的需要,有时候树莓派需要两张网卡,一张用于访问外网(wlan0),另一种用于连接内网(eth0)。
我们可以看到这里连接了两个网卡,分别是wlan0和eth0,在我们学数通知识的时候,我们老师会教我们网络的知识,直连的跃点数是会比连接wifi的是要更小的(普遍情况下是这样,不要和我杠,杠的要不你别学)
这里,我设计的网络是eth0是面向内网的,对我的nas起到稳定的网络传输和安全性;而wlan0是连接了我的热点,这里我ping了一下8.8.8.8,发现是完全ping不同的。
我们再查看了网络优先级方面,发现eth0的网络优先级是比wlan0高的(即eth0的网络跃点数metric比wlan0的跃点数metric要小)
我们可以使用以下命令查看跃点数
1 | root@raspberrypi:~# ip route show |
一个100一个600,看得很清楚吧。这里我把wlan0跃点数调到99,192.168.137.1是路由器网关地址
1 | root@raspberrypi:~# sudo ip route add default via 192.168.137.1 dev wlan0 proto dhcp metric 99 |
wlan0这个网卡优先级马上就第一了,那么不出意外的话,这个网络就能通了
上面讲的这个咧,是临时解决办法,要是想一劳永逸呢还是要把IPV4_ROUTE_METRIC=99
这个写入到网卡配置文件中,但是。。。很不巧树莓派貌似没有。。。除非你用的不是树莓派官方的
那么我们也有另外的处理办法,把sudo ip route add default via 192.168.137.1 dev wlan0 proto dhcp metric 99
这个命令写入一个文本里面,然后添加入contab
里面,命令如下:
1 | root@raspberrypi:/usr/bin# /usr/bin |
这里是设置开机执行文件
1 | root@raspberrypi:/usr/bin# crontab -e |
树莓派跑win98
看到这个标题是不是很疯狂?确实。。。真离谱
run-windows-98-on-raspberry-pi-with-dosbox-x
树莓派安装win10、win11
这个更逆天
微型电台-FM
树莓派的 GPIO 引脚可以用作信号输出,因此,可以把音频信号通过树莓派进行 FM 调制后从 GPIO引脚送出,这样树莓派就变成了一个微型FM 发射器,即微型电台,可以自己指定发射频率,打开 FM 调频收音机,调到对应频道就可以接收到树派播放的 FM 广播信号了。
通过安装 PiFmRds 来将树莓派变成微型 FM 电台
安装过程
首先,执行以下命令,安装 sndfile 库:
1 | sudo apt-get install libsndfile1-dev |
第二步,执行以下命令,克隆 PiFmRds 的源代码:
1 | git clone https://github.com/ChristopheJacquet/PiFmRds.git |
第三步,执行以下命令,进行编译:
1 | cd PiFmRds/src |
播放命令
编译完成后,可以执行 sudo ./pi_fm_rds
命令发射 FM信号。pi_fm_rds 命令格式为:
1 | sudo ./pi_fm_rds -audio [filename] -freq [frequency] |
其中-audio [filename]
是指定播放文件是wav
格式的音频文件;
-freq [frequency]
是指定发射信号的频率
下面是不指定发射信号播放666.wav文件
1 | root@ubuntu:~/PiFmRds/src# pwd |
然后新建一个shell窗口,执行播放文件
1 | root@ubuntu:~/PiFmRds/src# sudo ./pi_fm_rds -audio 666.wav |
用FM收音机接收107.9MHZ信号,可以听到文件声音
增强播放效果
在树莓派 GPIO 4(物理引脚编号为7)接上一根长 20m 的杜邦线作为发射天线来增强 FM 信号,然后使用 FM(调频)收音机收听,在 1m 范围内音质很清晰,在3m 范围内仍然可以听得见,超过 3m 信号会很弱。
iptables
一、简介一下iptables
iptables命令中ACCEPT(允许流量通过)、LOG(记录日志信息)、REJECT(拒绝流量通过)、DROP(拒绝流量通过)。允许动作和记录日志工作都比较好理解,着重需要讲解的是这两条拒绝动作的不同点,其中REJECT和DROP的动作操作都是把数据包拒绝,DROP是直接把数据包抛弃不响应,而REJECT会拒绝后再回复一条“您的信息我已收到,但被扔掉了”,让对方清晰的看到数据被拒绝的响应。
四表五链
命令解释
1 | # 允许192.168.1.0/24这个IP段的流量流进服务器的80端口 |
当我们使用 iptables 设置了一些规则后需要对这些设置永久保存,避免当服务器重启后规则消失需要重新配置。为了能够让 iptables 规则永久保存,这里介绍两种方法:
1、 使用iptables-restore
在设置了一系列的 iptables 规则后,首先需要切换到 root 用户,执行如下命令将规则保存到文件中:
1 | # 这包括了ipv4和ipv6规则,如果只有ipv4的规则可以只执行第一条 |
然后编辑 /etc/network/interfaces 文件,在对应的外网网卡下(通常是 eth0 接口,如果不是请按照实际情况添加,可以通过 ifconfig 查看外网 ip 对应的网卡接口)插入下面两行:
1 | pre-up iptables-restore < /etc/iptables-rules |
这样当服务器重启后就能自动加载已经配置好的 iptables 规则了。如果后续有添加新的规则则需要重新执行上面的 iptables-save 命令更新规则文件即可
2、 使用iptables-persistent
这个方法是我更喜欢使用的,它实际操作起来更简单一些。
- 首先安装iptables-persistent工具
1 | sudo apt install iptables-persistent |
- 每当设置了新的iptables规则后,使用如下命令保存规则即可,规则会根据ipv4和ipv6分别保存在了/etc/iptables/rules.v4和/etc/iptables/rules.v6文件中。
1 | # 保存现有规则 |
由于 iptables-persistent 在安装时已经把它作为一个服务设置为开机启动了,它在开机后会自动加载已经保存的规则,所以也就达到了永久保存的目的。其实原理和第一种方法是类似的,只是设置起来会更简单一些。
RaspAP
NAS
samba
首先,安装samba服务
1 | apt install samba samba-common-bin |
添加文件配置
1 | vim /etc/samba/smb.conf |
配置如下:
1 | [share] #共享文件夹名字,将在网络上显示此名称 |
创建orange的linux用户
1 | useradd -m orange |
创建samba的orange用户并且设置密码
1 | smbpasswd -a orange |
重启samba服务即可访问
1 | systemctl restart smbd.service |
这里由于华为手机有隐私保护,不能截图,所以我已经登录账号密码进来了
咳咳,都配了认证,那么我们是不是可以端口映射一下
把445映射出去即可
手机和win电脑都验证过了,完全没问题。
NFS
安装rpcbind
1 | apt install rpcbind |
查看rpcbind.socket状态
1 | systemctl status rpcbind.socket |
可以看出rpcbind.socket一直在监听端口
安装nfs
1 | sudo apt install nfs-kernel-server |
查看rpcbind.socket状态
1 | systemctl status rpcbind.service |
从上面安装好看nfs再查看rpcbind.service可以发现,nfs没开启服务,rpcbind.service也不会自动开启
这次,我们开启nfs再查看nfs和rpcbind.service的服务状态
1 | systemctl restart nfs-kernel-server.service |
1 | systemctl status nfs-kernel-server.service |
1 | systemctl status rpcbind.service |
可以看出,nfs服务启动后,rpcbind.socket检测到端口被激活从而开启了rpcbind.service服务
编辑/etc/exports
后面的权限我先不加,这里默认是只读
1 | /data * |
重新加载配置(不需要重启服务)
1 | exportfs -r |
查看默认权限
1 | exportfs -v |
显示NFS服务器的共享信息
1 | showmount -e |
win10挂载nfs共享目录
先打开控制面板,找到程序
点击启用或者关闭windows功能
把nfs服务全选上
然后确认退出,打开此电脑找到映射网络驱动器
按照\\ip\共享目录名字
这样的格式
然后就能看到共享的文件了
由于上面在/etc/exports里没有添加权限使用仅有下载功能,硬盘的大小还不能完全支配
卸载挂载。。。懂?
linux挂载nfs共享目录
很简单。。。知道怎么挂载磁盘吧。。。就是这样
1 | mount ip:/data /服务器的本地文件夹 |
临时挂载很不方便,你懂的!!!重启就没了,可以试一下永久挂载,这里就不BB了
卸载挂载
1 | umount /服务器的本地文件夹 |
权限修改
rw
1 | /data *(rw) |
1 | exportfs -r |
拉个文件进去,它说哒咩!!!
这怎么回事捏,我可是win10的主人,居然没有权限访问?
好吧!虽然是win10的主人,但是linux层面上你只是一个来宾,所以还要在文件夹授予其他用户权限
1 | chmod o+rw /data/ |
嘿嘿!给了权限就可以上传了
权限选择 | 权限的作用 |
---|---|
ro | 只读 |
rw | 读写 |
async | 异步,先将数据写入到内存,在将数据写入到硬盘(性能高) |
root_squash | 将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody) |
no_root_squash | 将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户 |
all_squash | 默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户 |
anonuid | 设置映射到本地的匿名用户的UID(配合all_squash使用) |
anongid | 设置映射到本地的匿名用户的GID(配合all_squash使用) |
sync | 默认选项,保持数据同步,数据同步写入到内存和硬盘 |
secure | NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项 |
insecure | 允许NFS客户端不使用NFS保留端口(通常是1024以上的端口) |
OpenMediaVault
https://www.openmediavault.org/
OpenMediaVault | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
换源(树莓派5)
1 | cat >/etc/apt/sources.list<<EOF |
网络修复
这个是我的特殊需求!你们别用!
1 | cat >add_route.sh<<EOF |
1 | chmod +x add_route.sh |
zt
1 | curl -s https://install.zerotier.com | sudo bash |
自己加入自己的zt网络
安装
- 注意
安装omv需要无头树莓派
,也就是无桌面化的树莓派才行,所以千万别装有桌面化的镜像!!!我是安装树莓派5的64bit lite版本,后面装桌面应该也可以,但是我不会装的
前期部署
- 设置root密码
omv装好后会把用户一切权限禁用
,从而导致用户
没办法登录ssh
,如果root
管理员没有设置密码和开启允许root
管理员ssh
登录,那就完蛋了!
1 | root@R5:~# passwd |
- 允许root管理员ssh登录
1 | root@R5:~# nano /etc/ssh/sshd_config |
- 重启ssh服务
1 | root@R5:~# systemctl restart sshd |
- 提前解析
raw.githubusercontent.com
的ip
在中国玩服务器百分之九十的问题都来自网络!而世界上最大的同性交流网站gayhub(github)
经常被干
,所以学多点骚操作很有必要
1 | # 通过上面解析出来的ip |
- 安装个救命的网络包
1 | apt-get install network-manager |
因为安装omv会导致无线网卡直接关闭,而树莓派5很特殊,用平常的改文件没办法让它连上wifi的,这个安装包里面有个叫nmtui
的命令超级好用!
我的树莓派是双网卡连接模式,所以我知道这个坑!使用单网卡而且用的是网口当我没说
一键安装脚本
1 | wget -O - https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/installScript/master/install | sudo bash |
面板设置
- 账号:admin
- 密码:openmediavault
特殊待遇
我这边有特殊需求,要手机设备和内网设备可以连接nas,其他全部拒绝访问nas,所以有了这个配置
- 除了192.168.0.0/24和192.168.200.108该ip设备,其他一并拒绝,有密码也没用
- samba我还是很不放心的,虽然已经开启smb3.0,但是我曾经用其他舍友的电脑直接无密码登进去了,就让我对nas设备产生了安全顾虑!
- 后面有新的安全内容也会进行添加
1 | root@R5:~# vim /etc/samba/smb.conf |
k3s
1 | sudo nano /boot/cmdline.txt |
1 | cgroup_memory=1 cgroup_enable=memory |
ansible
esxi
ESXI 挂载U盘
先进ssh里,这个时候别插u盘
1 | # 执行下面两条命令 |
插入 USB 硬盘
1 | # 执行就能看到设备 |
在WEB就能这样看
raspberry python 控 GPIO
python添加gpiozero库
raspberry python 与树莓派硬件交互
python添加psutil库、OS库、commands库、subprocess库