【学习笔记】Ubuntu双系统+搭建个人服务器

Ubuntu双系统+搭建个人服务器

  • 前言
  • 1. Ubuntu+Win双系统
    • 1.1 制作U盘启动盘
    • 1.2 系统分盘
    • 1.3 安装Ubuntu系统
  • 2. 搭建个人服务器
    • 2.1 设置root
    • 2.2 配置ssh
    • 2.3 向日葵连接
  • 3. 内网穿透
    • 3.1 实现流程
    • 3.2 zerotier
  • 3. 总结

前言

前段时间整了一套主机,3060ti+intel 11600F,终于不用在轻薄本上跑机器学习代码了,也不用因为服务器价格昂贵而发愁了。但是这些仅限在家中使用,一旦外出或者返校,这套主机就在家里吃灰吧,想想一年在家不超过100天时间,买来实在是性价比不高,但是我早有准备,曾有幸在某站上刷过将自家不用的机子改装成服务器的例子,这正好激发了我的兴致,所以说干就干,下面将从原理和实操角度来回顾我装机过程~


1. Ubuntu+Win双系统

PS:为什么是双系统,我想热爱游戏的朋友不会陌生,Win娱乐生产力,Ubuntu学习生产力,不耽误!
由于机子买来自带Win11系统,所以只用准备Ubuntu的安装。Ubuntu系统选用的是20.04版本,2202年了,20年的版本还是稳定可靠的(可以免费安全维护至2025年)。首先,在Ubuntu官网下载系统镜像,由于机子配置还是挺高的,鲁大师跑分能上150万+,所以果断选择了桌面版(就是任性),当然配置不足的还是选择server版吧。

1.1 制作U盘启动盘

在上文中提到下载系统镜像,如下所示:
在这里插入图片描述
下载制作U盘启动盘软件PowerISO
【学习笔记】Ubuntu双系统+搭建个人服务器_第1张图片
准备一个4G以上的U盘(最好是空U盘,因为制作启动盘时会格式化),注意备份,接着选中工具,制作U盘启动盘。
【学习笔记】Ubuntu双系统+搭建个人服务器_第2张图片
【学习笔记】Ubuntu双系统+搭建个人服务器_第3张图片
最后选定镜像文件,确定目标U盘,点击开始即可,这样Ubuntu启动U盘就制作完成。

1.2 系统分盘

我们必须分一定的空闲空间给Ubuntu系统运行,所以我们需要在Win系统上进行分盘。分盘步骤如下:

  1. 搜索计算机管理,打开磁盘管理。【学习笔记】Ubuntu双系统+搭建个人服务器_第4张图片

  2. 在想要压缩的磁盘上右键选择“压缩卷”,修改需要压缩的空间,一般大于40G都是够用的。压缩完成后就会出现未分配空间。【学习笔记】Ubuntu双系统+搭建个人服务器_第5张图片

  3. 选择未分配区域,右键新建卷,按照要求一步步走,然后再将新建的卷删除,就变成可用空间了。

其实这里我仍然是未分配空间,但是参考别的网上教程,都是会变成可用空间,不过就算这样,之后的系统还是能安装成功的(不知道是不是win11系统问题)。注意系统硬盘分区有两种方式,一种是bios+MBR,一种是uefi+GPT,后者的可以直接分盘,而前者会在一些特殊情况出现问题,具体可以自行百度。

1.3 安装Ubuntu系统

安装之前,要设置BIOS,这个不同主机会有不同的差异,主要以下几点:

  • 关闭快速启动。选择控制面板-电源选项-选择电源按钮的功能,选择“更改当前不可用的设置”,取消选中“启用快速启动”,不然电脑又默认直接进入Win11系统了。
  • 修改U盘为启动时的首选项。也有的电脑是选择关闭安全模式即可。

我买的是联想刃7000k主机,有可视化界面,所以这一点就友好很多。首先关机,插入启动盘,疯狂按f12进入可视化界面,选择U盘启动,这样就直接进入Ubuntu的安装界面了。一些简单的建议操作如下:

  1. 选择中文简体,点击安装Ubuntu。
  2. 键盘布局默认Chinese,直接继续。
  3. 更新和其他软件部分按需选择,我这里直接正常安装。
  4. 安装类型选择其他选项,因为我们需要自己手动分区。

