[Network] ifconfig 파헤치기

박해인·2025년 3월 9일
1

Network

목록 보기
1/4
post-thumbnail

ifconfig 많이 이용하시져?
하지만 그(=ifconfig)의 외침을 전부 다 이해하고 계신가여?
혹시 대충 inet만 보고 이해한척 하고 계시진 않는지.. 전 그랬음 ㅋㅋ.

$ifconfig

를 파헤쳐보자 !!

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:fdff:fe61:39de  prefixlen 64  scopeid 0x20<link>
        ether ??:??:??:??:??:??  txqueuelen 0  (Ethernet)
        RX packets 151964  bytes 10493908 (10.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 102561  bytes 38415767 (38.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ??:??:??:??:??:??  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ??:??:??:??:??:??  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15580  bytes 3174040 (3.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15580  bytes 3174040 (3.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth264b929: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::184c:60ff:fe5b:19f8  prefixlen 64  scopeid 0x20<link>
        ether ??:??:??:??:??:??  txqueuelen 0  (Ethernet)
        RX packets 24  bytes 1104 (1.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 328  bytes 33238 (33.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vethf923eb3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::60f9:f9ff:fe31:ddc0  prefixlen 64  scopeid 0x20<link>
        ether ??:??:??:??:??:??  txqueuelen 0  (Ethernet)
        RX packets 151100  bytes 12550576 (12.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 102281  bytes 38260464 (38.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.12  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::8373:4607:aa81:2ee4  prefixlen 64  scopeid 0x20<link>
        ether ??:??:??:??:??:??  txqueuelen 1000  (Ethernet)
        RX packets 2966243  bytes 3457731101 (3.4 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1736038  bytes 244740309 (244.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1. 각 항목이 나타내는 것?

docekr0, enp1s0, enp3s0, lo, veth264b929, vethf923eb23, wlp2s0 와 같은 항목들은 NIC, Bridge, Tap Interface 그리고 Tunneling Interface 같은 부분들의 이름이 표시됩니다.

잠깐 @!!!
여기서 제가 MAC주소에 대해 오해하고 있어서,,, MAC 주소는 하드웨어 주소인데... 왜 같은 호스트(하드웨어) 에 있는 네트워크 인터페이스마다 다른 주소를 갖는거야?
같은 바보같은 의문이 들었습니다.
MAC 주소를 하드웨어 주소 라고만 기억하고 있었는데 이로 인해 오해가 생기더라구요
(나는 바보 X﹏X)

MAC 주소에 다시 정의하자면 Media Access Control의 약자로 NIC(네트워크 카드)가 고유하게 가지는 38비트 주소를 말합니다. 즉 네트워크 장치의 하드웨어 주소네트워크 카드마다 하나씩 갖고있다고 생각하면 편할 것 같습니다.
저는 부끄럽지만 호스트를 구분하는 기계주소로 인식하고 있었습니다..

그러므로 네트워크 인터페이스마다 다른 eth 값 즉, 다른 MAC 주소를 갖고 있는게 당연합니다.

2. 그렇다면 항목의 이름이 의미하는 바?

1. docker0

  • Docker 가상 브리지 네트워크 인터페이스
  • Docker 컨테이너가 기본적으로 연결되는 가상 네트워크 브리지이다. Docker에서 컨테이너들이 서로 통신할 수 있도록 도와준다.

2. enp1s0

  • 유선 네트워크 인터페이스
    -en은 ethernet을 뜻하고, p1은 PCI slot 1을 의미한다, s0은 첫 번째 네트워크 포트를 나타낸다.

3. lo

  • 루프백(Loopback) 인터페이스
  • 시스템 내에서 자체적으로 네트워크 통신을 처리하는 가상의 네트워크 인터페이스 -> "localhost" = 자기 자신과 통신하는 가상 네트워크

4. veth-

  • 가상 네트워크 인터페이스 (가상 머신이나 Docker 컨테이너의 인터페이스)
  • veth는 Virtual Ethernet의 약자로, Docker나 가상 머신에서 사용되는 가상 네트워크 인터페이스이다. veth로 시작하는 인터페이스가 두개나 생기는 이유는 Docker의 브릿지 네트워크랑 관련이 있습니다.. (다음에 이 브릿지 네트워크에 다뤄보겠습니다..)

5. wlp2s0

  • 무선 네트워크 인터페이스 (Wi-Fi)
  • wl은 wireless를 뜻하고, p2는 PCI slot 2를 의미한다. s0은 첫 번재 네트워크 포트를 나타낸다.

3. 상세 항목들이 나타내는 바?

1. ether: MAC 주소

  • ether는 MAC 주소(Medium Access Control address)를 나태나다.
  • 이 주소는 네트워크 인터페이스 카드(NIC)에 할당된 고유한 하드웨어 주소로, 48비트 주소로 표기된다.
  • 예를 들어, ether 00:14:22:01:23:45와 같은 형식,
  • MAC 주소는 네트워크의 데이터 링크 계층에서 장치를 식별하는 데 사용된다. 물리적인 장치나 인터페이스에 할당되므로 고유하며, 일반적으로 변경할 수 없다.(하지만 경우에 따라 변경 ㄱㄴ한것도 있음 ㅇㅇ)

2. inet: IP 주소

  • inet은 IPv4 주소를 나타낸다.
  • 네트워크에서 특정 장치가 통신할 때 사용하는 논리적인 주소
  • 예를 들어, inet 192.168.0.12는 해당 네트워크 인터페이스에 할당된 IPv4 주소임
  • IP 주소는 네트워크 계층에서 사용되며, 장치가 다른 장치와 통신할 수 있도록 하는 데 필요하다.

3. netmask: 서브넷 마스크

  • netmask는 서브넷 마스크를 나타낸다.
  • 예를 들어, netmask 255.255.255.0와 같은 형태입니다.
  • 서브넷 마스크는 IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 데 사용한다. 네트워크를 더 작은 서브넷으로 나누기 위해 사용함.
  • 255.255.255.0은 192.168.0.0 네트워크에 속하는 모든 IP 주소들이 서브넷 내에 있다는 것을 나타냄.

4. broadcast: 브로드캐스트 주소

  • broadcast는 해당 네트워크의 브로드캐스트 주소를 나타냅니다.
  • 예를 들어, broadcast 192.168.0.255와 같은 형태입니다.
  • 브로드캐스트 주소는 네트워크 상의 모든 장치에 동시에 데이터를 보내는 데 사용되고이를 통해 네트워크 상의 모든 장치가 동일한 메시지를 수신할 수 있다.

5. RX (Receive)

  • RX는 수신(Receive)을 의미하며, 해당 네트워크 인터페이스가 받은 패킷을 나타낸다.
  • 예를 들어, RX packets 151964는 이 인터페이스가 151,964개의 패킷을 수신했다는 뜻이다.

6. TX (Transmit)

  • TX는 송신(Transmit)을 의미하며, 해당 네트워크 인터페이스가 보낸 패킷을 나타냅니다.
  • 예를 들어, TX packets 102561은 이 인터페이스가 102,561개의 패킷을 송신했다는 뜻.

7. RX Packets와 TX Packets

  • RX packets와 TX packets는 각각 수신한 패킷과 송신한 패킷의 수를 나타냄.
    → 네트워크 인터페이스의 활동 정도를 알 수 있는 중요한 정보로, 얼마나 많은 데이터가 네트워크를 통해 들어오고 나가는지 알 수 있다.

8. RX errors, TX errors

  • 패킷 수,송신 중 문제가 발생한 횟수를 나타냅니다.
    → 이 값이 높으면 네트워크에 문제가 있을 수 있음을 알 수 있다.

9. RX dropped, TX dropped

  • 수,송신하려는 패킷이 네트워크에서 전송되지 않고 버려진 횟수를 나타냄.

암튼 저의 내부 ip를 확인하고 싶다면
저는 무선wi-fi를 이용하고 있으니 wlp2s0의 inet 값을 확인하면 되겠죠?

  • @@ 그렇다면 외부 ip (= 공인 ip 주소)를 알고싶다면?
    공인 ip주소는 일반적으로 라우터, ISP(인터넷 서비스 제공자)에 의해 할당된다. 그러므로 라우터 설정페이지나, What is my IP를 검색하여 확인하여야 한다.

p.s : MAC 주소는 ?로 가렸습니다 ㅎㅎ;; 혹시 몰라서

profile
갓생살고싶어라

2개의 댓글

요즘 ifconfig가 deprecated되어서 쉽게 설치되지 않는 OS들이 많은데요, ip addr 에 익숙해지시면 편합니다~
ip -c=always a
이렇게 쳐보시면 알록달록 색칠까지 해줍니다~

1개의 답글