根底指令和服务部分

布景故事:呜呼哀哉,我由于没有趁着第一波危机从学校逃跑,不幸地阳了,没有精力完结实验报告和复制文件,只好在家长途衔接到学校的电脑上完结作业,他需求做一些操作让他的台机能在家中被衔接。

  • 我已有的知识:

    • Linux根底服务指令:systemctl,crontab……
    • 网页搜索能力
  • 我已有的设备:

    • 台式电脑:在宿舍,运转Windows11和Ubuntu22.04.1
    • 香橙派3:在宿舍,运转Ubuntu18.04
    • 笔记本:带回宿舍用以衔接
  • 我需求做的:

    • 让香橙派能够唤醒台式电脑
    • 保持宿舍需求每时每刻发包的电信网络不断网
    • 让这两台设备能够被远控
  • 解决方案:

    • 唤醒问题:运用戏法封包的办法让主机支撑WakeOnLan
    • 联网问题:运用crontab守时使命,让香橙派每一分钟给路由器发包,保证联网保活的包不断
    • 长途衔接问题:运用内网透传东西

服务构建

保活:Crontab守时指令服务

数据包流量分析

布景故事:由于电信网络糟糕的设计,每次重启路由器时(即断电后第二天),都需求从头从头验证,所以有必要进行保活处理。

  1. 首先验证网络登录办法,运用BurpSuite对登录网络进行抓包:(由于现在是长途拜访,就改包越权拜访到主页演示一下orz,一旦登出我两台设备都没网了害得等服务主动发包帮我续上)

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    1. 终究抓到的包为:
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  2. 稍稍修正为curl指令的语法并写成能够直接运转的脚本办法:

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    curl指令语法:curl指令用法_追梦菜鸟的博客-CSDN博客_curl语法

    根底语法为:curl [options…] ,主要有:

    1. -H/–header LINE (H) # 增加恳求头, 可增加多个 -H 参数,参数格式: -H “NAME: VALUE”
    2. -o/–output FILE FILE # 把呼应内容输出到指定文件
    3. -F/–form CONTENT (H) # 参阅格式: -F “name1=@/filepath” -F “name2=stringvalue”
    4. -b/–cookie STRING/FILE (H) *# 恳求头的 Cookie 字段, 以字符串的办法供给,*或从指定 cookie 文件中读取
    5. -d/–data DATA (H)
  3. 这时候能够运用终端运转脚本进行验证:

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

  4. 下面把脚本运用scp指令复制给香橙派之后进行守时使命的书写:

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    SCP指令用法为:Linux scp指令 | 菜鸟教程 (runoob.com)

    1. 本地到长途:scp local_file remote_username@remote_ip:remote_file
    2. 长途到本地:scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3

Crontab保活

网上一般的都是比较老的/etc/cron和直接敞开crond服务,可是ubuntu升级到systemctl下的体系过程较少,这儿随意试一下成功了。

  1. 我这儿ubuntu自带了crontab的指令。

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

  2. 调用cron -e挑选vim进行服务文件的编辑。cron的格式为:

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    在以上各个字段中,还能够运用以下特殊字符:

    • 星号(*):代表一切可能的值,例如month字段假如是星号,则表明在满足其它字段的限制条件后每月都履行该指令操作。
    • 逗号(,):能够用逗号离隔的值指定一个列表规模,例如,“1,2,5,7,8,9”
    • 中杠(-):能够用整数之间的中杠表明一个整数规模,例如“2-6”表明“2,3,4,5,6”
    • 正斜线(/):能够用正斜线指守时刻的距离频率,例如“0-23/2”表明每两小时履行一次。同时正斜线能够和星号一起运用,例如*/10,假如用在minute字段,表明每十分钟履行一次。
  3. crontab -l列出cron服务内容:在每分钟履行一次curl的操作,同时在每小时删去一次日志文件。cron傍边有必要运用绝对路径,否则会运转失败。

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    1. network.sh内容:将内容存入tmp.txt日志傍边。
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  4. 接下来使能服务,留意ubuntu中cron的服务不是crond,而是cron.service

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

    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(附常用指令) – 掘金 ()

  5. 能够观察tmp.txt日志文件看看是不是真的curl了,也能够运用systemctl status <service>进行日志检查:

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

  6. 能够看到现已成功了。

长途登录敞开

由于我的路由器时电信送的廉价玩意,办理后台特别烂,所以只要DHCP的局域网IP分配,十分伤心。无法装备todesk的长途唤醒,只能运用ubuntu下的ethtools东西进行相关装备。

所以我大概是简体中文ubuntu22唤醒第一人了?