接下来就是安装的重中之重了,创建分区。选中空闲分区点击加号即可设置分区。分区方案有多种,网上和各类教程书上都有详细的方案。我选择的是比较简单的分区方案,共4个分区。

  • "/boot"分区,200~300MB,我分配了300MB,存放操作系统启动引导程序,需要用它来启动ubuntu系统。
  • "/"分区,15G~20G,我分配了20G,相当于windows的c盘,主要存放系统文件。
  • "/home"分区,相当于Win中除了c盘的其他盘,可以存放安装包、用户数据等等。
  • swap分区,swap分区的意义在于当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用,而这些释放的空间就暂存在swap空间中,需要使用的时候再恢复,相当于虚拟内存的作用,以空间换时间。建议大小稍大于电脑内存,这里我分配了20G。


PS:由于安装的时候未截图,所以使用了网图,图片的来源我会在文末链接。

剩下的就是选择区域和填写用户名和密码,等待安装,最后重启,拔掉U盘,选择Ubuntu启动,这样Ubuntu系统就安装完毕了。
【学习笔记】Ubuntu双系统+搭建个人服务器_第6张图片

2. 搭建个人服务器

2.1 设置root

使用Ubuntu第一步一定要设置root,因为很多操作需要sudo的权限才能操作。

  1. 打开终端,输入sudo passwd root
  2. 在下一行输入你的密码。
  3. 再次输入,出现passwd: password updated successfully字样,表示root密码设置成功。

2.2 配置ssh

服务器远程连接一般都是通过ssh进行连接的,那么就得在Ubuntu上安装ssh并设置开机自启,这样就可以一直保持对服务器的连接了。

  • 安装命令:sudo apt-get install openssh-server
  • 确认sshserver是否启动:ps -e|grep ssh
  • 修改端口号:sudo vi /etc/ssh/sshd_config,找到# Port 22,去掉注释改成一个五位数的端口(防止端口扫描)。
  • 配置完成后重启:sudo /etc/init.d/ssh restart
  • 设置开机自启动: sudo systemctl enable ssh

这样,ssh就配置成功了。

2.3 向日葵连接

在远程连接的路上还是有不少选择的,当然我在第一步就踩了坑,这也是由于我计算机网络知识遗忘了不少,现在终于拾起,倍感惭愧。一开始我是知道可以从互联网服务商那里要求公网IP的,但是一个残酷的现实是,我的房间里没有网线,连接网络必须使用WIFI,这就涉及到NAT,网络地址转换,我的服务器在我家路由器的内网里,外界可能只知道我家的路由器(甚至不知道,后面会有解释),而不知道服务器的存在,那么外界的连接来带家中路由器就戛然而止了,它根本无法连接到我的服务器。那么该如何解决呢?
这里我还想提一嘴在一开始我犯的一个愚蠢的错误。我在Ubuntu上输入ifconfig,根据查询到的IP地址用MobaXterm进行连接,很顺利,一下子就连接上了,我当时还在想要什么公网IP,这样不就轻轻松松连上了!很快我就意识到了错误,我无意发现IP地址的开头是192.168开头,查询了下发现属于C类私网地址,并且我的笔记本也是这个开头的IP。二者在同一私网内,自然能连接起来,搭建服务器的初衷,就是在不同私网的条件下使用,所以这个愚蠢的错误差点让我白折腾一通。
那么向日葵连接,是一个付费的远程的连接工具,当然并不是所有服务都付费,免费的服务已经够我使用了,包括桌面控制、桌面查看和远程文件(SSH需要付费,如何解决看下一节),并且我只要注册好一个账号,让所有的设备都添加到设备列表中,设置开机自启自动连接账号,这样远程操控不要太舒服。
【学习笔记】Ubuntu双系统+搭建个人服务器_第7张图片
这里附上Ubuntu中向日葵的安装:

  1. 在向日葵官网下载对应版本。
  2. 切入安装目录,输入sudo dpkg -i XXX,XXX为对应安装包的名称。

安装好后还要设置开机自启,在终端输入gnome-session-properties,会出现如下窗口
【学习笔记】Ubuntu双系统+搭建个人服务器_第8张图片
命令中输入向日葵可执行文件的路径即可。

但是向日葵也经常不稳定,比如开机虽然自启,但是自动登录会经常失败,需要刷新一下才行,如果我是远程控制,那么还需要家里有人给我点一下刷新,这么麻烦的事情,还不如拉一条网线呢。这个问题困惑了我很久,一直不知道如何解决,直到今天看到了内网穿透的概念,一瞬间我豁然开朗。

3. 内网穿透

