标签 网络 下的文章

systemd 创始人认为 Linux 的启动并不安全

已经加入了微软的 systemd 创始人 Lennart Poettering 认为,在启用了安全启动的硬件上,虽然启动过程(包括内核)是签名的,但下一步,即加载 initrd,却没有签名。他提议将 Linux 启动过程转移到加密签名的统一内核镜像,使用 TPM 2.0 硬件加强 Linux 系统启动过程的安全性。initrd 是“初始化内存磁盘”,恶意软件或入侵者可以在 initrd 中插入恶意代码,而且每次系统启动时都会加载该代码,即使该恶意代码的其他副本不存在于硬盘上。

消息来源:The Register
老王点评:想法是很好,但是这就是一个不透明的盒子。

Linux 内核开始为 800 Gbps 网络做准备

IEEE 已经发布了 800Gbps 网络的标准,而英伟达正在开发 800Gbps 网络硬件,其 Linux 内核驱动的开发人员确认,下一代英伟达 Spectrum ASIC 将支持 800Gbps 的速度。虽然 800Gbps 已经是目前最高端的 400Gbps 带宽的两倍,但以太网联盟今年的路线图已经将 1.6Tbps 网络作为未来几年内的计划。

消息来源:Phoronix
老王点评:Linux 内核在抛弃博物馆硬件的同时,越来越多的成为新硬件的第一批支持系统。

Fedora 40 正在为迁移到更现代的 C 语言标准做准备

1999 年发布的 C 语言标准(C99)删除了一些向后兼容的特性,然而,GCC 仍然默认接受这些过时的构造。但对这些结构体的支持让程序员感到困惑,并有可能影响 GCC 实现未来 C 标准中的功能。计划 2024 年发布的 GCC 14 编译器,正在考虑默认禁用对传统 C 语言结构的支持。LLVM 的开发者也正在考虑可能比这更早地禁用传统的 C 语言结构。Fedora 40 计划更主动地发现那些仍然依赖传统 C 语言行为的开源项目,以在 GCC 14 前就消除对旧的 C 语言标准的支持。

消息来源:Phoronix
老王点评:说是新的 C 语言标准,其实也有 20 多年了——都说程序员是喜新厌旧的,但是似乎都抱着自己用惯的语言不肯放手。

在最小安装的服务器中设置互联网或网络非常容易。本指南将解释如何在最小安装的 CentOS、RHEL 和 Rocky Linux 中设置互联网或网络。

当你安装了任何服务器发行版的最小安装环境,你将没有任何 GUI 或桌面环境来设置你的网络或互联网。因此,当你只能访问终端时,了解如何设置互联网非常重要。NetworkManager 工具提供了必要的工具,辅以 systemd 服务来完成这项工作。以下是方法。

在最小安装的 CentOS、RHEL、Rocky Linux 中设置互联网

在你完成了服务器的安装后,启动进入服务器终端。理想情况下,你会看到一个终端提示符。使用 root 或管理员账户登录。

首先,尝试使用 nmcli 检查网络接口的状态和详细信息。nmcli 是用于控制 NetworkManager 服务的命令行工具。使用以下命令进行检查。

nmcli device status

这将显示设备名称、状态等。

nmcli device status

运行工具 nmtui 来配置网络接口。

nmtui 是 NetworkManager 工具的一部分,它为你提供了一个友好的用户界面来配置网络。

这是 NetworkManager-tui 包的一部分,在你完成最小服务器安装后默认安装。

nmtui

单击 nmtui 窗口中的“ 编辑连接 Edit a connection ”。

nmtui - 选择选项

选择接口名称

选择要编辑的接口

在“ 编辑连接 Edit Connection ”窗口中,为 IPv4 和 IPv6 选择“ 自动 Automatic ”选项。并选择“ 自动连接 Automatically Connect ”。完成后按 “OK”。

nmtui - 编辑连接

使用以下命令通过 systemd systemctl 重启 NetworkManager 服务。

systemctl restart NetworkManager

如果一切顺利,你可以在最小安装的 CentOS、RHEL 和 Rocky Linux 服务器中连接到网络和互联网。前提是你的网络有互联网连接。你可以使用 ping 来验证它是否正常工作。

设置最小化服务器互联网 - CentOS Rocky Linux RHEL

附加技巧:在最小化服务器中设置静态 IP

当你将网络配置设置为自动时,接口会在你连接到互联网时动态分配 IP。在你设置局域网的某些情况下,你可能希望将静态 IP 分配给你的网络接口。这非常容易。

打开你的网络配置脚本。将 ens3 改为为你自己的设备名。

vi /etc/sysconfig/network-scripts/ifcfg-ens3

在上面的文件中,使用 IPADDR 属性添加所需的 IP 地址。保存文件。

IPADDR=192.168.0.55

/etc/sysconfig/network 中为你的网络添加网关。

NETWORKING=yes
HOSTNAME=debugpoint
GATEWAY=10.1.1.1

/etc/resolv.conf 中添加任意公共 DNS 服务器。

nameserver 8.8.8.8
nameserver 8.8.4.4

然后重启网络服务。

systemctl restart NetworkManager

这就完成了静态 IP 的设置。你还可以使用 ip addr 命令检查 IP 详细信息。

总结

我希望本指南可以帮助你在最小化安装的服务器中设置网络、互联网和静态 IP。如果你有任何问题,请在评论区告诉我。


via: https://www.debugpoint.com/setup-internet-minimal-install-server/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们并不是每天都会谈论 Linux 的命令行。但正如一些读者指出的那样,你们也想学习一些命令行的技巧。

