강좌 & 팁
네트워크 허브를 개발 하다보니 연결된 네트워크 상태들을 변경해 테스트 해봐야 할 경우가 생겼습니다.
현재 연결된 이더넷 속도가 무엇인지 링크상태가 어떤지, 통신모드가 무엇인지 등등을 쉽게 알 수 있는 방법이 없을까요?
ethtool ( 리눅스용 ) 을 사용 하면 내 pc 의 네트워크 상태를 보기도 하고 변경도 쉽게 할 수 있습니다.
일단 간단히 사용법을 소개 하면
]# ethtool [옵션] [이더넷 채널] [파라미터] 입니다.
먼저 간단히 현재 내 pc 의 네트워크 상태를 확인 해 보겠습니다.
----------------------------------------------------------------
root@r2nt:/# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
root@r2nt:/#
----------------------------------------------------------------
내용을 보내 eth0 가 100 Mb/s , Full Duplex, auto-negotiation 모드 인 것을 쉽게 알 수 있네요.
상태를 변경 하는 방법은 아래와 같습니다.
ethtool -s ethX speed N [duplex half|full] [port tp|aui|bnc|mii]
[autoneg on|off] [advertise N] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N |
msglvl type on|off ...]
예를 들어, auto-negotiation 모드를 끄는 방법은 아래와 같습니다.
]#ethtool -s eth0 autoneg off
스피드와 Duplex 를 동시에 제어 하는 방법은 아래와 같습니다.
]#ethtool -s eth0 autoneg off speed 100 duplex half
자주 사용할 일은 없어 보이는 툴이지만, 간혹 필요할때는 요긴하게 쓰일 것 같네요.