2021年5月

OpenRGB 是一个有用的开源工具,可以一个工具管理所有的 RGB 灯光。让我们来了解一下它。

无论是你的键盘、鼠标、CPU 风扇、AIO,还是其他连接的外围设备或组件,Linux 都没有官方软件支持来控制 RGB 灯光。

而 OpenRGB 似乎是一个适用于 Linux 的多合一 RGB 灯光控制工具。

OpenRGB:多合一的 RGB 灯光控制中心

是的,你可能会找到不同的工具来调整设置,如 Piper 专门 在 Linux 上配置游戏鼠标。但是,如果你有各种组件或外设,要把它们都设置成你喜欢的 RGB 颜色,那将是一件很麻烦的事情。

OpenRGB 是一个令人印象深刻的工具,它不仅专注于 Linux,也可用于 Windows 和 MacOS。

它不仅仅是一个将所有 RGB 灯光设置放在一个工具下的想法,而是旨在摆脱所有需要安装来调整灯光设置的臃肿软件。

即使你使用的是 Windows 系统的机器,你可能也知道像 Razer Synapse 这样的软件工具是占用资源的,并伴随着它们的问题。因此,OpenRGB 不仅仅局限于 Linux 用户,还适用于每一个希望调整 RGB 设置的用户。

它支持大量设备,但你不应该期待对所有设备的支持。

OpenRGB 的特点

它在提供简单的用户体验的同时,赋予了你许多有用的功能。其中的一些特点是:

  • 轻便的用户界面
  • 跨平台支持
  • 能够使用插件扩展功能
  • 设置颜色和效果
  • 能够保存和加载配置文件
  • 查看设备信息
  • 连接 OpenRGB 的多个实例,在多台电脑上同步灯光

除了上述所有的特点外,你还可以很好地控制照明区域、色彩模式、颜色等。

在 Linux 中安装 OpenRGB

你可以在其官方网站上找到 AppImage 文件和 DEB 包。对于 Arch Linux 用户,你也可以在 AUR 中找到它。

如需更多帮助,你可以参考我们的 AppImage 指南安装 DEB 文件的方法来设置。

官方网站应该也可以让你下载其他平台的软件包。但是,如果你想探索更多关于它的信息或自己编译它,请前往它的 GitLab 页面

总结

尽管我没有很多支持 RGB 的设备/组件,但我可以成功地调整我的罗技 G502 鼠标。

如果你想摆脱多个应用,用一个轻量级的界面来管理你所有的 RGB 灯光,我肯定会推荐你试一试。

你已经试过它了吗?欢迎在评论中分享你对它的看法!


via: https://itsfoss.com/openrgb/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

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

微软宣布对其 WSL 进行重大改进,使你能够轻松地运行 Linux 图形化应用程序。

当微软在 2016 年发布 “Windows subsystem for Linux”(也就是 WSL)的时候显然有夸大宣传的嫌疑,当时人们梦想着无需重启就可以同时运行基于 Windows 和 Linux 的应用程序,令人可惜的是,WSL 只能运行 Linux 终端程序。

去年,微软再次尝试去颠覆 Windows 的应用生态,这一次,他们替换了老旧的模拟核心,转而使用了真正的 Linux 核心,这一变化使你可以 在 Windows 中运行 Linux 应用程序

WSL 图形化应用的初步预览

从技术上讲,用户最初确实在 WSL 上获得了对 Linux 图形化应用程序的支持,但仅限于使用第三方 X 服务器时。这通常是不稳定的、缓慢、难以设置,并且使人们有隐私方面的顾虑。

结果是小部分 Linux 爱好者(碰巧运行 Windows),他们具有设置 X 服务器的能力。但是,这些爱好者对没有硬件加速支持感到失望。

所以,较为明智的方法是在 WSL 上只运行基于命令行的程序。

但是现在这个问题得到了改善。现在,微软 正式支持 了 Linux 图形化应用程序,我们很快就能够享受硬件加速了,

