RTNETLINK答复:没有这样的文件或目录。

12
当我运行这个命令时:
tc qdisc add dev eth0 root red limit 51200000 min 128000 max 512000 avpkt 1024 burst 200 ecn probability 0.5

我理解了

RTNETLINK answers: No such file or directory

我已经为netfilters配置了内核,以及在menuconfig中配置了所有网络选项。
我不明白为什么会出现这个错误。我正在使用iproute2-2.6.23和Fedora 8。
这在我的笔记本电脑上运行得很好,但在我的台式电脑上却不行?

检查 dmesg 输出?可能会有错误消息。还要检查 SELinux 日志,我可以想象一个 shell 可能没有 Netlink 的权限。 - sarnold
kjournald 正在启动。提交间隔为 5 秒。 sda1 上的 EXT3 文件系统,内部日志。 EXT3-fs:以有序数据模式挂载文件系统。 在 /dev/mapper/VolGroup00-LogVol01 上添加了 1835000k 的交换空间。优先级:-1,范围:1835000k。 NET:已注册协议族 10。 lo:禁用隐私扩展。 时钟源 tsc 不稳定(差值 = -117591543 ns)。 eth0:没有 IPv6 路由器。 这是我作为 Demesd 输出得到的内容,我还有一个疑问,是因为 SELINUX 状态吗? - vishal
在启用了SELinux的Fedora 19上,使用以下命令:“tc qdisc add dev p4p1 root red limit 51200000 min 128000 max 512000 avpkt 1024 burst 200 ecn probability 0.5” - c4f4t0r
可能是RTNETLINK answers: No such file or directory error的重复问题。 - deceleratedcaviar
3个回答

2

错误可能是由于Linux内核不支持流量控制而引起的。

以下是文档摘录,列出了在Linux中实现流量控制功能所需的内核编译选项:

来源:Traffic Control HOWTO - 内核要求

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_CSZ=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_POLICE=y

A kernel compiled with the above set of options will provide modular support for almost everything discussed in this documentation. The user may need to modprobe module before using a given feature.


0

在一个没有包含通常的预编译模块数组的系统上编译(内部)ralink wifi驱动程序后,我遇到了这个问题。虽然模块已加载且接口存在,但无法设置:

ip link set wlanB up
RTNETLINK answers: No such file or directory

(是的,wlanB 是正确的。)最终发现系统也缺少了通常在 /lib/firmware 中的一系列固件。这可以通过 apt install firmware-ralink 来解决。


0
在我的系统上,您的命令会自动加载sch_red模块。这个问题相当古老,所以在现代系统上,如果您有所需的模块,自动加载应该可以正常工作。通过运行以下命令检查是否缺少内核模块:

modprobe sch_red

如果没有打印任何内容,请重试运行tc命令,看看是否有帮助。

如果没有帮助,请确保在内核中编译了CONFIG_NET_SCH_RED(随机早期检测)。更多内核文档信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接