我有兴趣知道在 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
。
我尝试使用两者ethtool
来nmcli
关闭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 request
TX
硬件:带有标准多模光纤 LC 连接器的两端口 Intel X710(TX 已断开)。