面向大众的 Linux 图形化应用程序:WSLg

图片来源:Microsoft Devblogs

随着微软发布新的 WSL,有了一系列巨大的改进,它们包括:

  • GPU 硬件加速
  • 开箱即用的音频和麦克风支持
  • 自动启用 X 服务器和 Pulse 音频服务

有趣的是,开发者们给这个功能起了一个有趣的外号 “WSLg”。

这些功能将使在 WSL 上运行 Linux 应用程序几乎与运行原生应用程序一样容易,同时无需占用过多性能资源。

因此,你可以尝试运行 自己喜欢的 IDE、特定于 Linux 的测试用例以及诸如 CAD 之类的各种软件。

Linux 应用的 GPU 硬件加速

图片鸣谢:Microsoft Devblogs

以前在 Windows 上运行图形化 Linux 程序的最大问题之一是它们无法使用硬件加速。当用户尝试移动窗口和执行任何需要对 GPU 性能有要求的任务时候,它常常陷入缓慢卡顿的局面。

根据微软发布的公告:

“作为此次更新的一部分,我们也启用了对 3D 图形的 GPU 加速支持,多亏了 Mesa 21.0 中完成的工作,所有的复杂 3D 渲染的应用程序都可以利用 OpenGL 在 Windows 10 上使用 GPU 为这些应用程序提供硬件加速。”

这是一个相当实用的改进,这对用户在 WSL 下运行需求强大 GPU 性能的应用程序提供了莫大帮助。

开箱即用的音频和麦克风支持!

如果想要良好的并行 Windows 和 Linux 程序,好的音频支持是必不可少的,随着新的 WSL 发布,音频得到开箱即用的支持,这都要归功于随着 X 服务器一同启动的 Pulse 音频服务。

微软解释说:

“WSL 上的 Linux 图形化应用程序还将包括开箱即用的音频和麦克风支持。这一令人兴奋的改进将使你的应用程序可以播放音频提示并调用麦克风,适合构建、测试或使用电影播放器、电信应用程序等。”

如果我们希望 Linux 变得更加普及,这是一项关键功能。这也将允许 Windows 应用的开发人员更好地将其应用移植到 Linux。

自动启动所有必需的服务器

图片鸣谢:Microsoft Devblogs

以前,你必须先手动启动 PulseAudioX 服务器,然后才能运行应用程序。现在,微软已经实现了一项服务,可以检查 Linux 应用程序是否正在运行,然后自动启动所需的服务器。

这使得用户更容易在 Windows 上运行 Linux 应用程序。

微软声称这些改动会显著提升用户体验。

“借助此功能,我们将启动一个配套的系统分发包,其中包含 Wayland、X 服务器、Pulse 音频服务以及使 Linux 图形化应用程序与 Windows 通信所需的所有功能。使用完图形化应用程序并终止 WSL 发行版后,系统分发包也会自动结束其会话。”

这些组件的结合使 Linux 图形化应用程序与常规 Windows 程序并行运行更为简单。

总结

有了这些新功能,微软似乎正在竭尽全力使 Linux 应用程序在 Windows 上运行。随着越来越多的用户在 Windows 上运行 Linux 应用程序,我们可能会看到更多的用户转向 Linux。特别是因为他们习惯的应用程序能够运行。

如果这种做法取得了成功(并且微软几年后仍未将其雪藏),它将结束 5 年来对将 Linux 应用引入 Windows 的探索。如果你想了解更多信息,可以查看 发行公告

你对在 Windows 上运行 Linux 图形化应用程序怎么看?请在下面留下你的评论。


via: https://news.itsfoss.com/linux-gui-apps-wsl/

作者:Jacob Crume 选题:lujun9972 译者:Kevin3599 校对:wxy

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

微软搁置 Windows 10X

2019 年底,微软宣布了 Windows 10X,这是一种为双屏 PC 设计的 Windows 10 变体。据消息人士,微软今年不会推出 Windows 10X,也有可能永远搁置。该公司已将资源转移到 Windows 10,为 10X 构建的技术正在迁移到 Windows 10。

