Search
Duplicate
📮

ip 명령어 메세지 살펴보기

간단소개
네트워크 문제가 있어서 아묻따 터미널에 ip a 입력해보는데, 메세지 먼 말인지 몰라서 감상만 잘 하고 나와봤다면 거수 (일단 나부터 ㅋㅋ )
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Linux
Network
태그
linux
network
Scrap
8 more properties

ip 명령어란?

Linux 시스템의 네트워크 인터페이스를 설정하는 명령어 도구.
1) IP 주소를 변경/설정하거나, 2) 네트워크 인터페이스를 추가/삭제하거나, 3) 네트워크 라우팅을 관리할 수 있다.
ifconfig 라는 명령어가 보다 친숙할 수 있지만… deprecated된 명령어기 때문에 ip를 사용하는 것이 권장되는 분위기. (사실 요즘은 nmcli 사용을 보다 추천하는 것 같다.)
무엇보다 ip 명령어를 사용하면 즉각 설정이 반영된다! 하지만 시스템 리부팅을 하면 설정한 내용이 날아가니, 쉘스크립트로 설정 파일을 따로 만들어놓는걸 추천한다고…
유저라면 sudo 권한으로 사용해야 하는 것을 잊지 마세요!

ip 명령어의 형태

ip [ OPTIONS ] OBJECT { COMMAND | help }
Shell
1) IP 주소 관리는 address, 2) 네트워크 인터페이스 관리는 link, 3) 라우팅은 route라는 이름으로 OBJECT 필드에 들어간다.
(물론 이외에도 다양한 네트워크 작업을 가능하게 하는 요소들이 OBJECT 필드에 담겨있다.)

ip 명령어 메세지 살펴보기

1) IP 주소 관리

OBJECT 필드에 address라는 이름으로 들어간다.
ip address, 혹은 ip a를 입력하면, 컴퓨터가 가지고 있는 네트워크 인터페이스를 IP 주소와 함께 나열한다.
# 뒤에 show를 붙여도 된다. > ip address show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 link/ether 02:ab:c7:6d:fe:70 brd ff:ff:ff:ff:ff:ff inet 192.168.42.101/20 brd 192.168.42.255 scope global dynamic eth0 valid_lft 2724sec preferred_lft 2724sec inet6 fe80::5e:e7ff:fe6e:fe70/64 scope link valid_lft forever preferred_lft forever
Shell
외계어가 써있어도 침착하게 메세지를 하나씩 읽어보자.
1.
루프백(loopback) 인터페이스
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever
Shell
lo : 네트워크 인터페이스 이름. 루프백 주소를 의미하는 준말이다.
루프백 주소 : 시스템 자기 자신을 가리키기 위한 목적으로 쓰이는 주소. localhost라고도 불리며, 이 주소로 발송된 패킷은 외부로 나가지 않고 시스템 내부에 머문다.
<LOOPBACK,UP,LOWER_UP> : 현재 네트워크 인터페이스가 루프백이며(LOOPBACK), 네트워크 계층과 물리 계층 모두 활성화 되어 있다(UP,LOWER_UP) → 즉, 네트워크 장치가 기계에 잘 꽂혀서 돌아가고 있다!
mtu 65536 : 현재 인터페이스가 한 번에 전송할 수 있는 패킷의 최대 크기(maximum transfer unit).
qdisk noqueue : qdisk는 패킷 전송을 스케쥴링하는 큐잉(queueing, 뀨잉 아님) 메커니즘을 의미한다. noqueue는 패킷을 큐에 담지 말고 바로 보내버리는 정책. (루프백 주소와 같은 가상 장치의 기본 정책이라고 한다.)
state UNKNOWN : 현재 네트워크 인터페이스를 사용할 수 있지만, 해당 인터페이스와 연결된 네트워크가 없음을 의미한다.
state DOWN : 현재 네트워크 인터페이스를 사용할 수 없는 상태.
state UP : 현재 네트워크 인터페이스를 사용할 수 있으며, 해당 인터페이스와 연결된 네트워크가 존재하는 상태.
group default : 네트워크 인터페이스는 논리적으로 그룹지어질 수 있는데, 해당 인터페이스가 default 라는 그룹에 들어가 있음을 나타낸다.
qlen 1000 : 전송 큐(transmission queue)의 최대 길이. 최대 1000개의 패킷을 담을 수 있다.
link/loopback : 현재 네트워크 인터페이스의 MAC 주소. 루프백이기에 모두 0으로 되어있다.
link의 의미는 네트워크 계층의 link layer을 뜻한다.
inet 127.0.0.1/8 : IPv4 주소. 슬래쉬 뒤의 숫자는 서브넷 마스크를 의미한다. 즉, 이 경우 서브넷 마스크는 255.0.0.0.
scope host : IP 주소의 범위. 해당 인터페이스의 IP 주소는 오직 호스트 컴퓨터 내에서만 유효함을 나타내고 있다.
lo : 해당 IP 주소와 연관된 네트워크 인터페이스의 이름.
valid_lft : 인터페이스가 DHCP에 의해 부여된 IP 주소를 사용할 수 있는 시간.
inet6 : IPv6 버전의 정보.
2.
물리(physical) 인터페이스
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 link/ether 02:ab:c7:6d:fe:70 brd ff:ff:ff:ff:ff:ff inet 192.168.42.101/24 brd 192.168.42.255 scope global dynamic eth0 valid_lft 2724sec preferred_lft 2724sec inet6 fe80::5e:e7ff:fe6e:fe70/64 scope link valid_lft forever preferred_lft forever
Shell
eth0 : 네트워크 인터페이스 이름. 첫 번쨰 이더넷 인터페이스를 의미한다.
모든 이더넷 장비 이름이 eth0 으로 되어있는 것은 아니다. 운영체제에 따라 네트워크 이름이 달라질 수 있다.
<BROADCAST,MULTICAST,UP,LOWER_UP> : 현재 네트워크 인터페이스는 브로드캐스팅과 멀티캐스팅을 지원하며, 네트워크 계층과 물리 계층 모두 활성화되어 있다.
브로드캐스트 : 같은 네트워크에 있는 모든 장비들에게 패킷을 전송.
멀티캐스트 : 같은 네트워크에 있는 장비들 중, 특정 그룹에 패킷을 전송.
mtu 1500 : 해당 인터페이스가 한 번에 전송할 수 있는 패킷의 최대 크기.
qdisc pfifo_fast : 패킷 필터링을 빠르게 할 수 있는 FIFO 정책인 것 같은데 자세한 작동은 저도 몰겟습니다 ㅎㅎ;;
state UP : 해당 인터페이스가 작동 가능함을 나타낸다.
group default : 해당 인터페이스는 default라는 그룹에 속한다.
qlen 1000 : 전송 큐의 최대 길이.
link/ether : 해당 인터페이스의 MAC 주소.
inet 192.168.42.101/24 : IPv4 주소. 슬래쉬 뒤의 숫자가 24이므로 서브넷 마스크는 255.255.255.0.
brd 192.168.42.255 : 해당 IP 주소의 서브넷의 브로드캐스트 주소.
브로드캐스트 주소는 같은 네트워크에 있는 모든 컴퓨터에게 데이터를 전송하는데 사용된다. 이 경우, 192.168.42.255로 데이터를 전송하면, 같은 네트워크 안에 있는 모든 컴퓨터가 데이터를 받게 된다.
scope global : 해당 IP 주소는 외부에서 접근이 가능하다.
dynamic : 인터페이스가 DOWN되면 IP 주소도 같이 사라진다. 즉, 해당 IP 주소는 DHCP에 의해 배정되었다는 것!
eth0 : 해당 IP 주소와 관련된 네트워크 인터페이스의 이름.
valid_lft : 인터페이스가 DHCP에 의해 부여된 IP 주소를 사용할 수 있는 시간. 인터페이스는 해당 IP 주소를 2724초 동안 유효한 주소로 사용할 수 있다.
preferred_lft : DHCP에 의해 부여된 IP주소를 보증하는 시간.
inet6 : IPv6 정보.
scope link : 현재 인터페이스가 속한 LAN에서만 접근이 가능하다.

