众所周知,Linux是一个非常强大的操作系统。即使它不像 Windows 或 macOS 那样受欢迎,它的重要性和功能也不是开玩笑的。哎呀,它甚至可能是有史以来最重要的操作系统(取决于你问的人),这是有充分理由的。
请看上面的可视化数据。您可以清楚地看到,我们在互联网上花费了很多时间。这意味着,我们正在与世界各地的大量服务器进行交互。猜猜这些服务器运行的是什么操作系统?Linux的!他们都在使用它的网络工具。
-
恶意软件开发
-
-
-
windows网络安全防火墙与虚拟网卡(更新完成)
-
-
windows文件过滤(更新完成)
-
-
USB过滤(更新完成)
-
-
游戏安全(更新中)
-
-
ios逆向
-
-
windbg
-
-
还有很多免费教程(限学员)
-
-
-
更多详细内容添加作者微信
-
-
好吧,基本上我要说的是,Linux 网络非常重要。特别是如果你是一个开发人员。
在这个由 4 部分组成的系列中,我将尝试 ELI5 一些基本的网络意识形态、Linux 网络、网络工具、配置。最后一部分将介绍常见用例。我们将使用从本文中获得的信息一起在云上部署 Minecraft 和 HTTP 服务器。
请注意,本文不是关于 Linux 网络及其内部结构的高级主题。对于那些对网络感到好奇的人来说,这只是一个 ELI5
顶级域名;
Networking: Communication that happens between two or more individuals.
Networking (computers): Computers talking to each other.
Network: A collection of computers that are connected to each other
Local Networks: A type of network (small size & distance) (ex. home)
Private Networks: A type of network (medium/large size & distance) (ex. company)
Public Networks: A type of network (large size & open to everyone) (ex. internet)
Network Interface: Hardware device that connects computers to network
lshw: Command for displaying hardware devices in Linux (ex. network)
ifconfig: Command for configuring network interfaces in Linux (legacy)
ip: Command for configuring network interfaces and more in Linux (modern)
设置
由于网络需要多个设备相互连接,因此我设置了一个示例网络。这样我就可以提供更好的视觉示例,并在这段旅程中提供帮助。
我有两台本地计算机通过我的家庭路由器相互连接。一台机器是运行 macOS Ventura 13.1 的 Apple Macbook Pro,另一台是我忠实的 Raspberry Pi 4b,运行 Ubuntu Server 22.04。
我还有一台运行 Ubuntu Server 22.04 的云机器,与我的 Raspberry 相同。出于隐私和安全考虑,我隐藏了它的公共 IP 地址。
在整个旅程中,我将展示使用这些机器的示例。最后,我们将一起在我的云服务器上使用 Flask 部署一个 Minecraft 服务器和一个基本的 HTTP 服务器。
什么是网络?
就像在人际关系中一样,网络基本上意味着与他人交谈。它是发生在一个或多个人之间的交流/关系。然而,在我们的例子中,不是人类,而是计算机在进行交谈和交流。
当计算机相互通信时,我们称之为“网络”。当许多计算机聚集在一起进行通信时,它们就会形成一个“网络”。我们可以将“网络”比作群聊。您可以拥有家庭组、学校组或更大的 Discord 游戏组。
现在,我们有不同类型的网络,它们具有不同的规模和目的。最受欢迎的是:本地网络、专用网络和公共网络。让我们简要回顾一下它们。
本地网络
这些类型的网络规模相对较小,由彼此距离很近的设备组成。例如,连接笔记本电脑、手机、电视、打印机、Amazon Alexa 等的家庭网络。这些设备可以通过路由器和交换机等设备相互连接,形成所谓的“本地网络”。
有时,“本地网络”也称为局域网 (LAN)。
当您和您的朋友聚在一起参加局域网派对玩《使命召唤》时,您实际上是在使用交换机和路由器等设备形成本地网络。
专用网络
假设你有一家公司。你有大量的计算机和使用它们的人。作为一个好的CEO,你要把你的员工分成不同的部门,这样工程师就不做任何人力资源工作,人力资源人员也不做工程工作。您还希望将他们的计算机分开,以便只有工程师的计算机才能相互通信。这是有道理的,对吧?
现在,我们可以在工程师内部形成一个本地网络,并为人力资源人员形成另一个本地网络。然而,这一次,作为首席执行官,你想从你自己的电脑访问这些网络中的每一个。而且您还希望其中一些网络可以访问互联网,而另一些则不能。好吧,这里的事情变得有点复杂了。
解决方案是什么?专用网络。
专用网络基本上是相互连接的多个本地网络。这些类型的网络主要用于组织、公司和学校。他们尽可能地保持网络隔离(尤其是与互联网隔离),这样普通的乔就无法访问它。因此,使这种类型的网络成为“私有”网络。
考虑专用网络的另一种方式是,它们基本上是一个巨大的本地网络。
公网
想一个地方,世界各地的每个人都可以聚在一起互相交谈。当然,我们不能在物理上这样做,但我们可以使用互联网!当我们在 Reddit 上分享帖子时,世界各地的每个人都可以看到它,对吧?因此,我们基本上与每个人联系在一起。我们可以通过互联网相互交流。
公共网络是任何人都可以随时加入的大型网络。公共网络最大的例子是互联网。我们使用的几乎所有东西(iMessage、守望先锋、Reddit、Instagram)都使用互联网的公共网络。这个网络与其他网络的区别在于它的公开性:任何人都可以加入这个网络,它是公开的。
与本地和专用网络相比,公共网络非常特殊。既然它们是公开的,就必须有组织和政府来帮助维护它。否则,互联网可能会变得混乱!
维护和“构建”公共互联网的组织被称为互联网服务提供商 (ISP)。每个 ISP 都负责构建新的网络、光纤电缆和巨型接入点 (5G LTE)。在这样做的过程中,他们正在扩大互联网(有史以来最大的公共网络)。
当然,他们不是在为慈善事业建立一个公共网络。政府允许他们到处建造电缆、网络建筑和 LTE 天线。哦,你还给他们钱来使用他们的网络......毕竟,互联网不是免费的。
网络接口
好吧,很好,我们有所有这些很酷的网络。但是我们怎样才能加入他们呢?因此,我们可以与帮派一起在局域网上玩 Minecraft。
首先,我们需要一个称为“网络接口”的物理网络设备。这些设备允许我们连接到物理网络。你的iPhone有一个,你的Xbox有一个,你的笔记本电脑可能不止一个。
如果您在亚马逊上搜索“网络接口”,您可以看到所有不同的设备。每个网络接口都有其优点和缺点。例如;一个可能是无线的,但速度很慢,另一个是有线的,但速度很快。
大多数现代计算机/设备都有内置网络设备,例如:Wi-Fi、以太网 CAT6 和 Thunderbolt 4。
好吧,很酷。我有一个网络设备可以帮助我连接到网络。但是我可以检查它们吗?查看它们的型号、网络配置以及它们是否正常运行?
LSHW公司
此 Linux 命令用于获取有关硬件设备的信息。您几乎可以将其用于所有硬件,但我们只会将其用于网络设备。
在Linux命令下方显示所有网络设备。建议将其作为“sudo”运行。
$ sudo lsfw -class network
你可以看到我的Raspbbery Pi 4b上有两个设备(接口)。查看以“*”开头的行。这些线路中的每一条都对应一个网络设备。
ifconfig
此命令显示连接到 Linux 的所有网络接口。与“lshw”相比,“ifconfig”命令提供了有关网络设备的更多网络相关信息。它带有“net-tools”软件包,可以通过“apt”、“yum”或“net-tools”安装。
以下是 ifconfig 命令的示例用法。
$ ifconfig
在这里你可以看到我的树莓派4b只有两个网络接口。名为“wlan0”的那个是我的 Wi-Fi 适配器,“lo”是我机器的本地主机。它不是真实/物理设备,而是虚拟设备。它用于操作系统内部的应用程序(我们将在第 3 部分中讨论它)。
“lshw”命令未显示“lo”,因为它不是真正的硬件设备。“ifconfig”命令未显示“以太网设备”,因为它尚未设置。
您可以使用“ifconfig”获得大量有用的信息。例如;设备状态、IP 地址、MAC/物理地址、发送的数据量 (TX) 和接收的数据量 (RX)。
“ifconfig”可以做很多很酷的事情。但是,我不会向它们展示,因为我们有一个“更好”的命令可供我们使用。
知识产权
这个命令就像《指环王》中的一枚戒指。它可用于许多不同的与网络相关的操作。它可以看作是“ifconfig”的上级命令。
在本文的所有部分,我将大量使用“ip”命令。所以,这非常重要;
几乎所有 Linux 计算机都默认安装了“ip”命令。因此,这是配置 Linux 网络的推荐且更好的方法。
让我们使用此命令来检查我们的网络接口。
$ ip addr show
在这里,您可以看到一个附加设备:“eth0”。“ifconfig”命令未显示此内容,因为它尚未设置。但是,“ip”会显示您的所有设备是否处于活动状态。
您的计算机可以有许多不同的网络接口。例如;一台典型的服务器支持 8-16 种不同的有线接口。运行了大量虚拟机的计算机也可以具有许多“虚拟”接口。
我的 Macbook 机器有 20 个接口!主要来自 VPN、虚拟机和 macOS 网络设置。
就像任何硬件设备一样,您可以打开和关闭任何网络接口。您应该知道,在 Linux 网络中,打开/关闭网络接口也称为启动/关闭。这基本上是一种更花哨的说法。
以下命令用于关闭/启动网络接口。
$ sudo ip link set dev <INTERFACE_NAME> up # Bring it up
$ sudo ip link set dev <INTERFACE_NAME> down # Bring it down
在上图中,您可以看到“ip”命令可以使网络接口关闭(请参阅状态 UP|向下)。
我使用了一个额外的“grep”命令来突出显示设备的状态。
结束语
到目前为止,我们已经了解了网络背后的思想,如何在计算机中使用网络以及它们的类型。我们还了解了是什么让我们能够加入它们(网络接口),它们是什么,我们如何在 Linux 中检查它们并打开/关闭它们。
目前,这些信息没有太多的实际用途。在接下来的部分中,我们将学习使用这些网络接口来做一些实际的工作!
我希望你喜欢我的文章并学到一些新东西。如果您发现任何错误或错误,请告诉我。
原文始发于微信公众号(安全狗的自我修养):Linux 网络 ELI5 — 第 1 部分,网络和接口
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论