网络接口绑定似乎只能以 root 身份工作

网络接口绑定似乎只能以 root 身份工作

我有一台带有两个网络接口的 CentOS 7 服务器。一个指向我们的 LAN (ens32),另一个指向我们的 DMZ (ens33)。

虽然 LAN 接口工作正常,但我注意到,如果以 root 身份登录,流量似乎只会穿过 DMZ 接口,并且我不确定这意味着什么,或者它是否对我遇到的其他问题有任何净影响。

例如,如果我运行:

curl --interface ens32 ipecho.net/plain

作为非 root 用户,我将获得该接口的公共 IP。

如果我运行:

curl --interface ens33 ipecho.net/plain

作为非 root 用户,该命令似乎停止运行,我将被迫终止该进程。

如果我以 root 身份运行前面的命令,我将得到预期的输出,即该接口的公共 IP。

谁能解释一下这里可能发生了什么?

答案1

从官方页面可以看出curl,要指定/绑定到特定接口,需要具有 CAP_NET_RAW 或以root.

因此,root能够进行绑定/路由,并且它不适用于普通用户。

当普通用户使用 时curl,如果没有被允许使用该--interface选项,则该操作将应用服务器的默认路由规则。

来自 curl 官方页面curl.1 手册页:

- 界面

使用指定的接口执行操作。您可以输入接口名称、IP 地址或主机名。一个例子可能看起来像:

卷曲--接口 eth0:1https://www.example.com/

如果多次使用此选项,则将使用最后一次。

在 Linux 上,它可用于指定 VRF,但二进制文件需要具有 CAP_NET_RAW 或以 root 身份运行。

有关 Linux VRF 的更多信息:https://www.kernel.org/doc/Documentation/networking/vrf.txt

相关内容