因此,我整理了一份基本的 Linux 网络命令清单,这些命令在我的大学时代帮助了我,让我对如何在网络方面使用 Linux 有了坚定的认识。

这些命令将帮助你设置网络,以及解决你在 Linux 系统中可能遇到的各种网络问题。

Linux 中的基本网络命令

这个汇编包括了 CLI 实用程序,它们将帮助你排除网络问题、监控数据包和连接的设备,以及更多。

在我展示这些命令的一些细节之前,让我分享一下我今天要讨论的所有命令的简要概述。

命令说明
ip操纵路由来分配和配置网络参数
traceroute识别数据包到达主机的路径
tracepath在追踪网络主机的路径时,获取最大传输单元
ping通常用于检查主机和服务器之间的连接情况
ss获得有关网络套接字的详细信息
dig给出所有关于 DNS 名称服务器的必要信息
host输出特定域和主机的 IP 地址
hostname主要用于输出和更改主机名
curl在网络上通过各种协议传输数据
mtrpingtraceroute 的组合,用于诊断网络
whois获取有关注册的域名、IP 地址、名称服务器等信息
ifplugstatus检测本地以太网设备的链接状态
iftop监视与带宽有关的统计信息
tcpdump数据包嗅探和分析工具,用于捕获、分析和过滤网络流量
ethtool允许用户配置以太网设备
nmcli用于网络连接的故障排除工具
nmap主要用于审计网络安全
bmon开源工具,用于监控实时带宽
firewalld配置防火墙规则的 CLI 工具
iperf测量网络性能和调整的工具
speedtest-clispeedtest.net 的 CLI 工具,用于检查网速
vnstat主要用于监控网络流量和带宽消耗

现在,让我们用例子和更深入的方式讨论它们。

请注意,并不是所有的命令都会预装。我已经添加了针对 Debian/Ubuntu 的说明。对于其他发行版,请使用你的软件包管理器进行安装。

1、ip 命令

ip 命令是最基本的,但也是最重要的,你会发现系统管理员经常使用它,其用于从操纵路由到分配和配置网络参数。

虽然用例可能无穷无尽,但让我向你展示 ip 命令的最基本用例(寻找 IP 地址)。

ip address

ip address

同样,你也可以使用 ip 命令来持续监控设备的状态,请使用 monitor 参数而不是我们之前用来获取 IP 地址的 address 参数:

ip monitor

ip monitor

2、traceroute

使用 traceroute 命令,你可以确定数据包到达主机的路线。而且,当你想询问数据包的传输情况和数据包所走的跳数时,它可能相当有用。

默认情况下,你的系统可能没有安装 traceroute,如果你使用的是 Debian 及派生的发行版(包括 Ubuntu),安装时只需使用一个命令:

sudo apt install traceroute

例如,追踪到 google.com 的数据包:

traceroute google.com

traceroute google.com

默认情况下,traceroute 会使用 IPv4,但是你可以通过使用 -6 选项来改变这一行为,该选项将指示 traceroute 使用 IPv6。让我告诉你怎么做:

traceroute -6 google.com

3、tracepath

tracepath 命令用于发现 MTU(最大传输单元),同时追踪到网络主机的路径。它与我上面讨论的 traceroute 很相似,但它不需要 sudo 权限,而且也没有像它那么多功能。

但是,首先什么是 MTU?

MTU 就是可以在网络上传输或接收的最大帧或数据包。

现在,让我们看一下 google.comtracepath 的基本例子:

tracepath google.com

tracepath google.com

同样,你可以使用 -b 选项同时打印出 IP 地址和主机名。

tracepath -b google.com

tracepath -b google.com

4、ping

ping 命令 数据包网络飞龙探云手 Packet Internet Groper ?) 可以说是在排除网络故障时最重要的命令之一,因为它是检查主机和服务器之间连接情况的最常用方法。

例如,我 ping 谷歌:

ping google.com

ping google.com

这里,最后一行(min/avg/max)表示从指定的服务器获得响应的时间。

如果你得到一个错误提示 bash: ping: command not found (LCTT 译注:不会吧?),你可以查看我们的指南 如何在 Ubuntu 上安装 Ping

5、ss

ss 套接字统计 socket statistics )命令用于详细了解网络套接字(在网络上发送和接收数据的端点)。

要列出所有监听和非监听的 TCP 连接,你必须使用 -at 选项,如下所示:

ss -at

ss -at

同样,你可以使用 -au 选项对 UDP 端口进行同样的操作:

ss -au

ss -au

6、dig

dig 命令 域信息龙爪手 Domain Information Groper ?)用于获取有关域名的所有必要信息。

要在基于 Ubuntu 的发行版上安装 dig 工具,请按照给出的命令进行:

sudo apt install dnsutils

现在,让我告诉你如何获取一个特定主机的信息,在这个例子中,我将获取 itsfoss.com 的信息:

dig itsfoss.com

dig itsfoss.com

7、host

host 命令主要用于获取一个特定主机的 IP 地址,或者你可以从一个特定的 IP 地址获取主机名。换句话说,它是一个 DNS 查询工具。

要找到主机的 IP,你只需要在 host 命令中附加主机名。让我告诉你怎么做:

host itsfoss.com

host itsfoss.com

同样,你可以用一个 IP 地址来获取主机名:

host 8.8.4.4

host 8.8.4.4

8、hostname

如果你已经使用了一段时间的 Linux,你一定很熟悉这个命令,因为这主要是用来 改变你的系统的主机名 和 NIS(网络信息系统)的主机名。

当不使用任何选项时,它可以得到系统当前的主机名。

