大多数人每天至少连接到两个网络。当您打开计算机或移动设备后,它会连接到本地 WiFi 网络,而本地 WiFi 网络又提供对“互联网”(互联网络的组合)的互联网络的访问。
但是网络实际上是如何工作的呢?您的设备如何知道如何查找互联网、共享打印机或文件共享?这些东西如何知道如何响应您的设备?系统管理员使用什么技巧来优化网络性能?
开源已牢固地嵌入到网络技术中,因此任何想要了解更多信息的人都可以免费获得有关网络的资源。本文介绍了使用开源进行网络管理的基础知识。
什么是网络?
计算机网络是两个或多个可以相互通信的计算机的集合。为了使网络正常工作,网络上的一台机器必须能够找到另一台机器,并且通信必须能够从一台机器传输到另一台机器。为了解决此要求,开发并定义了两个不同的系统:TCP 和 IP。
用于传输的 TCP
为了使计算机能够通信,必须有一种在它们之间传输消息的方式。当人类说话时,我们声音的声音是通过声波在空气中传播而实现的。计算机通过以太网电缆、无线电波或微波传输的数字信号进行通信。对此的规范正式定义为 TCP 协议。
用于寻址的 IP
为了使计算机能够相互寻址,它们必须具有某种识别方式。当人类相互称呼时,我们使用姓名和代词。当计算机相互寻址时,它们使用 IP 地址,例如 192.168.0.1
,可以将其映射到名称,例如 Laptop 和 Desktop 或 Tux 或 Penguin。对此的规范正式定义为 IP 协议。
设置最小配置
最简单的网络是使用一种称为交叉电缆的特殊布线以太网电缆的双计算机网络。交叉电缆连接来自一台计算机的信号并将其传输到另一台计算机上的适当接收器。还有交叉适配器可以将标准以太网转换为交叉电缆。

