어떤 식으로든 손상될 수도 있고 손상되지 않을 수도 있는 USB->이더넷 카드가 있습니다. 문제는 실제로 테스트하는 방법을 모른다는 것입니다. 또한 일반 이더넷 포트도 있으므로 (이미 테스트된) 케이블을 한 포트에서 다른 포트로 연결할 수 있습니다. 그러면 어떻게 될까요?
한 인터페이스에 NAT를 설정하고 다른 인터페이스에 연결을 시도할 수 있지만 이는 과도한 것처럼 보이고 다른 문제가 발생할 수 있습니다. 나는 원시 이더넷 프레임을 보내고 상대방이 이를 수신하는지 확인하는 방법을 원합니다.
조금 보았지만 netcat
TCP/UDP 수준에서 작동하는 반면 이더넷 프레임 수준에서 작업해야 할 것 같습니다.
이 USB->이더넷 어댑터를 테스트하는 가장 좋은 방법은 무엇입니까?
답변1
우선, 이 도구를 사용하여 ethtool
NIC 자체 테스트를 실행할 수 있습니다.
ethtool -t|--test DEVNAME Execute adapter self test
예
$ sudo ethtool -t eth0
The test result is PASS
The test extra info:
Register test (offline) 0
Eeprom test (offline) 0
Interrupt test (offline) 0
Loopback test (offline) 0
Link test (on/offline) 0
NIC의 통계를 보는 것도 문제를 추가로 진단하는 데 유용할 수 있습니다.
$ sudo ethtool -S eth0
NIC statistics:
rx_packets: 988097069
tx_packets: 589028032
rx_bytes: 1291674232357
tx_bytes: 116257143322
rx_broadcast: 210375
tx_broadcast: 34690
rx_multicast: 69184
tx_multicast: 179
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 69184
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 346104
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 56
rx_flow_control_xoff: 56
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_long_byte_count: 1291674232357
rx_csum_offload_good: 987406053
rx_csum_offload_errors: 3730
rx_header_split: 0
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
rx_dma_failed: 0
tx_dma_failed: 0
"error" 문자열이 포함된 모든 통계는 0이어야 합니다. 그렇지 않다면 이러한 문제의 원인이 무엇인지 추적하겠습니다.