大约十年来,微软一直在尝试以各种方式使 Windows 现代化。我们已经看到了 Windows RT、Windows 10S,以及现在的 Windows 10X。

现在的问题是,除了传统的 Windows 10 之外,其它的变体是否真的有未来?

更快的 Python:Pyston 开源发布 2.2

Pyston 2.2 是 Python 3.8.8 的一个实现,他们已经将该项目开源。Pyston 提供了各种优化,关键区别在于它对 JIT 和属性缓存的使用。该项目声称“针对大型现实世界的应用,如 Web 服务,无需开发工作即可提升高达 30% 的速度"。Pyston 删除了“许多 Python 支持的很少使用的调试功能”,目的是为了提高速度,减少 Python 调试给计算机带来的负担。删除这些调试功能只实现了 2% 的性能提升,但考虑到全世界有多少台计算机在运行 Python 代码,这是有意义的。

作为一个 Python 的不同实现,依旧采取了开源道路,这值得期待。

微软宣布 Rust for Windows

在 VS Code 和 Visual Studio 中,微软已经提供了对 Rust 编程语言相当良好的支持。随着 Rust for Windows v0.9 的发布,开发者现能够以一种更加习惯的方式,访问完整的 Windows API,从而轻松构建功能强大且丰富的 Windows 应用程序。

随着 Rust 开发环境和周边支持的完善,Rust 有望成为下一个流行语言。

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

 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中国 荣誉推出

这是有关 网络地址转换 network address translation (NAT)的系列文章中的第二篇。之前的第一篇文章介绍了 如何使用 iptables/nftables 的报文跟踪功能 来定位 NAT 相关的连接问题。作为第二部分,本文介绍 conntrack 命令,它允许你查看和修改被跟踪的连接。

引言

通过 iptables 或 nftables 配置的 NAT 建立在 netfilters 连接跟踪子系统之上。conntrack 命令作为 “conntrack-tools” 软件包的一部分,用于查看和更改连接状态表。

连接跟踪状态表

连接跟踪子系统会跟踪它看到的所有报文流。运行 sudo conntrack -L 可查看其内容:

tcp 6 43184 ESTABLISHED src=192.168.2.5 dst=10.25.39.80 sport=5646 dport=443 src=10.25.39.80 dst=192.168.2.5 sport=443 dport=5646 [ASSURED] mark=0 use=1
tcp 6 26 SYN_SENT src=192.168.2.5 dst=192.168.2.10 sport=35684 dport=443 [UNREPLIED] src=192.168.2.10 dst=192.168.2.5 sport=443 dport=35684 mark=0 use=1
udp 17 29 src=192.168.8.1 dst=239.255.255.250 sport=48169 dport=1900 [UNREPLIED] src=239.255.255.250 dst=192.168.8.1 sport=1900 dport=48169 mark=0 use=1

上述显示结果中,每行表示一个连接跟踪项。你可能会注意到,每行相同的地址和端口号会出现两次,而且第二次出现的源地址/端口对和目标地址/端口对会与第一次正好相反!这是因为每个连接跟踪项会先后两次被插入连接状态表。第一个四元组(源地址、目标地址、源端口、目标端口)记录的是原始方向的连接信息,即发送者发送报文的方向。而第二个四元组则记录的是连接跟踪子系统期望收到的对端回复报文的连接信息。这解决了两个问题:

  1. 如果报文匹配到一个 NAT 规则,例如 IP 地址伪装,相应的映射信息会记录在链接跟踪项的回复方向部分,并自动应用于同一条流的所有后续报文。
  2. 即使一条流经过了地址或端口的转换,也可以成功在连接状态表中查找到回复报文的四元组信息。