国内互联网上的资料十分老,在服务办理这一块用的仍是古老的rc.local办法,而这种办法在ubuntu22傍边根本就没有被使能,所以有必要仍是运用systemd的办法进行服务的追加和保活。

被唤醒主机

  1. 装置ethtool软件包:sudo apt install ethtool -y

  2. 更改并检查网卡状况,将网卡的在线唤醒形式敞开:sudo ethtool -s enp5s0 wol g

    1. 运用ethtool enp5s0检查网卡状况,Wake-on:这一项为g表明现已敞开了唤醒:
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  3. 可是由于Linux万物皆文件的特性,在重启时,网卡的装备文件会被掩盖,因此选用systemd的办法,编写体系服务完结主动唤醒网卡的操作:

    1. 运用--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. 具体装备2.0:linux systemctl 指令 —— 阮一峰 – 七脉 – 博客园 (cnblogs.com)

唤醒机器

  1. 查询到被唤醒机器的mac地址之后,运用戏法封包即可唤醒,也是装置个wakeonlan软件包就行。

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

  2. 能够看到ubuntu的软件包是全局发送的,不像windows下某些解决方案有必要固定ip。

    1. 个人学了根本sdn操控器之后的理解大概是路由会记住主机的mac表然后发送给对应主机。
  3. 为了配合简洁运用写了个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>
       '''
    
    1. 对应服务程序:由于flask这个pip包的原因,不能运用nohup&在后台运转,所以状况一直是loaded,可是日志是没有问题的。
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
    2. 来点cpolar透传5000端口之后的姿态:
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

外网透传和远控

  1. 透传运用的是cpolar白嫖的三个通道,装备办法在文档里面很具体:www.cpolar.com/docs,还有9200端口的webui,根本上很无脑:
    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  2. 操控方面运用的是toDesk,十分流畅,也是对Linux支撑较为友好。
    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

后续运用

双体系切换

电脑的默许引导加载程序和办理器由于装置了Ubuntu的缘故被设置成grub2,因此其实关于引导的修正便是关于grub2发动项的修正。

Grub2在UbuntuWiki上的介绍:↓简单的部分中文翻译和理解:这儿为软件包相关装备,不涉及到grub操控台的装备

  1. Grub2介绍: 是引导加载和办理东西,在进入的时候会供给界面等候用户挑选,或许将操控交给体系内核(能够是恣意被辨认到的体系内核)。

  2. 文件结构:

    1. /etc/grub.d(文件夹):Grub2脚本

    2. /boot/grub (文件夹):Grub2模块和菜单文件(grub.cfg

    3. /etc/default/grub :(装备文件)用户主要修正经过这个文件

      1. 运用装备更改:修正grub.d/etc/default/grub后,运转update-grub,来修正/boot/grub傍边的内容。

Linux切换到Windows

修正grub装备文件,而且运转sudo update-grub即可。

【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

Windows下切换回Linux体系

  1. 让Windows正确辨认到Linux的文件体系而且能进行修正

    1. 在网上连续找了一些能辨认ext4文件体系的软件可是都作用不佳,终究找到Linux File Systems for Windows | Paragon Software (paragon-software.com)能够将Linux盘挂在到Windows体系文件办理器傍边
      【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。
  2. grub的描绘傍边可知,grub在进行发动引导时,运用的是/boot/grub傍边的模块和菜单文件。直接修正/boot/grub/grub.cfg菜单文件,将默许发动选项移到windows11对应的发动菜单栏目即可。

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

意外失掉衔接之后怎么办

  1. 此刻局域网仍是连通的,运用nmap扫描当前网段的内容。

  2. 运用cpolar长途登录到香橙派中。

  3. 运用指令:nmap 192.168.101.1-10 扫描10个ip,一般情况下dhcp会将PC分配在1-10傍边。由于我都敞开了ssh服务,能够经过香橙派作为中继衔接主机的ssh服务

    【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。

  4. 此刻pc被分配在192.168.101.6上。ssh衔接之后重启服务或许重启。

  5. 扫描时能够增加如下选项:

    1. Windows假如无法扫描到,增加:-Pn 制止ping拜访确认主机是否存在,强力联通;

      扫描速度太慢,给予sudo权限之后增加-sS进行扫描,更改衔接办法,不需求经过TCP三次握手;

      或许挑选经过TCP三次握手可是修正timeout超时时刻,如:--host-timeout 10

关于为什么咕咕了那么久就上传了这个

由于实在是太纯阳了。

【如何在自己的宿舍有一台幽灵主机?】关于如何合理配置外网透穿和进行System服务的编写、安装,同时添加局域网唤醒等的一次实践。