尽管没有运营商,但使用 ethtool/nmcli/iproute2 强制接口启动?

尽管没有运营商,但使用 ethtool/nmcli/iproute2 强制接口启动?

我有兴趣知道在 Linux 或 Unix 中是否有可能在没有运营商的情况下强制接口处于“启动”状态,这意味着

# ip link
enp3s0f0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000

这是一个光纤接口,TX 连接已拔出,但 RX 已插入,并且数据正在向该接口发送。

tcpdump在接口上没有报告任何内容,我认为这是因为内核没有在该接口上注册任何内容NO-CARRIER

我尝试使用两者ethtoolnmcli关闭AUTONEG和其他链接发现功能:

nmcli> print all
===============================================================================
                       Connection profile details (Fiber1)
===============================================================================
connection.type:                        802-3-ethernet
connection.interface-name:              enp3s0f0
connection.autoconnect:                 yes
connection.metered:                     unknown
connection.lldp:                        disable
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)
connection.wait-device-timeout:         -1
-------------------------------------------------------------------------------
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   1000
802-3-ethernet.duplex:                  half
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mtu:                     1500
-------------------------------------------------------------------------------
ipv4.method:                            disabled
-------------------------------------------------------------------------------
ipv6.method:                            disabled

我的理解是,这些设置应该禁用所有必要的自动检测功能的执行,并移交接口及其参数的手动处理。

但即使在跑步之后(和ip link set dev enp3s0f0 up:

[Torxed@machine torxed]# nmcli con up id Fiber1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

界面报告为:

enp3s0f0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000

一个奇怪的神器是这样的:

# nmcli
...
enp3s0f0: connected to Fiber1
        "Intel X710"
        ethernet (i40e), 40:A6:B7:00:00:01, hw, port 40a6b72000001, mtu 1500

我不知道为什么会像 Linux 那样nmcli报告它。connected

我也研究了一下驱动程序,看来i40e没有任何对内核 API 的调用netif_carrier_on()在里面i40e_ethtool.c部分中。而且似乎没有一个实施的方法网络工具要么强制这样的事情,至少不是一个标准化的参数。ethtool确实允许通过设置私人公开的标志--set-priv-flags。但英特尔驱动程序没有标志来处理这种情况。因此,除非有人让我大吃一惊,否则我可能被迫在这个阶段修改驱动程序。

最终目标:在没有连接到相关机器的情况下通过光纤tcpdump查看,预计两端都不会响应。ICMP requestTX

硬件:带有标准多模光纤 LC 连接器的两端口 Intel X710(TX 已断开)

相关内容