hostname

hostname

从包含所需主机名的文件中改变主机名是这个工具的另一个有趣的功能:

sudo hostname -F <filename>

sudo hostname -F hostname.txt

9、curl

curl 客户端 URL Client URL )命令主要用于在网络上传输数据,支持各种协议,包括 HTTP、FTP、IMAP 和许多其他协议。

这个工具是首选的自动化工具,因为它是在没有任何人类互动的情况下工作的,也可以用于端点测试、调试和错误记录。

curl 工具没有预装,如果你在任何 Debian 及其派生发行版上,你只需要使用以下命令进行安装:

sudo apt install curl

使用 curl 命令 下载文件 非常容易,你只需在 URL 中使用 -O 选项,就可以开始了。

curl -O [URL]

curl -o url

在下载大文件时,进度条会很方便,你可以用 curl-# 选项来显示进度条。

curl -# -O

10、mtr

它是 pingtraceroute 工具的组合,主要用于网络诊断,并提供网络响应和连接的实时情况。

使用 mtr 的最简单方法是用它跟上一个主机名或 IP 地址,它将给出一个实时的 traceroute 报告。

mtr [URL/IP]

mtr google.com

如果你想让 mtr 同时显示主机名和 IP 地址,你可以把它和 -b 选项配对,如下图:

mtr -b [URL]

mtr -b

11、whois

whois 可以帮助你找到有关注册的域名、IP 地址、名称服务器等信息,因为它是 whois 目录服务的客户端。

这个工具可能没有预装在你的设备上,要在基于 Debian/Ubuntu 的发行版上安装,你可以使用给出的命令:

sudo apt install whois

一般来说,whois 命令是与给出的域名配对使用的:

whois [DomainName]

whois google.com

另外,你也可以用一个 IP 地址来代替域名,你会得到同样的细节。

12、ifplugstatus

ifplugstatus 是一个最基本的,但也是最有用的工具,足以在基本水平上排除连接问题。它用于检测本地以太网的链接状态,其工作方式与 mii-diagmii-toolethtool 类似,支持所有三个 API。

在基于 Debian/Ubuntu 的发行版上安装,你可以按照给出的命令进行:

sudo apt install ifplugd

这个工具没有任何花哨的选项,经常不需要与任何配对选项而使用:

ifplugstatus

ifplugstatus

13、iftop

iftop 接口的 top Interface TOP )经常被管理员用来监控与带宽有关的统计数据,当你遇到网络问题时,也可以作为诊断工具使用。

这个工具需要手动安装,可以通过给出的命令在运行 Debian/Ubuntu 的机器上轻松安装。

sudo apt install iftop

iftop 在没有任何选项的情况下使用时,它会显示默认接口的带宽统计。

sudo iftop

iftop

你也可以通过在设备名称后面加上 -i 选项来指定网络设备。

sudo iftop -i <DeviceName>.

在我的例子中,是 enp1s0,所以我的输出将是如下:

sudo iftop -i enp1s0

14、tcpdump

tcpdump 是一个数据包嗅探和分析工具,用于捕获、分析和过滤网络流量。它也可以作为一个安全工具使用,因为它将捕获的数据保存在可以 通过 Wireshark 访问 的 pcap 文件中。

像许多其他工具一样,tcpdump 没有预装,如果你是在Debian/Ubuntu 上,你可以按照下面的命令进行安装:

sudo apt install tcpdump

一旦你完成了安装,你可以获得当前接口的捕获数据包,如下所示:

sudo tcpdump

sudo tcpdump

那么如何将捕获的数据包保存在 pcap 文件中呢?让我告诉你怎么做:

sudo tcpdump -w Captured_Packets.cap -i < networkdevice >

sudo tcpdump -w

要访问保存的文件,你需要使用 -r 选项加上文件名。

sudo tcpdump -r Captured_Packets.pcap

sudo tcpdump -r filename

15、ethtool

顾名思义,ethtool 工具主要涉及管理以太网设备。使用这个工具,你可以调整网卡速度、自动协商特性等。

但它可能没有预装在你的机器上,可以通过利用给出的命令安装在 Debian/Ubuntu 机器上:

sudo apt install ethtool

要获取接口的详细信息,你只需在命令后面加上设备名称,如下所示:

sudo ethtool <InterfaceName>

sudo ethtool enp1s0

16、nmcli

作为一个简单而强大的网络故障排除工具,它是任何系统管理员在排除网络故障时首先使用的工具之一,也可以在脚本中使用。

你可以使用 nmcli 命令来监控设备的连接状态:

nmcli dev status

nmcli dev status

当不使用任何选项时,它将带来你系统中所有现有设备的信息:

nmcli

nmcli

17、nmap

nmap 是一个探索和审计网络安全的工具。它经常被黑客和安全爱好者使用,因为它允许你获得网络的实时信息、连接到你的网络的 IP 的详细信息、端口扫描,以及更多。

要在基于 Debian/Ubuntu 的发行版上安装 nmap 工具,请使用给出的命令:

sudo apt install nmap

让我们开始扫描主机名:

nmap itsfoss.com

nmap itsfoss.com

18、bmon

bmon 是一个开源的工具,用于监测实时带宽和调试问题,以更人性化的方式呈现统计数据。这个工具最好的部分是图形显示,甚至可以在 HTML 中得到你的输出!

安装非常简单,因为 bmon 存在于流行的 Linux 发行版的默认仓库中,这也包括 Debian/Ubuntu。

sudo apt install bmon

现在,你只需要启动 bmon,就可以用眼睛愉快地监控带宽了:

