根底指令和服务部分
布景故事:呜呼哀哉,我由于没有趁着第一波危机从学校逃跑,不幸地阳了,没有精力完结实验报告和复制文件,只好在家长途衔接到学校的电脑上完结作业,他需求做一些操作让他的台机能在家中被衔接。
-
我已有的知识:
- Linux根底服务指令:
systemctl
,crontab
…… - 网页搜索能力
- Linux根底服务指令:
-
我已有的设备:
- 台式电脑:在宿舍,运转Windows11和Ubuntu22.04.1
- 香橙派3:在宿舍,运转Ubuntu18.04
- 笔记本:带回宿舍用以衔接
-
我需求做的:
- 让香橙派能够唤醒台式电脑
- 保持宿舍需求每时每刻发包的电信网络不断网
- 让这两台设备能够被远控
-
解决方案:
- 唤醒问题:运用戏法封包的办法让主机支撑WakeOnLan
- 联网问题:运用crontab守时使命,让香橙派每一分钟给路由器发包,保证联网保活的包不断
- 长途衔接问题:运用内网透传东西
服务构建
保活:Crontab守时指令服务
数据包流量分析
布景故事:由于电信网络糟糕的设计,每次重启路由器时(即断电后第二天),都需求从头从头验证,所以有必要进行保活处理。
-
首先验证网络登录办法,运用BurpSuite对登录网络进行抓包:(由于现在是长途拜访,就改包越权拜访到主页演示一下orz,一旦登出我两台设备都没网了害得等服务主动发包帮我续上)
- 终究抓到的包为:
-
稍稍修正为curl指令的语法并写成能够直接运转的脚本办法:
curl指令语法:curl指令用法_追梦菜鸟的博客-CSDN博客_curl语法
根底语法为:curl [options…] ,主要有:
- -H/–header LINE (H) # 增加恳求头, 可增加多个 -H 参数,参数格式: -H “NAME: VALUE”
- -o/–output FILE FILE # 把呼应内容输出到指定文件
- -F/–form CONTENT (H) # 参阅格式: -F “name1=@/filepath” -F “name2=stringvalue”
- -b/–cookie STRING/FILE (H) *# 恳求头的 Cookie 字段, 以字符串的办法供给,*或从指定 cookie 文件中读取
- -d/–data DATA (H)
-
这时候能够运用终端运转脚本进行验证:
-
下面把脚本运用scp指令复制给香橙派之后进行守时使命的书写:
SCP指令用法为:Linux scp指令 | 菜鸟教程 (runoob.com)
- 本地到长途:scp local_file remote_username@remote_ip:remote_file
- 长途到本地:scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
Crontab保活
网上一般的都是比较老的
/etc/cron
和直接敞开crond服务,可是ubuntu升级到systemctl下的体系过程较少,这儿随意试一下成功了。
-
我这儿ubuntu自带了crontab的指令。
-
调用cron -e挑选vim进行服务文件的编辑。cron的格式为:
在以上各个字段中,还能够运用以下特殊字符:
- 星号(*):代表一切可能的值,例如month字段假如是星号,则表明在满足其它字段的限制条件后每月都履行该指令操作。
- 逗号(,):能够用逗号离隔的值指定一个列表规模,例如,“1,2,5,7,8,9”
- 中杠(-):能够用整数之间的中杠表明一个整数规模,例如“2-6”表明“2,3,4,5,6”
- 正斜线(/):能够用正斜线指守时刻的距离频率,例如“0-23/2”表明每两小时履行一次。同时正斜线能够和星号一起运用,例如*/10,假如用在minute字段,表明每十分钟履行一次。
-
crontab -l
列出cron服务内容:在每分钟履行一次curl的操作,同时在每小时删去一次日志文件。cron傍边有必要运用绝对路径,否则会运转失败。- network.sh内容:将内容存入tmp.txt日志傍边。
-
接下来使能服务,留意ubuntu中cron的服务不是
crond
,而是cron.service
systemctl根本的服务操作:
$ systemctl start <docker>.service //发动 $ systemctl restart <docker>.service //重启 $ systemctl stop <docker>.service //中止 $ systemctl reload <docker>.service //从头加载 $ systemctl enable <docker>.service //参加开机发动 $ systemctl disable <docker>.service //取消开机发动
systemctl装备详解:
具体解说systemctl(附常用指令) – 掘金 ()
-
能够观察tmp.txt日志文件看看是不是真的curl了,也能够运用
systemctl status <service>
进行日志检查: -
能够看到现已成功了。
长途登录敞开
由于我的路由器时电信送的廉价玩意,办理后台特别烂,所以只要DHCP的局域网IP分配,十分伤心。无法装备todesk的长途唤醒,只能运用ubuntu下的ethtools东西进行相关装备。
所以我大概是简体中文ubuntu22唤醒第一人了?
国内互联网上的资料十分老,在服务办理这一块用的仍是古老的rc.local
办法,而这种办法在ubuntu22傍边根本就没有被使能,所以有必要仍是运用systemd的办法进行服务的追加和保活。
被唤醒主机
-
装置
ethtool
软件包:sudo apt install ethtool -y
-
更改并检查网卡状况,将网卡的在线唤醒形式敞开:
sudo ethtool -s enp5s0 wol g
- 运用
ethtool enp5s0
检查网卡状况,Wake-on:这一项为g表明现已敞开了唤醒:
- 运用
-
可是由于Linux万物皆文件的特性,在重启时,网卡的装备文件会被掩盖,因此选用systemd的办法,编写体系服务完结主动唤醒网卡的操作:
-
运用
--preserve-env
操作进行提权,直接编写systemctl服务:sudo --preserve-env systemctl edit --force --full wol-enable.service
[Unit] # 服务自身的名字和说明 Description=Enable Wake-up on LAN [Service] Type=oneshot # 只履行一项使命、随后立即退出的服务 ExecStart=/sbin/ethtool -s enp2s0 wol g # 履行的指令,留意ethtool的位置是在sbin下的,泪目 [Install] WantedBy=basic.target # 挂载在basic.target下,优先级有必要比我用户发动高
-
具体装备2.0:linux systemctl 指令 —— 阮一峰 – 七脉 – 博客园 (cnblogs.com)
-
唤醒机器
-
查询到被唤醒机器的mac地址之后,运用戏法封包即可唤醒,也是装置个
wakeonlan
软件包就行。 -
能够看到ubuntu的软件包是全局发送的,不像windows下某些解决方案有必要固定ip。
- 个人学了根本sdn操控器之后的理解大概是路由会记住主机的mac表然后发送给对应主机。
-
为了配合简洁运用写了个flask服务:
@app.route('/', methods=['GET']) def hello_world(): return ''' <form action="/" method="post"> <input type="submit" value="SendRemoteRebootMessage"> </form> ''' @app.route('/', methods=['POST']) def post(): import subprocess subprocess.call('./a.sh') return ''' Successfully Reboot from remote <form action="/" method="post"> <input type="submit" value="Resend Message"> </form> '''
- 对应服务程序:由于flask这个pip包的原因,不能运用
nohup
和&
在后台运转,所以状况一直是loaded,可是日志是没有问题的。 - 来点cpolar透传5000端口之后的姿态:
- 对应服务程序:由于flask这个pip包的原因,不能运用
外网透传和远控
- 透传运用的是cpolar白嫖的三个通道,装备办法在文档里面很具体:www.cpolar.com/docs,还有
9200端口
的webui,根本上很无脑: - 操控方面运用的是
toDesk
,十分流畅,也是对Linux支撑较为友好。
后续运用
双体系切换
电脑的默许引导加载程序和办理器由于装置了Ubuntu的缘故被设置成grub2,因此其实关于引导的修正便是关于grub2发动项的修正。
Grub2在UbuntuWiki上的介绍:↓简单的部分中文翻译和理解:这儿为软件包相关装备,不涉及到grub操控台
的装备
Grub2介绍: 是引导加载和办理东西,在进入的时候会供给界面等候用户挑选,或许将操控交给体系内核(能够是恣意被辨认到的体系内核)。
文件结构:
/etc/grub.d
(文件夹):Grub2脚本
/boot/grub
(文件夹):Grub2模块和菜单文件(grub.cfg
)
/etc/default/grub
:(装备文件)用户主要修正经过这个文件
- 运用装备更改:修正
grub.d
和/etc/default/grub
后,运转update-grub
,来修正/boot/grub
傍边的内容。
Linux切换到Windows
修正grub装备文件,而且运转sudo update-grub
即可。
Windows下切换回Linux体系
-
让Windows正确辨认到Linux的文件体系而且能进行修正
- 在网上连续找了一些能辨认ext4文件体系的软件可是都作用不佳,终究找到Linux File Systems for Windows | Paragon Software (paragon-software.com)能够将Linux盘挂在到Windows体系文件办理器傍边
-
从
grub
的描绘傍边可知,grub
在进行发动引导时,运用的是/boot/grub
傍边的模块和菜单文件。直接修正/boot/grub/grub.cfg
菜单文件,将默许发动选项移到windows11
对应的发动菜单栏目即可。
意外失掉衔接之后怎么办
-
此刻局域网仍是连通的,运用nmap扫描当前网段的内容。
-
运用cpolar长途登录到香橙派中。
-
运用指令:
nmap 192.168.101.1-10
扫描10个ip,一般情况下dhcp会将PC分配在1-10傍边。由于我都敞开了ssh服务,能够经过香橙派作为中继衔接主机的ssh服务 -
此刻pc被分配在192.168.101.6上。ssh衔接之后重启服务或许重启。
-
扫描时能够增加如下选项:
-
Windows假如无法扫描到,增加:
-Pn
制止ping拜访确认主机是否存在,强力联通;扫描速度太慢,给予sudo权限之后增加
-sS
进行扫描,更改衔接办法,不需求经过TCP三次握手;或许挑选经过TCP三次握手可是修正timeout超时时刻,如:
--host-timeout 10
-
关于为什么咕咕了那么久就上传了这个
由于实在是太纯阳了。