原始方向的(第一个显示的)四元组信息永远不会改变:它就是发送者发送的连接信息。NAT 操作只会修改回复方向(第二个)四元组,因为这是接受者看到的连接信息。修改第一个四元组没有意义:netfilter 无法控制发起者的连接状态,它只能在收到/转发报文时对其施加影响。当一个报文未映射到现有连接表项时,连接跟踪可以为其新建一个表项。对于 UDP 报文,该操作会自动进行。对于 TCP 报文,连接跟踪可以配置为只有 TCP 报文设置了 SYN 标志位 才新建表项。默认情况下,连接跟踪会允许从流的中间报文开始创建,这是为了避免对启用连接跟踪之前就存在的流处理出现问题。

连接跟踪状态表和 NAT

如上一节所述,回复方向的四元组包含 NAT 信息。你可以通过命令过滤输出经过源地址 NAT 或目标地址 NAT 的连接跟踪项。通过这种方式可以看到一个指定的流经过了哪种类型的 NAT 转换。例如,运行 sudo conntrack -L -p tcp –src-nat 可显示经过源 NAT 的连接跟踪项,输出结果类似于以下内容:

tcp 6 114 TIME_WAIT src=10.0.0.10 dst=10.8.2.12 sport=5536 dport=80 src=10.8.2.12 dst=192.168.1.2 sport=80 dport=5536 [ASSURED]

这个连接跟踪项表示一条从 10.0.0.10:5536 到 10.8.2.12:80 的连接。与前面示例不同的是,回复方向的四元组不是原始方向四元组的简单翻转:源地址已修改。目标主机(10.8.2.12)将回复数据包发送到 192.168.1.2,而不是 10.0.0.10。每当 10.0.0.10 发送新的报文时,具有此连接跟踪项的路由器会将源地址替换为 192.168.1.2。当 10.8.2.12 发送回复报文时,该路由器将目的地址修改回 10.0.0.10。上述源 NAT 行为源自一条 NFT 伪装#Masquerading) 规则:

inet nat postrouting meta oifname "veth0" masquerade

其他类型的 NAT 规则,例如目标地址 DNAT 规则或重定向规则,其连接跟踪项也会以类似的方式显示,回复方向四元组的远端地址或端口与原始方向四元组的远端地址或端口不同。

连接跟踪扩展

连接跟踪的记帐功能和时间戳功能是两个有用的扩展功能。运行 sudo sysctl net.netfilter.nf_conntrack_acct=1 可以在运行 sudo conntrack -L 时显示每个流经过的字节数和报文数。运行 sudo sysctl net.netfilter.nf_conntrack_timestamp=1 为每个连接记录一个开始时间戳,之后每次运行 sudo conntrack -L 时都可以显示这个流从开始经过了多少秒。在上述命令中增加 –output ktimestamp 选项也可以看到流开始的绝对时间。

插入和更改连接跟踪项

你可以手动为状态表添加连接跟踪项,例如:

sudo conntrack -I -s 192.168.7.10 -d 10.1.1.1 --protonum 17 --timeout 120 --sport 12345 --dport 80

这项命令通常被 conntrackd 用于状态复制,即将主防火墙的连接跟踪项复制到备用防火墙系统。于是当切换发生的时候,备用系统可以接管已经建立的连接且不会造成中断。连接跟踪还可以存储报文的带外元数据,例如连接跟踪标记和连接跟踪标签。可以用更新选项(-U)来修改它们:

sudo conntrack -U -m 42 -p tcp

这条命令将所有的 TCP 流的连接跟踪标记修改为 42。

删除连接跟踪项

在某些情况下,你可能想从状态表中删除条目。例如,对 NAT 规则的修改不会影响表中已存在流的经过报文。因此对 UDP 长连接(例如像 VXLAN 这样的隧道协议),删除表项可能很有意义,这样新的 NAT 转换规则才能生效。可以通过 sudo conntrack -D 命令附带可选的地址和端口列表选项,来删除相应的表项,如下例所示:

sudo conntrack -D -p udp  --src 10.0.12.4 --dst 10.0.0.1 --sport 1234 --dport 53