bmon

bmon

19、firewalld

管理防火墙可以说是网络安全的核心部分,这个工具允许你添加、配置和删除防火墙的规则。

但是 firewalld 需要手动安装,如果你使用的是基于 Debian/Ubuntu 的发行版,你可以利用给出的命令进行安装:

sudo apt install firewalld

例如,我将向你展示,如何为公共区域永久地打开 80 端口:

sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

sudo firewall-cmd --permanent --zone=public

同样,要删除最近添加的规则,你必须使用 -remove 选项,如下所示:

sudo firewall-cmd --zone=public --remove-port=80/tcp

sudo firewall-cmd --zone=public --remove

20、iperf

iperf 是一个用 C 语言编写的开源工具,允许用户进行网络性能测量和调整。

这个工具存在于 Debian/Ubuntu 的默认资源库中,可以通过给出的命令安装:

sudo apt install iperf

要开始监控网络,用户必须通过给出的命令在服务器上启动这个客户端:

iperf -s -u

其中,-s 选项表示服务器,-u 选项为 UDP 格式。

iperf -s -u

现在,你可以通过提供首选协议的 IP 地址有效载荷连接到你的服务器(使用 -c 选项表示客户端)。在这个例子中,我选择了 UDP(使用 -u 选项),有效载荷为 100:

iperf -c 10.0.2.15 -u 100

iperf -c

21、speedtest-cli

顾名思义,这是 speedtest.net 网站的 CLI 工具。这个在 Apache 2.0 许可下发布的开源工具,当你想从 CLI 获得一个可靠的 检查网速 的来源时,会有很大帮助。

安装非常简单,如果你是在 Debian/Ubuntu 上,可以利用给出的命令轻松安装:

sudo apt install speedtest-cli

一旦你完成了安装部分,你只需要使用一行命令即可测试你的速度:

speedtest-cli

speedtest-cli

22、vnstat

vnstat 工具主要被系统管理员用来监控网络流量和带宽消耗(大部分情况下),因为这个工具可以监控你系统的网络接口的流量。

和其他网络工具一样,你可以在默认的软件库中找到 vnstat,如果你在 Debian/Ubuntu 上,可以通过给出的命令进行安装:

sudo apt install vnstat

你可以使用 vnstat 命令,不需要任何选项,它将带来你系统所有可用接口的基本统计信息:

vnstat

vnstat

对于实时监控,你可以将 vnstat 命令与 -l 选项配对。

vnstat -l

一个长长的清单,对吗?

这个汇编连冰山一角都算不上,只是分享了每个命令的目的和基本例子,因为增加更多的命令会使这个清单变得更长。

流行的但 已废弃的 Linux 命令,如 ipconfig,已被故意排除在这个列表之外。

如果你很好奇,你可以学习 如何最大限度地利用手册页,这将教会你如何使用任何实用程序的最大潜力。

如果我忘了提到任何你喜欢的东西,请在评论中告诉我。


via: https://itsfoss.com/basic-linux-networking-commands/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇文章描述并演示了 NMState,这是一个使用声明式方法配置主机的网络管理器。这意味着你可以通过 API 定义所需的配置状态,而工具则通过 提供者 provider 来应用配置。

配置方法:命令式与声明式

网络管理有时候是一项非常复杂的任务,这取决于环境的规模和多样性。在 IT 的早期,网络管理依赖于网络管理员在网络设备上手动执行命令。如今, 基础设施即代码 Infrastructure as Code (IaC)允许以不同的方式将这些任务自动化。z这基本上有两种方法:命令式或声明式。

在命令式方法中,你会定义“如何”达到所需的配置状态。而在声明式范式里则定义了“什么”是所需的配置状态,所以它不确定哪些步骤是必需的,也不确定它们必须以何种顺序执行。这种方法目前正在聚集更多的人员参与,你可以在目前使用的大多数管理和编排工具上找到它。

NMState:一个声明式的工具

NMState 是一个网络管理器,允许你按照声明式方法配置主机。这意味着你通过一个北向的声明式 API 定义所需的配置状态,这个工具通过南向的 提供者 provider 应用配置。

目前 NMState 支持的唯一的提供者是 NetworkManager,它是为 Fedora Linux 提供网络功能的主要服务。不过,NMState 的开发计划中将逐渐增加其他提供者。

关于 NMState 的进一步信息,请访问其项目 站点 或 GitHub 仓库

安装

NMState 在 Fedora Linux 29+ 上可用,需要在系统上安装并运行 NetworkManager 1.26 或更高版本。下面是在 Fedora Linux 34 上的安装情况:

$ sudo dnf -y install nmstate
...
输出节略
...
Installed:
  NetworkManager-config-server-1:1.30.4-1.fc34.noarch      gobject-introspection-1.68.0-3.fc34.x86_64      nispor-1.0.1-2.fc34.x86_64              nmstate-1.0.3-2.fc34.noarch
  python3-gobject-base-3.40.1-1.fc34.x86_64                python3-libnmstate-1.0.3-2.fc34.noarch          python3-nispor-1.0.1-2.fc34.noarch      python3-varlink-30.3.1-2.fc34.noarch

Complete!

这样,你可以使用 nmstatectl 作为 NMState 的命令行工具。请参考 nmstatectl -helpman nmstatectl 以了解关于这个工具的进一步信息。

使用 NMstate

首先要检查系统中安装的 NMState 版本:

$ nmstatectl version
1.0.3

检查一个网络接口的当前配置,例如 eth0 的配置:

