네트워크 허브를 개발 하다보니 연결된 네트워크 상태들을 변경해 테스트 해봐야 할 경우가 생겼습니다.


현재 연결된 이더넷 속도가 무엇인지 링크상태가 어떤지, 통신모드가 무엇인지 등등을 쉽게 알 수 있는 방법이 없을까요?


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 


자주 사용할 일은 없어 보이는 툴이지만,  간혹 필요할때는 요긴하게 쓰일 것 같네요.