Ubuntu 服务器网络接口如何工作?

Ubuntu 服务器网络接口如何工作?

昨天,我在我的 Ubuntu-Server 23.04(在 Raspberry 4 上运行)上安装了“Cockpit”,这样我就可以从我的 Windows 10 PC 上管理它。到目前为止,管理界面非常清晰易懂。

在 Cockpit 的网络选项卡中有以下概述:

网络接口概述

只是为了澄清一下:

我禁用了 Wifi,因此所有流量都通过 eth0,据我所知,这是我的 RP 的以太网端口。

tun0 是我将 RP 上的所有流量绑定到的 vpn 接口。

我的问题是:

由于所有网络流量都应该通过 vpn 接口 (tun0),那么 eth0 的“发送”和“接收”流量怎么可能总是比相应类别的 tun0 流量高一点呢?难道不应该一样吗?我的系统是否在 vpn 隧道之外发送/接收流量?RP 通过 tun0 发送 7.35 Mbps,通过 eth0 发送 8.27 Mbps。额外的 0.92 Mbps 来自哪里?

“lo” 到底应该做什么?我的意思是,我知道它是本地主机/环回,但它到底在做什么,即为什么会有流量或它发送/接收了什么?

我问这个问题的主要原因是,如果我的系统泄露了我的真实 IP 或任何类型的流量,那就真的很糟糕了。我的意思是,我在我的 vpn 设置中设置了锁定模式、终止开关、自动连接,天知道还有什么,所以我有点担心 eth0 中的这些额外流量来自哪里。

谢谢您的帮助。

答案1

由于所有网络流量都应该通过 vpn 接口 (tun0),那么 eth0 的“发送”和“接收”流量怎么可能总是比相应类别的 tun0 流量高一点呢?难道不应该一样吗?

大部分情况下如此,但并非完全如此。VPN 是一种隧道,这意味着它将 IP 数据包封装在新的IP 数据包。隧道传输总会有一些开销 - 具体取决于隧道协议,但您可以假设为 2-4%(额外的 VPN 协议报头和“外部”UDP 和 IP 报头,以及偶尔的“控制”数据包,例如重新密钥)。差异通常应该小于您看到的值,但绝不会为零。

我的系统是否在 VPN 隧道之外发送/接收流量?RP 通过 tun0 发送 7.35 Mbps,通过 eth0 发送 8.27 Mbps。额外的 0.92 Mbps 来自哪里?

最简单的方法是使用数据包捕获工具,例如 Wireshark、tcpdump 或 tshark,它们可以让你看看交通情况。将其指向 eth0,将其设置为过滤掉 VPN 流量(如果您通过 SSH 运行它,则过滤掉 SSH 流量),查看剩下的内容。

# tcpdump -n -i eth0 'not (port <vpn_port>)'

“lo” 到底应该做什么?我的意思是,我知道它是本地主机/环回,但它到底在做什么,即为什么会有流量或它发送/接收了什么?

回环经常用于本地程序之间的通信,例如对本地运行的缓存服务(Ubuntu 很可能正在运行 systemd-resolved)的 DNS 查询,或程序组件之间的内部通信。虽然通常有更好的方法来实现这一点,但通过回环进行 TCP 是一种简单且跨平台的方法。

(例如,某些游戏启动器(如 Battle.net)由单独的 GUI 和“代理”组件组成 - 所有工作(如安装或更新)并非由 GUI 应用程序直接完成;而是由 GUI 通过 与之通信的后台“代理”服务完成http://localhost:<randomport>。)

再次,通过将数据包捕获工具指向接口就很容易找出答案lo

相关内容