$ nmstatectl show eth0
2021-06-29 10:28:21,530 root         DEBUG    NetworkManager version 1.30.4
2021-06-29 10:28:21,531 root         DEBUG    Async action: Retrieve applied config: ethernet eth0 started
2021-06-29 10:28:21,531 root         DEBUG    Async action: Retrieve applied config: ethernet eth1 started
2021-06-29 10:28:21,532 root         DEBUG    Async action: Retrieve applied config: ethernet eth0 finished
2021-06-29 10:28:21,533 root         DEBUG    Async action: Retrieve applied config: ethernet eth1 finished
---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 100
    next-hop-address: ''
    next-hop-interface: eth0
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 100
    next-hop-address: 192.168.122.1
    next-hop-interface: eth0
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 100
    next-hop-address: ''
    next-hop-interface: eth0
    table-id: 254
interfaces:
- name: eth0
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.238
      prefix-length: 24
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    dhcp: true
  ipv6:
    enabled: true
    address:
    - ip: fe80::c3c9:c4f9:75b1:a570
      prefix-length: 64
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    autoconf: true
    dhcp: true
  lldp:
    enabled: false
  mac-address: 52:54:00:91:E4:4E
  mtu: 1500

正如你在上面看到的,这个网络配置显示了四个主要部分:

  • dns-resolver:这部分是这个接口的名字服务器配置。
  • route-rules:它说明了路由规则。
  • routes:它包括动态和静态路由。
  • interfaces:这部分描述了 ipv4 和 ipv6 设置。

修改配置

你可以在两种模式下修改所需的配置状态:

  • 交互式:通过 nmstatectl edit 编辑接口配置。这个命令调用环境变量 EDITOR 定义的文本编辑器,因此可以用 yaml 格式编辑网络状态。完成编辑后,NMState 将应用新的网络配置,除非有语法错误。
  • 基于文件的:使用 nmstatectl apply 应用接口配置,它从先前创建的 yaml 或 json 文件中导入一个所需的配置状态。

下面几节告诉你如何使用 NMState 来改变网络配置。这些改变可能会对系统造成破坏,所以建议在测试系统或客户虚拟机上执行这些任务,直到你对 NMState 有更好的理解。

这里使用的测试系统有两个以太网接口,eth0eth1

$ ip -br -4 a
lo               UNKNOWN        127.0.0.1/8
eth0             UP             192.168.122.238/24
eth1             UP             192.168.122.108/24

互动配置模式的例子

使用 nmstatectl edit 命令将 eth0 接口的 MTU 改为 9000 字节,如下所示:

$ sudo nmstatectl edit eth0

---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 100
    next-hop-address: ''
    next-hop-interface: eth0
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 100
    next-hop-address: 192.168.122.1
    next-hop-interface: eth0
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 100
    next-hop-address: ''
    next-hop-interface: eth0
    table-id: 254
interfaces:
- name: eth0
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.123
      prefix-length: 24
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    dhcp: true
  ipv6:
    enabled: true
    address:
    - ip: fe80::c3c9:c4f9:75b1:a570
      prefix-length: 64
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    autoconf: true
    dhcp: true
  lldp:
    enabled: false
  mac-address: 52:54:00:91:E4:4E
  mtu: 9000

在保存并退出编辑器后,NMState 应用新的网络期望状态:

2021-06-29 11:29:05,726 root         DEBUG    Nmstate version: 1.0.3
2021-06-29 11:29:05,726 root         DEBUG    Applying desire state: {'dns-resolver': {'config': {}, 'running': {'search': [], 'server': ['192.168.122.1']}}, 'route-rules': {'config': []}, 'routes': {'config': [], 'running': [{'destination': 'fe80::/64', 'metric': 102, 'next-hop-address': '', 'next-hop-interface': 'eth0', 'table-id': 254}, {'destination': '0.0.0.0/0', 'metric': 102, 'next-hop-address': '192.168.122.1', 'next-hop-interface': 'eth0', 'table-id': 254}, {'destination': '192.168.122.0/24', 'metric': 102, 'next-hop-address': '', 'next-hop-interface': 'eth0', 'table-id': 254}]}, 'interfaces': [{'name': 'eth0', 'type': 'ethernet', 'state': 'up', 'ipv4': {'enabled': True, 'address': [{'ip': '192.168.122.238', 'prefix-length': 24}], 'auto-dns': True, 'auto-gateway': True, 'auto-route-table-id': 0, 'auto-routes': True, 'dhcp': True}, 'ipv6': {'enabled': True, 'address': [{'ip': 'fe80::5054:ff:fe91:e44e', 'prefix-length': 64}], 'auto-dns': True, 'auto-gateway': True, 'auto-route-table-id': 0, 'auto-routes': True, 'autoconf': True, 'dhcp': True}, 'lldp': {'enabled': False}, 'mac-address': '52:54:00:91:E4:4E', 'mtu': 9000}]}
--- output omitted ---
2021-06-29 11:29:05,760 root         DEBUG    Async action: Update profile uuid:2bdee700-f62b-365a-bd1d-69d9c31a9f0c iface:eth0 type:ethernet started
2021-06-29 11:29:05,792 root         DEBUG    Async action: Update profile uuid:2bdee700-f62b-365a-bd1d-69d9c31a9f0c iface:eth0 type:ethernet finished

现在,使用 ip 命令和 eth0 的配置文件来检查 eth0MTU 是不是 9000 字节。

$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:91:e4:4e brd ff:ff:ff:ff:ff:ff
    altname enp1s0

