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 는 이미 오래 전부터 개발되어 왔습니다. 10년은 넘은 것 같아요. net-tools 지원이 끊긴 시점과 비슷하지 않을까 생각됩니다.
그래서 이미 net-tools 프로그램들의 모든 기능들을 다 카바할 수 있어요. 오히려 더 기능이 많습니다.
심지어 오픈소스이니 개발 속도에 아주 박차를 가하고 있네요. 좋습니다.
맥에선 원래 자체 network utilities를 제공하고 있었습니다. 이름도 net-tools와 비슷하게 ifconfig, netstat ... 입니다.
하지만 이제 리눅스에서도 이런 명령어 이름들이 퇴출당하고 있기도 하고, 저처럼 둘 다 사용하는 사람들의 경우 리눅스와 맥의 명령어 통일(?)을 위해 iproute2를 설치해줍시다.
brew install iproute2mac
아쉽지만 ss 명령어는 사용할 수 없습니다.
iproute2 의 2가지 대표 유틸리티인 ip와 ss 사용법을 알아봅시다.
기능이 너무 많아 아주 간단한 것만 적어볼게요.
ip address show
ip address show dev en0
ip link show
ip -statistics link show
ip link set en0 up
ip link set en0 down
ip route show
ip neighbor show
ss -a
ss -antp
네트워크 인터페이스들의 정보를 보여줍니다. IP, MAC, DNS 서버 정보 등입니다.
특정 장치(여기선 en0)의 정보만 보여줍니다.
네트워크 인터페이스들의 상태를 보여줍니다.
각 네트워크 인터페이스의 링크 통계 정보를 보여줍니다.
특정 네트워크 인터페이스(여기선 en0)를 활성화합니다.
특정 네트워크 인터페이스(여기선 en0)를 비활성화합니다.
모든 routing 요소들을 보여줍니다.
같은 서브 네트워크 안에서 이웃 호스트가 살아있는 지 보여줍니다. 이미 ARP 테이블에 등록이 되어있는 알려진 호스트들입니다.
모든 소켓 정보를 보여줍니다.
리눅스 netstat과 비슷합니다. 모든 소켓의 타이머 정보를 IP 주소로 해당 소켓을 사용하는 프로세스 정보와 함께 보여줍니다.
더 많은 사용법은 Redhat ip Command Cheat Sheet 페이지에 자세하고 깔끔하게 중요한 것만 나와 있으니 참고해주세요 :)
그리고 각각 옵션들은 가능한 한 생략해서 입력할 수 있어요.
예를 들면, ip addr show
는 ip 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를 사용합시다 :)
- https://wiki.linuxfoundation.org/networking/iproute2
- https://en.wikipedia.org/wiki/Iproute2
- https://en.wikipedia.org/wiki/Network_utility
- https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf
- https://www.tecmint.com/ip-command-examples/
'Programming > OS, Program, Framework Tip' 카테고리의 다른 글
inxi - 시스템 정보 출력 툴 (0) | 2018.12.31 |
---|---|
리눅스/우분투 - xinput 으로 입력 디바이스 키 매핑 바꾸기 (버튼 기능 맞바꾸기, 스왑) (0) | 2018.11.01 |
nmap - 포트/IP 스캔 등 네트워크 스캔 도구 (0) | 2018.05.24 |
macOS + 일반 (텐키레스) 키보드, 일반 4/5 버튼 마우스 깔끔하게 사용하는 방법 (0) | 2018.04.23 |