连接跟踪错误计数

conntrack 也可以输出统计数字:

# sudo conntrack -S
cpu=0 found=0 invalid=130 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=10
cpu=1 found=0 invalid=0 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0
cpu=2 found=0 invalid=0 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=1
cpu=3 found=0 invalid=0 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0

大多数计数器将为 0。Foundinsert 数将始终为 0,它们只是为了后向兼容。其他错误计数包括:

  • invalid:报文既不匹配已有连接跟踪项,也未创建新连接。
  • insert_failed:报文新建了一个连接,但插入状态表时失败。这在 NAT 引擎在伪装时恰好选择了重复的源地址和端口时可能出现。
  • drop:报文新建了一个连接,但是没有可用的内存为其分配新的状态条目。
  • early_drop:连接跟踪表已满。为了接受新的连接,已有的未看到双向报文的连接被丢弃。
  • error:icmp(v6) 收到与已知连接不匹配的 icmp 错误数据包。
  • search_restart:查找过程由于另一个 CPU 的插入或删除操作而中断。
  • clash_resolve:多个 CPU 试图插入相同的连接跟踪条目。

除非经常发生,这些错误条件通常无害。一些错误可以通过针对预期工作负载调整连接跟踪子系统的参数来降低其发生概率,典型的配置包括 net.netfilter.nf_conntrack_bucketsnet.netfilter.nf_conntrack_max 参数。可在 nf\_conntrack-sysctl 文档 中查阅相应配置参数的完整列表。

当报文状态是 invalid 时,请使用 sudo sysctl net.netfilter.nf_conntrack_log_invalid=255 来获取更多信息。例如,当连接跟踪遇到一个所有 TCP 标志位均为 0 的报文时,将记录以下内容:

nf_ct_proto_6: invalid tcp flag combination SRC=10.0.2.1 DST=10.0.96.7 LEN=1040 TOS=0x00 PREC=0x00 TTL=255 ID=0 PROTO=TCP SPT=5723 DPT=443 SEQ=1 ACK=0

总结

本文介绍了如何检查连接跟踪表和存储在跟踪流中的 NAT 信息。本系列的下一部分将延伸讨论连接跟踪工具和连接跟踪事件框架。


via: https://fedoramagazine.org/network-address-translation-part-2-the-conntrack-tool/

作者:Florian Westphal 选题:lujun9972 译者:cooljelly 校对:wxy

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

Fedora 和红帽 Linux。这两个 Linux 发行版都属于同一个组织,都使用 RPM 包管理器,都提供桌面版和服务器版。这两个 Linux 发行版对操作系统世界都有较大的影响。

这就是为什么在这两个类似的发行版之间比较容易混淆的原因。在这篇文章中,我将讨论红帽 Linux 和 Fedora 的相似之处和区别。

如果你想在两者之间做出选择,或者只是想了解来自同一组织的两个发行版的概念,这将对你有所帮助。

Fedora 和红帽 Linux 的区别

我们先来谈谈这两个发行版的区别。

社区版与企业版

早在 1995 年,红帽 Linux 就有了它的第一个正式版本,它是作为盒装产品出售的。它也被称为 红帽商业 Linux Red Hat Commercial Linux

后来在 2003 年,红帽把红帽 Linux 变成了完全以企业客户为中心的 红帽企业 Linux Red Hat Enterprise Linux (RHEL)。从那时起,红帽 Linux 就是一个企业版的 Linux 发行版。

它的意思是,你必须订阅并付费才能使用红帽 Linux,因为它不是作为一个免费的操作系统。甚至所有的软件、错误修复和安全支持都只对那些拥有红帽订阅的人开放。

当红帽 Linux 变成 RHEL 时,它也导致了 Fedora 项目的成立,该项目负责 Fedora Linux的开发。

与红帽不同,Fedora 是一个社区版的 Linux 发行版,每个人都可以免费使用,包括错误修复和其他服务。