$ sudo cat /etc/NetworkManager/system-connections/eth0.nmconnection
[sudo] password for admin:
[connection]
id=eth0
uuid=2bdee700-f62b-365a-bd1d-69d9c31a9f0c
type=ethernet
interface-name=eth0
lldp=0
permissions=

[ethernet]
cloned-mac-address=52:54:00:91:E4:4E
mac-address-blacklist=
mtu=9000

[ipv4]
dhcp-client-id=mac
dhcp-timeout=2147483647
dns-search=
method=auto

[ipv6]
addr-gen-mode=eui64
dhcp-duid=ll
dhcp-iaid=mac
dhcp-timeout=2147483647
dns-search=
method=auto
ra-timeout=2147483647

[proxy]

基于文件的配置模式的例子

让我们使用基于文件的方法来设置一个新的配置状态。这里我们禁用 eth1 接口的 IPv6 配置。

首先,创建一个 yaml 文件来定义 eth1 接口的期望状态。使用 nmstatectl show 来保存当前设置,然后使用 nmstatectl edit 来禁用 IPv6。

$ nmstatectl show eth1 > eth1.yaml

$ vi eth1.yaml
---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 101
    next-hop-address: 192.168.122.1
    next-hop-interface: eth1
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
interfaces:
- name: eth1
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.108
      prefix-length: 24
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    dhcp: true
  ipv6:
    enabled: false
    address:
    - ip: fe80::5054:ff:fe3c:9b04
      prefix-length: 64
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    autoconf: true
    dhcp: true
  lldp:
    enabled: false
  mac-address: 52:54:00:3C:9B:04
  mtu: 1500

保存新的配置后,用它来应用新的状态:

$ sudo nmstatectl apply eth1.yaml

2021-06-29 12:17:21,531 root         DEBUG    Nmstate version: 1.0.3
2021-06-29 12:17:21,531 root         DEBUG    Applying desire state: {'dns-resolver': {'config': {}, 'running': {'search': [], 'server': ['192.168.122.1']}}, 'route-rules': {'config': []}, 'routes': {'config': [], 'running': [{'destination': 'fe80::/64', 'metric': 101, 'next-hop-address': '', 'next-hop-interface': 'eth1', 'table-id': 254}, {'destination': '0.0.0.0/0', 'metric': 101, 'next-hop-address': '192.168.122.1', 'next-hop-interface': 'eth1', 'table-id': 254}, {'destination': '192.168.122.0/24', 'metric': 101, 'next-hop-address': '', 'next-hop-interface': 'eth1', 'table-id': 254}]}, 'interfaces': [{'name': 'eth1', 'type': 'ethernet', 'state': 'up', 'ipv4': {'enabled': True, 'address': [{'ip': '192.168.122.108', 'prefix-length': 24}], 'auto-dns': True, 'auto-gateway': True, 'auto-route-table-id': 0, 'auto-routes': True, 'dhcp': True}, 'ipv6': {'enabled': False}, 'lldp': {'enabled': False}, 'mac-address': '52:54:00:3C:9B:04', 'mtu': 1500}]}
--- output omitted ---
2021-06-29 12:17:21,582 root         DEBUG    Async action: Update profile uuid:5d7244cb-673d-3b88-a675-32e31fad4347 iface:eth1 type:ethernet started
2021-06-29 12:17:21,587 root         DEBUG    Async action: Update profile uuid:5d7244cb-673d-3b88-a675-32e31fad4347 iface:eth1 type:ethernet finished
--- output omitted ---
Desired state applied:
---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 101
    next-hop-address: 192.168.122.1
    next-hop-interface: eth1
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
interfaces:
- name: eth1
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.108
      prefix-length: 24
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    dhcp: true
  ipv6:
    enabled: false
  lldp:
    enabled: false
  mac-address: 52:54:00:3C:9B:04
  mtu: 1500

你可以检查看到 eth1 接口没有配置任何 IPv6:

$ ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.122.238/24 fe80::5054:ff:fe91:e44e/64
eth1             UP             192.168.122.108/24

$ sudo cat /etc/NetworkManager/system-connections/eth1.nmconnection
[connection]
id=eth1
uuid=5d7244cb-673d-3b88-a675-32e31fad4347
type=ethernet
interface-name=eth1
lldp=0
permissions=

[ethernet]
cloned-mac-address=52:54:00:3C:9B:04
mac-address-blacklist=
mtu=1500

[ipv4]
dhcp-client-id=mac
dhcp-timeout=2147483647
dns-search=
method=auto

[ipv6]
addr-gen-mode=eui64
dhcp-duid=ll
dhcp-iaid=mac
dns-search=
method=disabled

[proxy]

临时应用改变

NMState 的一个有趣的功能允许你临时配置一个期望的网络状态。如果你对这个配置感到满意,你可以事后提交。否则,当超时(默认为 60 秒)过后,它将回滚。

修改前面例子中的 eth1 配置,使它有一个 IPv4 静态地址,而不是通过 DHCP 动态获得。

$ vi eth1.yaml

---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 101
    next-hop-address: 192.168.122.1
    next-hop-interface: eth1
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
interfaces:
- name: eth1
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.110
      prefix-length: 24
    auto-dns: true
    auto-gateway: true
    auto-route-table-id: 0
    auto-routes: true
    dhcp: false
  ipv6:
    enabled: false
  lldp:
    enabled: false
  mac-address: 52:54:00:3C:9B:04
  mtu: 1500

现在,使用选项 no-commit 临时应用这个配置,让它只在 30 秒内有效。这可以通过添加选项 timeout 来完成。同时,我们将运行 ip -br a 命令三次,看看配置在 eth1 接口的 IPv4 地址是如何变化的,然后配置就会回滚。

