Linux나 Unix에서 캐리어 없이 인터페이스를 강제로 "up" 상태로 만드는 것이 가능한지 알고 싶습니다.
# 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
nmcli
Linux가 왜 그렇게 보고하는지 모르겠습니다 .connected
드라이버도 살펴봤는데 i40e
커널 API에 대한 호출이 없는 것 같습니다.netif_carrier_on()내부 i40e_ethtool.c
섹션에. 그리고 그것을 구현할 방법이 없는 것 같습니다.네트워크 도구적어도 표준화된 매개변수가 아닌 이와 같은 것을 강제합니다. ethtool
이것은 실제로 Private을 Public 플래그로 설정함으로써 허용됩니다 --set-priv-flags
. 그러나 Intel 드라이버에는 이 상황을 처리할 수 있는 플래그가 없습니다. 따라서 누군가 나를 놀라게 하지 않는 한 이 단계에서 드라이버를 수정해야 할 수도 있습니다.
최종 목표: 문제의 기계에 연결하지 않고 광섬유를 살펴보면 tcpdump
양쪽 끝에서 응답이 없을 것으로 예상됩니다.ICMP request
TX
하드웨어: 표준 다중 모드 파이버 LC 커넥터가 있는 2포트 Intel X710(TX 연결이 끊어졌습니다).