尽管红帽公司赞助了 Fedora 项目,但 Fedora Linux 主要由一个独立的开源社区维护。

免费与付费

好吧,你会发现大多数的 Linux 发行版都可以免费下载。Fedora Linux 也是这样一个发行版,它的桌面版、服务器版、所有其他版本和 Spin 版都是免费 可下载 的。

还有一些 Linux 发行版,你必须付费购买。红帽企业 Linux 就是这样一个流行的基于 Linux 的操作系统,它是需要付费的。

除了价格为 99 美元的 RHEL 开发者版本,你必须支付超过 100 美元才能购买 其他 RHEL 版本,用于服务器、虚拟数据中心和台式机。

然而,如果你碰巧是一个个人开发者,而不是一个组织或团队,你可以加入 红帽开发者计划。根据该计划,你可以在 12 个月内免费获得红帽企业 Linux 包括其他产品的使用权。

上游还是下游

Fedora 是 RHEL 的上游,RHEL 是 Fedora 的下游。这意味着当 Fedora 的新版本发布时,红帽公司会利用 Fedora 的源代码,在其下一个版本中加入所需的功能。

当然,红帽公司也会在合并到自己的 RHEL 代码库之前测试这些拉来的代码。

换句话说,Fedora Linux 作为红帽公司的一个试验场,首先检查功能,然后将其纳入 RHEL 系统中。

发布周期

为了给操作系统的所有组件提供定期更新,RHEL 和 Fedora 都遵循一个标准的定点发布模式。

Fedora 大约每六个月发布一个新版本(主要在四月和十月),并提供长达 13 个月的维护支持。

红帽 Linux 每年发布一个特定系列的新的定点版本,大约 5 年后发布一个主要版本。红帽 Linux 的每个主要版本都要经过四个生命周期阶段,从 5 年的支持到使用附加订阅的 10 年的延长寿命阶段。

尝鲜 Linux 发行版

当涉及到创新和新技术时,Fedora 比 RHEL 更积极。即使 Fedora 不遵循 滚动发布模式,它也是以早期提供尝鲜技术而闻名的发行版。

这是因为 Fedora 定期将软件包更新到最新版本,以便在每六个月后提供一个最新的操作系统。

如果你知道,GNOME 40 是 GNOME 桌面环境的最新版本,上个月才发布。而 Fedora 的最新稳定版 版本 34 确实包含了它,而 RHEL 的最新稳定版 8.3 仍然带有 GNOME 3.32。

文件系统

在选择操作系统时,你是否把系统中数据的组织和检索放在了很重要的位置?如果是的话,在决定选择 Red Hat 和 Fedora 之前,你应该了解一下 XFS 和 Btrfs 文件系统。

那是在 2014 年,RHEL 7.0 用 XFS 取代 Ext4 作为其默认文件系统。从那时起,红帽在每个版本中都默认有一个 XFS 64 位日志文件系统。

虽然 Fedora 是红帽 Linux 的上游,但 Fedora 继续使用 Ext4,直到去年 Fedora 33 引入 Btrfs 作为默认文件系统

有趣的是,红帽在最初发布的 RHEL 6 中包含了 Btrfs 作为“技术预览”。后来,红帽放弃了使用 Btrfs 的计划,因此在 2019 年从 RHEL 8 和后来发布的主要版本中完全 删除 了它。

可用的变体

与 Fedora 相比,红帽 Linux 的版本数量非常有限。它主要适用于台式机、服务器、学术界、开发者、虚拟服务器和 IBM Power LE。

而 Fedora 除了桌面、服务器和物联网的官方版本外,还提供不可变的桌面 Silverblue 和专注于容器的 Fedora CoreOS。

不仅如此,Fedora 也有特定目的的定制变体,称为 Fedora Labs。每个 ISO 都为专业人士、神经科学、设计师、游戏玩家、音乐家、学生和科学家打包了一套软件。