$ ip -br a && sudo nmstatectl apply --no-commit --timeout 30 eth1.yaml && sleep 10 && ip -br a && sleep 25 && ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.122.238/24 fe80::5054:ff:fe91:e44e/64
eth1             UP             192.168.122.108/24
2021-06-29 17:29:18,266 root         DEBUG    Nmstate version: 1.0.3
2021-06-29 17:29:18,267 root         DEBUG    Applying desire state: {'dns-resolver': {'config': {}, 'running': {'search': [], 'server': ['192.168.122.1']}}, 'route-rules': {'config': []}, 'routes': {'config': [], 'running': [{'destination': 'fe80::/64', 'metric': 101, 'next-hop-address': '', 'next-hop-interface': 'eth1', 'table-id': 254}, {'destination': '0.0.0.0/0', 'metric': 101, 'next-hop-address': '192.168.122.1', 'next-hop-interface': 'eth1', 'table-id': 254}, {'destination': '192.168.122.0/24', 'metric': 101, 'next-hop-address': '', 'next-hop-interface': 'eth1', 'table-id': 254}]}, 'interfaces': [{'name': 'eth1', 'type': 'ethernet', 'state': 'up', 'ipv4': {'enabled': True, 'address': [{'ip': '192.168.122.110', 'prefix-length': 24}], 'dhcp': False}, 'ipv6': {'enabled': False}, 'lldp': {'enabled': False}, 'mac-address': '52:54:00:3C:9B:04', 'mtu': 1500}]}
--- output omitted ---
Desired state applied:
---
dns-resolver:
  config: {}
  running:
    search: []
    server:
    - 192.168.122.1
route-rules:
  config: []
routes:
  config: []
  running:
  - destination: fe80::/64
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
  - destination: 0.0.0.0/0
    metric: 101
    next-hop-address: 192.168.122.1
    next-hop-interface: eth1
    table-id: 254
  - destination: 192.168.122.0/24
    metric: 101
    next-hop-address: ''
    next-hop-interface: eth1
    table-id: 254
interfaces:
- name: eth1
  type: ethernet
  state: up
  ipv4:
    enabled: true
    address:
    - ip: 192.168.122.110
      prefix-length: 24
    dhcp: false
  ipv6:
    enabled: false
  lldp:
    enabled: false
  mac-address: 52:54:00:3C:9B:04
  mtu: 1500
Checkpoint: NetworkManager|/org/freedesktop/NetworkManager/Checkpoint/7
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.122.238/24 fe80::5054:ff:fe91:e44e/64
eth1             UP             192.168.122.110/24
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.122.238/24 fe80::5054:ff:fe91:e44e/64
eth1             UP             192.168.122.108/24

从上面可以看到,eth1 的 IP 地址从 192.168.122.108 暂时变成了 192.168.122.110,然后在超时结束后又回到了 192.168.122.108

总结

NMState 是一个声明式的网络配置工具,目前可以通过 NetworkManager API 在主机中应用所需的网络配置状态。这种状态既可以用文本编辑器交互式地定义,也可以用基于文件的方法创建一个 yaml 或 json 文件。

这种工具提供了“基础设施即代码”,它可以自动化网络任务,也减少了使用传统配置方法可能出现的潜在错误配置或不稳定的网络情况。


via: https://fedoramagazine.org/nmstate-a-declarative-networking-config-tool/

作者:Maurizio Garcia 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在最小化服务器安装中,设置互联网或网络是非常容易的。在本指南中,我们将解释如何在 CentOS、RHEL、Rocky Linux 最小安装中设置互联网或网络。

当你刚刚完成任何服务器发行版的最小化安装时,你没有任何图形界面或桌面环境可以用于设置你的网络或互联网。因此,当你只能使用终端时,了解如何设置联网是很重要的。NetworkManager 以及 systemd 服务为完成这项工作提供了必要的工具。以下是具体使用方法。

在 CentOS、RHEL、Rocky Linux 最小化安装中设置互联网

完成安装后,启动服务器终端。理想情况下,你应该会看到提示符。使用 root 或 admin 账户登录。

然后,首先尝试使用 nmcli 检查网络接口的状态和细节。nmcli 是一个控制 NetworkManager 服务的命令行工具。使用以下命令进行检查。

nmcli device status

这将显示设备名称、状态等。

nmcli device status

运行工具 nmtui 来配置网络接口。nmtui 是 NetworkManager 工具的一部分,它为你提供了一个漂亮的用户界面来配置网络。这是 NetworkManager-tui 包的一部分,当你完成最小服务器的安装时它应该默认安装。

nmtui

nmtui 窗口中点击编辑一个连接。

nmtui – Select options

选择网口名称:

Select Interface to Edit

在编辑连接窗口,为 IPv4 和 IPv6 选择自动。并选择自动连接。完成后按 “OK”。

nmtui – Edit Connection

通过使用如下 systemd systemctl 命令,重新启动 NetworkManager 服务。

systemctl restart NetworkManager

如果一切顺利,在 CentOS、RHEL、Rocky Linux 服务器的最小化安装中你应该可以连接到网络和互联网了,前提是你的网络有互联网连接。你可以用 ping 来验证它是否正常。

setup internet minimal server – CentOS Rocky Linux RHEL

额外技巧:在最小化服务器中设置静态 IP

当你把网络配置设置为自动,当你连接到互联网时,网口会动态地分配 IP。在某些情况下,当你建立一个局域网 (LAN) 时,你可能想给你的网口分配静态 IP。这超级简单。

打开你的网络的网络配置脚本。根据你的设备修改高亮部分:

vi /etc/sysconfig/network-scripts/ifcfg-ens3

在上面的文件中,用 IPADDR 属性添加你想要的 IP 地址。保存该文件。

IPADDR=192.168.0.55

/etc/sysconfig/network 中为你的网络添加网关:

NETWORKING=yes
HOSTNAME=debugpoint
GATEWAY=10.1.1.1

/etc/resolv.confresolv.conf 中添加任意公共 DNS 服务器:

nameserver 8.8.8.8
nameserver 8.8.4.4

并重新启动网络服务:

systemctl restart NetworkManager

这样就完成了静态 IP 的设置。你也可以使用 ip addr 命令检查详细的 IP 信息。

我希望这个指南能帮助你在你的最小化服务器中设置网络、互联网和静态 IP。如果你有任何问题,请在评论区告诉我。


via: https://www.debugpoint.com/2021/06/setup-internet-minimal-install-server/

作者:Arindam 选题:lujun9972 译者:geekpi 校对:turbokernel

本文由 LCTT 原创编译,Linux中国 荣誉推出

了解网络是如何工作的,以及使用开源工具进行网络性能调优的一些窍门。

 title=

大多数人每一天至少会接触到两种类型的网络。当你打开计算机或者移动设备,设备连接到本地 WiFi,本地 WiFi 然后连接到所谓“互联网”的互联网络。

但是网络实际上是如何工作的?你的设备如何能够找到互联网、共享打印机或文件共享?这些东西如何知道响应你的设备?系统管理员用什么措施来优化网络的性能?

开源思想在网络技术领域根深蒂固,因此任何想更多了解网络的人,可以免费获得网络相关的资源。本文介绍了使用开源技术的网络管理相关的基础知识。

网络是什么?

计算机网络是由两台或者多台计算机组成的、互相通信的集合。为了使得网络能够工作,网络上一台计算机必须能够找到其他计算机,且通信必须能够从一台计算机到达另外一台。为了解决这一需求,开发和定义了两种不同的通信协议:TCP 和 IP。

用于传输的 TCP 协议

为了使得计算机之间能够通信,它们之间必须有一种传输信息的手段。人说话产生的声音是通过声波来传递的,计算机是通过以太网电缆、无线电波或微波传输的数字信号进行通信的。这方面的规范被正式定义为 TCP 协议

用于寻址的 IP 协议

计算机必须有一些识别手段才能相互寻址。当人类相互称呼时,我们使用名字和代名词。当计算机相互寻址时,它们使用 IP 地址,如 192.168.0.1,IP 地址可以被映射到名称上,如“Laptop”、“Desktop”、“Tux” 或 “Penguin”。这方面的规范被定义为 IP 协议

最小配置设置

最简单的网络是一个两台计算机的网络,使用称为“交叉电缆”的特殊布线方式的以太网电缆。交叉电缆将来自一台计算机的信号连接并传输到另一台计算机上的适当受体。还有一些交叉适配器可以将标准的以太网转换为交叉电缆。

 title=

由于在这两台计算机之间没有路由器,所有的网络管理都必须在每台机器上手动完成,因此这是一个很好的网络基础知识的入门练习。

用一根交叉电缆,你可以把两台计算机连接在一起。因为这两台计算机是直接连接的,没有网络控制器提供指导,所以这两台计算机都不用做什么创建网络或加入网络的事情。通常情况下,这项任务会由交换机和 DHCP 服务器或路由器来提示,但在这个简单的网络设置中,这一切都由你负责。

要创建一个网络,你必须先为每台计算机分配一个 IP 地址,为自行分配而保留的地址从 169.254 开始,这是一个约定俗成的方式,提醒你本 IP 段是一个闭环系统。

找寻网络接口

首先,你必须知道你正在使用什么网络接口。以太网端口通常用 “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 是正确的接口名称。然而,在某些情况下,你会看到 en0enp0s1 或类似的东西,所以在使用设备名称之前,一定要先检查它。

分配 IP 地址

通常情况下,IP 地址是从路由器获得的,路由器在网络上广播提供地址。当一台计算机连接到一个网络时,它请求一个地址。路由器通过介质访问控制(MAC)地址识别设备(注意这个 MAC 与苹果 Mac 电脑无关),并被分配 IP 地址。这就是计算机在网络上找到彼此的方式。

在本文的简单网络中,没有路由器来分配 IP 地址及注册设备,因此我们需要手动分配 IP 地址,使用 ip 命令来给计算机分配 IP 地址:

$ sudo ip address add 169.254.0.1 dev eth0

给另外一台计算机分配 IP 地址,将 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

这条命令为 eth0 接口添加一个地址范围(从 169.254.0.0 开始到 169.254.0.255 结束)的路由。它将路由协议设置为“静态”,表示作为管理员的你创建了这个路由,作为对该范围内的任何动态路由进行覆盖。

通过 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 -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 接入点。

扩大你的知识规模

无论你的网络上有多少设备,或你的网络连接到多少其他网络,其原则仍然与你的双节点网络相同。你需要一种传输方式,一种寻址方案,以及如何路由到网络的知识。

网络知识速查表

了解网络是如何运作的,对管理网络至关重要。除非你了解你的测试结果,否则你无法排除问题,除非你知道哪些命令能够与你的网络设备交互,否则你无法运行测试。对于重要的网络命令的基本用法以及你可以用它们提取什么样的信息,请下载我们最新的网络速查表


via: https://opensource.com/article/21/4/network-management

作者:Seth Kenlon 选题:lujun9972 译者:ddl-hust 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出