Programming/OS, Program, Framework Tip

ip, ss (iproute2 utils) - 더 빠르고 정확한 ifconfig, netstat 대체 명령어

awesometic 2018. 5. 25. 20:35
반응형


ifconfg, netstat

ifconfig, netstat, route... 이 명령어들은 리눅스 사용자라면 모를 수가 없습니다. 컴퓨터 관련 전공자라면 당연히, 최소 한 번은 들어봤을 거예요. 내 컴퓨터의 네트워크 정보를 알기 위해 쓰이곤 했어요.

하지만 더 이상 안 쓰이게 됐습니다. 이런 net-tools 프로그램들은 요새 네트워크 장비들을 다루기에는 너무 느리고, 비효율적이면서 출력할 때 생략된 정보도 많아 새로 짜여져야만 했습니다. 심지어 유지보수도 안 되고 있었거든요.

Ubuntu 16.04, 4.14 커널인 제 오드로이드 NAS에서 확인해볼게요.

ifconfig --version
net-tools 1.60
ifconfig 1.42 (2001-04-13)

netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang and others
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +FW_MASQUERADE +I18N
AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE 
HW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64

route --version
net-tools 1.60
route 1.98 (2001-04-15)
+NEW_ADDRT +RTF_IRTT +RTF_REJECT +I18N
AF: (inet) +UNIX +INET +INET6 +IPX +AX25 +NETROM +X25 +ATALK +ECONET +ROSE 
HW:  +ETHER +ARC +SLIP +PPP +TUNNEL -TR +AX25 +NETROM +X25 +FR +ROSE +ASH +SIT +FDDI +HIPPI +HDLC/LAPB +EUI64

네, 이젠 iproute2 프로그램으로 갈아타야만 해요. 아직도 ifconfig 쓰신다면 이미 17년전에 지원이 끊긴 프로그램을 사용하고 계신 겁니다. 물론 이건 ARM이지만, x86 시스템에서도 뭐 크게 다르지 않겠죠.

무엇보다도 드디어 Ubuntu 18.04에서 ifconfig와 netstat 등 net-tools 프로그램들은 포함하지 않고, iproute2 suite만 제공합니다.


iproute2

사실 iproute2 는 이미 오래 전부터 개발되어 왔습니다. 10년은 넘은 것 같아요. net-tools 지원이 끊긴 시점과 비슷하지 않을까 생각됩니다.

그래서 이미 net-tools 프로그램들의 모든 기능들을 다 카바할 수 있어요. 오히려 더 기능이 많습니다.

심지어 오픈소스이니 개발 속도에 아주 박차를 가하고 있네요. 좋습니다.


iproute2 for macOS

맥에선 원래 자체 network utilities를 제공하고 있었습니다. 이름도 net-tools와 비슷하게 ifconfig, netstat ... 입니다.

하지만 이제 리눅스에서도 이런 명령어 이름들이 퇴출당하고 있기도 하고, 저처럼 둘 다 사용하는 사람들의 경우 리눅스와 맥의 명령어 통일(?)을 위해 iproute2를 설치해줍시다.

brew install iproute2mac

아쉽지만 ss 명령어는 사용할 수 없습니다.


사용법

iproute2 의 2가지 대표 유틸리티인 ip와 ss 사용법을 알아봅시다.

기능이 너무 많아 아주 간단한 것만 적어볼게요.

  • ip address show
  • 네트워크 인터페이스들의 정보를 보여줍니다. IP, MAC, DNS 서버 정보 등입니다.

  • ip address show dev en0
  • 특정 장치(여기선 en0)의 정보만 보여줍니다.

  • ip link show
  • 네트워크 인터페이스들의 상태를 보여줍니다.

  • ip -statistics link show
  • 각 네트워크 인터페이스의 링크 통계 정보를 보여줍니다.

  • ip link set en0 up
  • 특정 네트워크 인터페이스(여기선 en0)를 활성화합니다.

  • ip link set en0 down
  • 특정 네트워크 인터페이스(여기선 en0)를 비활성화합니다.

  • ip route show
  • 모든 routing 요소들을 보여줍니다.

  • ip neighbor show
  • 같은 서브 네트워크 안에서 이웃 호스트가 살아있는 지 보여줍니다. 이미 ARP 테이블에 등록이 되어있는 알려진 호스트들입니다.

  • ss -a
  • 모든 소켓 정보를 보여줍니다.

  • ss -antp
  • 리눅스 netstat과 비슷합니다. 모든 소켓의 타이머 정보를 IP 주소로 해당 소켓을 사용하는 프로세스 정보와 함께 보여줍니다.

더 많은 사용법은 Redhat ip Command Cheat Sheet 페이지에 자세하고 깔끔하게 중요한 것만 나와 있으니 참고해주세요 :)

그리고 각각 옵션들은 가능한 한 생략해서 입력할 수 있어요.

예를 들면, ip addr showip a로 줄여질 수 있습니다. a로 시작하는 옵션이 address밖에 없거든요. 따라서 a, ad, add, addr, addre... 모두 같은 결과를 출력합니다. 그리고 기본적으로 show는 생략 가능해요.

help를 볼게요.

ip   
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                   vrf | sr }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec |
                    -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
                    -4 | -6 | -I | -D | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}

여기서 address 뿐 아니라 route, neigh, -details, ... 모두 그렇습니다.

이렇게 사용하면 상당히 적은 타이핑으로 원하는 정보를 얻을 수 있어요. 빠르게 사용할 만한 몇 가지 예를 들어볼게요.

  • ip a
  • ip -s l
  • ip n
  • sudo ip a a 192.168.0.200/24 dev enp0s25
  • enp0s25 네트워크 인터페이스에 192.168.0.200 IP를 추가하는 명령어입니다.

옵션의 정확한 이름을 이미 알고 있다면, 이렇게 줄여 쓰는 게 더 좋네요.

이제 ip와 ss를 사용합시다 :)


참고


반응형