2) 네트워크 인터페이스 관리

OBJECT 필드에 link라는 이름으로 들어간다.
ip link, 혹은 ip l를 입력하면, 컴퓨터가 가지고 있는 네트워크 인터페이스를 나열한다.
(정확히는 네트워크 인터페이스의 link layer 정보를 보여준다.)
# 역시 show를 뒤에 붙일 수 있다. > ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:ab:c7:6d:fe:70 brd ff:ff:ff:ff:ff:ff
Shell
mode DEFAULT : 음… link 계층의 주소가 있으면 인터페이스가 패킷 전송을 수행한다고 생각하는데, 정확하지 않아 링크를 달아봅니다… (찾아봐도 자료가 잘 안나오네요…)
나머지는… 다 아는 얼굴들이구먼!

3) 라우팅 관리

OBJECT 필드에 route라는 이름으로 들어간다.
ip route, 혹은 ip r를 입력하면, 네트워크 트래픽이 어떤 IP 주소로 라우팅되는지 확인할 수 있다.
# show! 혹은... list를 사용할 수도 있다. > ip route list default via 192.168.42.1 dev eth0 192.168.42.0/24 dev eth0 proto kernel scope link src 192.168.42.26
Shell
1.
default route
default via 192.168.42.1 dev eth0
Shell
default : 특별한 목적지가 정해지지 않은 모든 패킷들을 의미.
via 192.168.42.101 : 위의 패킷을 192.168.42.101로 보낼 것을 지시. 따라서, 해당 IP 주소가 호스트 네트워크의 기본(default) 라우터로 여겨지게 된다.
dev eth0 : 패킷을 라우터로 보내는데 eth0 네트워크 인터페이스를 사용한다.
→ 즉, 특별히 정해지지 않은 모든 패킷들은 eth0을 통해 192.168.42.1로 향한다.
2.
specific packet route (이름은 제가 마음대로 짓는 중 ㅎㅎ;;)
192.168.42.0/24 dev eth0 proto kernel scope link src 192.168.42.26
Shell
192.168.42.0/24 : 해당 IP 주소의 범위에 해당하는 패킷들을 의미. 만약 컴퓨터가 해당 IP 주소의 범위 안에서 송수신을 진행하는 경우, 위의 라우팅 정책이 활성화된다.
dev eth0 : 패킷을 라우팅하는데 사용되는 네트워크 인터페이스 이름.
proto kernel : 해당 라우팅은 커널에 의해 자동 생성되었다.
scope link : 해당 라우팅은 현재 컴퓨터가 연결되어 있는 LAN 내에서만 유효하다.
src 192.168.42.26 : 위 패킷들이 향하는 목적지의 IP 주소.
→ 즉, 192.168.42.0/24에 해당하는 모든 패킷들은 eth0을 통해 192.168.42.26으로 향한다.

ip 명령어 사용법

(힘들어서 생략…)

참고자료

ip command
loopback interface
broadcast
ip interface flags
ip route