(Seth Kenlon,CC BY-SA 4.0)
由于计算机之间没有路由器,因此所有网络管理都必须在每台机器上手动完成,这使其成为网络基础知识的良好入门练习。
使用交叉电缆,您可以将两台计算机连接在一起。由于两台计算机直接连接,没有网络控制器提供指导,因此两台计算机都不会执行任何操作来创建或加入网络。通常,此任务将由交换机和 DHCP 服务器或路由器提示,但在这种简单的网络设置中,您是最终权威。
要创建网络,您首先必须为每台计算机分配一个 IP 地址。为自分配 IP 地址保留的块以 169.254
开头,这是一个有用的约定,可以提醒您这是一个闭环系统。
查找网络接口
首先,您必须知道您正在使用的网络接口。以太网端口通常用术语 eth
加上以 0
开头的数字表示,但某些设备报告的术语不同。您可以使用 ip
命令发现计算机上的接口
$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
link/loopback 00:00:00:00:00:00 brd ...
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
link/ether dc:a6:32:be:a3:e1 brd ...
3: wlan0: <BROADCAST,MULTICAST> ...
link/ether dc:a6:32:be:a3:e2 brd ...
在这种情况下,eth0
证明是正确的接口名称。但是,在某些情况下,您会看到 en0
或 enp0s1
或类似的名称,因此在使用设备名称之前务必验证设备名称。
分配 IP 地址
通常,IP 地址是从路由器获得的,路由器通过网络广播地址请求。当计算机连接到网络时,它会请求地址。路由器会注册网络上的哪个设备(由其媒体访问控制 (MAC) 地址标识)(这与 Apple Mac 计算机无关)已被分配哪个地址。这就是计算机知道如何在网络上相互查找的方式。
但是,在这个简单的网络中,没有路由器分配 IP 地址或注册设备,因此您必须创建 IP 地址。要为计算机分配 IP 地址,请使用 ip
命令
$ sudo ip address add 169.254.0.1 dev eth0
并在另一台计算机上再次执行此操作,这次将 IP 地址递增 1
$ sudo ip address add 169.254.0.2 dev eth0
现在,每台计算机都有一种传输方式(交叉电缆)和一种在网络上被找到的方式(唯一的 IP 地址)。但是,此网络仍然缺少一个重要元素:计算机仍然不知道它们是网络的成员。
设置路由
通常由路由器管理的另一项任务是设置网络流量必须采用的路径才能从一个地方到达另一个地方。这称为路由表,您可以将其视为网络非常基本的城市地图。
目前,您的网络上不存在路由表。您可以使用 route
命令查看不存在的路由表
$ route
Kernel IP routing table
Destination | Gateway | Genmask | Flags|Metric|Ref | Use | Iface
$
或者,您可以使用 ip
命令查看它
$ ip route
$
您可以使用 ip
命令添加路由
$ sudo ip route \
add 169.254.0.0/24 \
dev eth0 \
proto static
此命令将路由添加到地址范围(从 169.254.0.0
开始,到 169.254.0.255
结束)到 eth0
接口。它将路由协议设置为 static
,以指示您(管理员)创建路由是为了有意覆盖任何动态路由。
使用 route
命令验证您的路由表
$ route
Kernel IP routing table
Destination | Gateway | Genmask | ... | Iface
link-local | 0.0.0.0 | 255.255.255.0 | ... | eth0
或使用 ip
命令获得不同的视图
$ ip route
169.254.0.0/24 dev eth0 proto static scope link
Ping 您的邻居
现在您的网络已经建立了传输方法、寻址方式和网络路由,您可以访问计算机外部的主机。发送到另一台计算机的最简单消息是 ping
,巧合的是,它也是生成消息的命令的名称
$ ping -c1 169.254.0.2
64 bytes from 169.254.0.2: icmp_seq=1 ttl=64 time=0.233 ms
--- 169.254.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.244/0.244/0.244/0.000 ms
您还可以查看您与之交互的邻居
$ ip neighbour
169.254.0.2 dev eth0 lladdr e8:6a:64:ac:ef:7c STALE
使用交换机扩展您的网络
对于双节点网络,没有太多需求。开发了一种称为网络交换机的特殊硬件来解决此问题。网络交换机允许您将多根以太网电缆连接到它,并且它会从发送计算机到目标 IP 地址不加区分地分发消息。这是物理连接一组计算机的简便方法。
在大多数现代家庭网络上,使用物理电缆的物理交换机不切实际或不受欢迎,因此通常使用 WiFi 接入点代替。WiFi 接入点的功能与交换机相同:它允许多台计算机连接到它并在它们之间传递消息。
对于大多数计算机用户来说,没有互联网访问的交换机或 WiFi 接入点不是很有用,要将您的网络连接到另一个网络(例如互联网),您需要路由器。
添加路由器
实际上,本地网络连接了许多设备,并且随着越来越多的设备具有网络感知能力,这个数字还在增长。将网络连接到互联网(网络本身),这个数字就会增加几个数量级。
手动配置即使是小型网络也是不切实际的,因此常见任务被分配给网络上的特定节点,并且每台计算机都运行一个守护进程(在后台静默运行的作业)来填充从网络上的权威服务器接收的网络设置。在家庭网络上,这些作业通常整合到一个小型嵌入式设备中,该设备通常由您的互联网服务提供商 (ISP) 提供,称为路由器(人们有时错误地称其为调制解调器)。在大型网络中,每个任务通常分配给单独的专用服务器,以确保专注性和弹性。这些包括
- DHCP 服务器,用于分配和跟踪加入网络的设备的 IP 地址
- DNS 服务器,用于将注册域名(如 redhat.com)转换为 IP 地址(如
209.132.183.105
) - 防火墙,用于保护您的网络免受不需要的传入流量或禁止的传出流量的侵害
- 路由器,用于有效地引导网络上的流量,充当其他网络(例如互联网)的网关,并执行网络地址转换 (NAT)
您现在可能在您的网络上有一个路由器,它可能管理所有这些任务以及可能更多的任务。借助 VyOS 等项目,您可以运行您自己的开源路由器。对于这样的项目,您应该使用一台专用计算机,该计算机至少具有两个网络接口控制器 (NIC):一个用于连接到您的 ISP,另一个用于连接到交换机,或者更可能是 WiFi 接入点。
扩展您的知识
无论您的网络上有多少设备,或者您的网络连接到多少其他网络,其原理都与您的双节点网络相同。您需要一种传输模式、一种寻址方案以及了解如何访问网络。
网络备忘单
了解网络如何运行对于管理网络至关重要。除非您了解测试结果,否则您无法排除问题,并且除非您知道哪些命令与您的网络基础设施交互,否则您无法运行测试。有关重要网络命令以及您可以使用它们提取的信息类型的概述,请下载我们更新的网络备忘单。
1 条评论