起因还是看了科技宅小明在某站发布的视频,在其中他提及了内网穿透的概念,我特地百度了一下,内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。这个好,我现在遇到的问题,不就是服务器受到NAT设备屏蔽无法远程连接嘛,那么该如何做呢?(NAT的原理请参考计算机网络大黑书)

3.1 实现流程

百度百科上是这样介绍的:

  1. 两个需要通过内网穿透进行通讯的内网客户端,分别将自己的外网收发接口注册给一个具有公网ip的中转服务器。【学习笔记】Ubuntu双系统+搭建个人服务器_第9张图片

  2. 中转服务器将两个客户端注册的收发接口分别告知给对端。
    【学习笔记】Ubuntu双系统+搭建个人服务器_第10张图片

  3. 一个内网客户端使自己的接收端口作为源地址,向对端的发送端口发送一个udp数据包,这个数据包称为打洞包。发送过这个打洞包后,可以在这个内网的出口路由器上产生一条NAT记录,令后续从对端发送端口发来的数据包都不被丢弃, 而是转发给相应的内网客户端的指定端口。
    【学习笔记】Ubuntu双系统+搭建个人服务器_第11张图片

  4. 发送过打洞包后,对端发送至本端路由器指定接收端口的数据包,就会根据NAT记录转发至本端的内网服务器接收端口,从而实现了内网服务器接收外网数据包的功能。

  5. 另一个内网服务器同样执行上述步骤 (3) 、 (4), 即可实现两端内网服务器相互收发音频数据包的功能。

这个过程听起来很复杂,我解释一下,本质就是两个内网客户端在外网服务器上注册,互相识别(本质是内网所在的路由器互相识别NAT记录),然后进行通信。这有点像探探的喜欢功能,二者只有互相喜欢(指向相同的中转服务器),才能够了解到互相的信息,然后才能够互加微信进行聊天。既然原理已经了解了,那么接下来就是用轮子的问题(PS:向日葵也是基于这个原理实现的)。

3.2 zerotier

这里使用zerotier实现内网穿透。

  1. 登录zerotier官网注册账号。

  2. 进入后台创建新一个虚拟局域网。【学习笔记】Ubuntu双系统+搭建个人服务器_第12张图片

  3. 进入虚拟局域网保存好网络ID。【学习笔记】Ubuntu双系统+搭建个人服务器_第13张图片

  4. Ubuntu安装zerotier的命令:sudo apt-get update ; sudo apt-get install curl ; curl -s https://install.zerotier.com | sudo bash。并加入局域网中:sudo zerotier-cli join 命令空格网络ID

  5. 轻薄本这边也安装zerotier软件。【学习笔记】Ubuntu双系统+搭建个人服务器_第14张图片

  6. 在网页中允许新设备加入局域网。【学习笔记】Ubuntu双系统+搭建个人服务器_第15张图片

  7. 最后,ifconfig查看zerotier地址,在MobaXterm上连接改地址即可。【学习笔记】Ubuntu双系统+搭建个人服务器_第16张图片

这样,通过内网穿透技术就实现了外网访问内网的服务器了,我的个人服务器也就搭建完成。

【学习笔记】Ubuntu双系统+搭建个人服务器_第17张图片

3. 总结

科技宅小明在视频中说,由于IPv4端口号不够用的问题,所以才产生NAT,又由于NAT都不够用的问题,所以产生大内网,即NAT套娃,所以家用路由器的IP可能还是大内网中的一个私有地址,整个大内网甚至覆盖整个小区,如果使用IPv6的话,这样的问题就不复存在了,因为IPv6地址多的用不完(地球上每一粒沙子都可以拥有一个IP),但是由于路由器的限制,导致很多还是只能用IPv4地址,这也就是我不得不通过各种方法实现服务器搭建的原因。
总的来说,这是一篇理论+操作的博客,嫌麻烦的同学可以直接略过理论部分,直接上手,大概率是不会出错的(可能几年后就不好说了)。希望对大家有所帮助,如果有疑惑或者文章部分不严谨的地方,还望批评指正。

参考链接

https://blog.csdn.net/qq_45488453/article/details/107783752
https://www.bilibili.com/video/BV1Qq4y1w7F5
https://blog.csdn.net/weixin_39824834/article/details/111534767
https://blog.csdn.net/qq_41057206/article/details/80534194
https://blog.csdn.net/weixin_40543283/article/details/84728299

你可能感兴趣的:(笔记,服务器,ubuntu,双系统,zerotier,内网穿透)