想要 Fedora 中不同的桌面环境吗?你也可以查看官方的 Fedora Spins,它预先配置了几种桌面环境,如 KDE、Xfce、LXQT、LXDE、Cinnamon 和 i3 平铺窗口管理器。

Fedora Cinnamon Spin

此外,如果你想在新软件登陆稳定版 Fedora 之前就得到它,Fedora Rawhide 是另一个基于滚动发布模式的版本。

Fedora 和红帽 Linux 的相似之处

除了不同之处,Fedora 和红帽 Linux 也有几个共同点。

母公司

红帽公司是支持 Fedora 项目和 RHEL 的共同公司,在开发和财务方面都有支持。

即使红帽公司在财务上赞助 Fedora 项目,Fedora 也有自己的理事会,在没有红帽公司干预的情况下监督其发展。

开源产品

在你认为红帽 Linux 要收钱,那么它怎么能成为一个开源产品之前,我建议阅读我们的 文章,它分析了关于 FOSS 和开源的一切。

作为一个开源软件,并不意味着你可以免费得到它,有时它可能要花钱。红帽公司是一个已经在开源中建立了业务的开源公司。

Fedora 和红帽 Linux 都是开源的操作系统。所有的 Fedora 软件包都可以在 这里 得到源代码和在 这里 得到已经打包好的软件。

然而,就红帽 Linux 而言,源代码也 免费提供 给任何人。但与 Fedora 不同的是,你需要为使用可运行的代码付费,要么你可以自由地自行构建。

你支付给红帽的订阅费实际上是用于系统维护和技术支持。

桌面环境和初始系统

Fedora 和红帽 Linux 的旗舰桌面版采用了 GNOME 图形界面。所以,如果你已经熟悉了 GNOME,从任何一个发行版开始都不会有太大的问题。

GNOME 桌面

你是少数讨厌 SystemD 初始化系统的人吗?如果是这样,那么 Fedora 和红帽 Linux 都不适合你,因为它们都默认支持并使用 SystemD。

总之,如果你想用 Runit 或 OpenRC 等其他初始化系统代替它,也不是不可能,但我认为这不是一个好主意。

基于 RPM 的发行版

如果你已经精通使用 YUM、RPM 或 DNF 命令行工具来处理 RPM 软件包,赞一个!你可以在这两个基于 RPM 的发行版中选一个。

默认情况下,红帽 Linux 使用 RPM( 红帽包管理器 Red Hat Package Manager )来安装、更新、删除和管理 RPM 软件包。

Fedora 在 2015 年的 Fedora 21 之前使用 YUM( 黄狗更新器修改版 Yellowdog Updater Modified )。从 Fedora 22 开始,它现在使用 DNF( 时髦版 Yum Dandified Yum )代替 YUM 作为默认的 软件包管理器

Fedora 或红帽 Linux:你应该选择哪一个?

坦率地说,这真的取决于你是谁以及你为什么要使用它。如果你是一个初学者、开发者,或者是一个想用它来提高生产力或学习 Linux 的普通用户,Fedora 可以是一个不错的选择。

它可以帮助你轻松地设置系统,进行实验,节省资金,还可以成为 Fedora 项目的一员。让我提醒你,Linux 的创造者 Linus Torvalds 在他的主要工作站上使用 Fedora Linux。

然而,这绝对不意味着你也应该使用 Fedora。如果你碰巧是一个企业,考虑到 Fedora 的支持生命周期在一年内就会结束,你可能会重新考虑选择它。

而且,如果你不喜欢每个新版本的快速变化,你可能不喜欢尝鲜的 Fedora 来满足你的服务器和业务需求。

使用企业版红帽,你可以得到高稳定性、安全性和红帽专家工程师为你的大型企业提供的支持品质。

那么,你是愿意每年升级你的服务器并获得免费的社区支持,还是购买订阅以获得超过 5 年的生命周期和专家技术支持?决定权在你。


via: https://itsfoss.com/fedora-vs-red-hat/

作者:Sarvottam Kumar 选题:lujun9972 译者:wxy 校对:wxy

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