Linux 에서 IP 주소 유형 및 네트워크 도달 가능성 탐색

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 환경 내에서 IP 주소 지정 및 네트워크 도달 가능성의 기본 개념을 탐구합니다. pingip a와 같은 일반적인 명령줄 유틸리티를 사용하여 필수 네트워크 진단을 수행합니다. 연습을 통해 루프백 주소로 로컬 TCP/IP 스택을 테스트하고, 머신의 개인 IP 주소를 식별하며, 공개 인터넷 연결을 확인하는 과정을 안내합니다.

또한 로컬 네트워크 내 도달 가능성을 테스트하고 멀티캐스트 통신을 탐색하여 특수 용도 주소에 대한 이해를 높일 것입니다. 이러한 단계를 완료함으로써 네트워크 구성을 문제 해결하고 Linux 시스템에서 다양한 IP 연결 계층을 확인하는 실용적인 기술을 개발하게 됩니다.

ping 127.0.0.1 으로 로컬 TCP/IP 스택 테스트

이 단계에서는 루프백 주소를 사용하여 시스템 자체의 네트워크 구성을 테스트하는 방법을 배웁니다. 이는 물리적 네트워크 연결을 확인하기 전에도 TCP/IP 소프트웨어 스택이 올바르게 설치되고 작동하는지 확인하는 기본적인 진단 단계입니다.

거의 항상 127.0.0.1루프백 주소는 컴퓨터가 자신을 참조하는 데 사용하는 특수 IP 주소입니다. 127.0.0.1로 네트워크 트래픽을 보내면 Wi-Fi 또는 이더넷 카드와 같은 네트워크 하드웨어로 나가지 않습니다. 대신 트래픽은 운영 체제 내에서 내부적으로 "루프백"됩니다. 이는 테스트에 매우 유용합니다.

IP 네트워크에서 호스트의 도달 가능성을 테스트하는 데 사용되는 일반적인 네트워크 유틸리티인 ping 명령을 사용할 것입니다.

이제 루프백 주소를 ping 해 보겠습니다. 현재 ~/project 디렉토리에 있는 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

ping 127.0.0.1

127.0.0.1에서 지속적으로 응답이 오는 것을 볼 수 있습니다. 이는 시스템의 TCP/IP 스택이 예상대로 작동하고 있음을 나타냅니다. 각 줄은 로컬 머신에서 수신된 성공적인 "echo reply"를 나타냅니다.

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.050 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.052 ms
...

ping 명령은 중지할 때까지 계속 실행됩니다. 명령을 중지하려면 **Ctrl+C**를 누릅니다. 중지한 후 ping 통계 요약을 볼 수 있습니다.

이 성공적인 테스트는 가상 머신의 네트워킹 소프트웨어가 작동 중임을 확인합니다.

ip a 명령으로 개인 IP 주소 확인

이 단계에서는 가상 머신의 개인 IP 주소를 식별합니다. 루프백 주소로 내부 TCP/IP 스택이 작동하는 것을 확인한 후, 다음 논리적 단계는 시스템이 동일한 로컬 네트워크의 다른 장치와 통신하는 데 사용하는 주소를 찾는 것입니다.

대부분의 로컬 네트워크 (이 가상 머신이 속한 네트워크 또는 가정/사무실 네트워크와 같은) 는 개인 IP 주소를 사용합니다. 이러한 주소는 공개 인터넷에서 도달할 수 없는 특수 IP 주소 범위입니다. 내부 사용을 위해 예약되어 있습니다. 이 시스템은 IPv4 주소 고갈을 방지하고 보안 계층을 추가합니다.

최신 Linux 시스템에서 IP 주소를 찾으려면 ip a 명령 ( iproute2 제품군의 일부이며 이전 ifconfig 명령을 대체함) 을 사용할 수 있습니다.

터미널에서 다음 명령을 실행합니다.

ip a

출력에는 시스템의 모든 네트워크 인터페이스가 나열됩니다. 일반적으로 eth0 또는 ens...로 명명된 기본 네트워크 인터페이스를 찾고 있습니다. IP 주소는 inet으로 시작하는 줄에 나열됩니다.

다음은 출력의 예입니다. IP 주소 및 인터페이스 이름은 다를 수 있습니다.

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 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0a:71:39 brd ff:ff:ff:ff:ff:ff
    inet 172.16.50.171/24 brd 172.16.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe0a:7139/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:ae:2a:df:b8 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

위 예시에서 개인 IP 주소는 172.16.50.171입니다. 이제 시스템의 inet 주소를 식별하고 표준 개인 IP 주소 범위 중 하나에 속하는지 확인합니다.

  • 클래스 A: 10.0.0.0 ~ 10.255.255.255
  • 클래스 B: 172.16.0.0 ~ 172.31.255.255
  • 클래스 C: 192.168.0.0 ~ 192.168.255.255

예시의 IP 주소 172.16.50.171은 클래스 B 개인 범위에 속합니다. LabEx VM 도 이러한 범위 중 하나에서 IP 를 갖게 됩니다.

ping 8.8.8.8 으로 공개 인터넷 연결 테스트

이 단계에서는 가상 머신이 공개 인터넷과 통신할 수 있는지 확인합니다. 로컬 TCP/IP 스택이 작동하는 것을 확인했고 개인 IP 주소를 찾았습니다. 이제 로컬 네트워크 외부의 서버에 도달할 수 있는지 확인해 보겠습니다.

공개 IP 주소는 인터넷에서 라우팅 가능한 전역적으로 고유한 주소입니다. 개인 IP 를 가진 VM 은 해당 주소를 인터넷에서 직접 사용할 수 없습니다. 대신 네트워크의 라우터 또는 게이트웨이가 **네트워크 주소 변환 (NAT)**을 수행합니다. 인터넷으로 트래픽을 보낼 때 VM 의 개인 IP 주소를 공개 IP 주소로 변환하고, 돌아오는 트래픽에 대해서는 그 반대로 변환합니다.

이를 테스트하기 위해 잘 알려진 공개 IP 주소인 8.8.8.8을 ping 합니다. 이 주소는 Google 의 공개 DNS 서버 중 하나로, 가용성이 높고 인터넷 연결 테스트에 표준적으로 사용됩니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

ping 8.8.8.8

일련의 성공적인 응답을 볼 수 있어야 합니다. time= 값이 루프백 주소를 ping 했을 때보다 일반적으로 높다는 점에 유의하십시오. 이는 데이터 패킷이 인터넷을 통해 Google 서버로 이동했다가 돌아오기 때문입니다.

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=2.34 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=2.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=2.35 ms
...

이러한 응답은 VM 이 공개 인터넷에 성공적으로 연결되고 있음을 확인합니다. ping 명령을 중지하려면 **Ctrl+C**를 누릅니다.

할당되지 않은 IP 로 ping 하여 로컬 네트워크 연결 테스트

이 단계에서는 로컬 네트워크에서 어떤 장치에도 할당되지 않은 IP 주소와 통신을 시도합니다. 이는 통신이 성공하려면 대상 IP 가 올바른 네트워크에 있을 뿐만 아니라 응답할 수 있는 호스트에 의해 적극적으로 사용되어야 함을 보여줍니다.

이미 자신의 개인 IP 주소를 찾았습니다. 이제 동일한 서브넷 내에서 거의 확실하게 사용되지 않는 다른 주소를 선택합니다. 서브넷은 IP 네트워크의 논리적 하위 집합입니다. 예를 들어, IP 주소가 172.16.50.171이고 마스크가 /24인 경우, 서브넷에는 172.16.50.1부터 172.16.50.254까지의 모든 주소가 포함됩니다.

사용되지 않을 가능성이 높은 IP 주소를 선택해 보겠습니다. 이 환경에서 일반적으로 사용되는 IP 주소 172.16.50.171을 기반으로 172.16.50.250을 ping 해 보겠습니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

ping 172.16.50.250

이번에는 응답이 표시되지 않습니다. 명령이 응답 없이 패킷을 계속 보내는 것처럼 보일 것입니다. 이는 해당 IP 주소에 ping 요청에 응답할 장치가 없기 때문입니다. 몇 초 후 **Ctrl+C**를 눌러 명령을 중지합니다. 100% 패킷 손실을 나타내는 요약이 표시됩니다. 이 시간 초과는 호스트가 네트워크에서 도달할 수 없음을 확인하는 일반적인 방법입니다.

PING 172.16.50.250 (172.16.50.250) 56(84) bytes of data.
^C
--- 172.16.50.250 ping statistics ---
23 packets transmitted, 0 received, 100% packet loss, time 22510ms

이 출력은 IP 주소가 도달 가능하려면 네트워크에서 활성 상태여야 함을 확인합니다. 명령을 중지하려면 **Ctrl+C**를 누릅니다.

ping 224.0.0.1 로 멀티캐스트 주소 탐색

이 마지막 단계에서는 IP 주소의 다른 범주인 멀티캐스트를 탐색합니다. 지금까지 통신이 일대일 (자신의 머신에서 루프백으로, 자신의 머신에서 공개 서버로 등) 인 유니캐스트 주소로 작업했습니다.

멀티캐스트는 일대다 통신 방법입니다. 단일 패킷이 하나의 소스에서 특수 멀티캐스트 주소로 전송되며, 네트워크 인프라는 해당 주소에 "구독"한 모든 장치로 전달합니다. 이는 각 대상에 개별 패킷을 보내는 것보다 훨씬 효율적입니다.

224.0.0.0부터 239.255.255.255까지의 IP 주소 범위는 멀티캐스트 (Class D) 를 위해 예약되어 있습니다. 특수하고 잘 알려진 멀티캐스트 주소인 224.0.0.1을 사용합니다. 이것은 "모든 호스트" 그룹 주소입니다. 로컬 네트워크 세그먼트의 멀티캐스트 지원 호스트는 이 주소로 전송된 트래픽에 응답해야 합니다.

ping 했을 때 어떤 일이 발생하는지 살펴보겠습니다. 터미널에서 다음을 실행합니다.

ping 224.0.0.1

이론적으로 로컬 네트워크의 멀티캐스트 지원 호스트는 "모든 호스트" 그룹에 대한 ping 에 응답해야 합니다. 자신의 머신에서 응답을 볼 수 있을 것으로 예상할 수 있습니다. 그러나 많은 최신 Linux 환경에서는 보안 또는 네트워크 성능상의 이유로 멀티캐스트 주소에 대한 ICMP 에코 요청이 기본적으로 무시됩니다.

출력을 관찰하십시오. 응답이 없을 가능성이 높습니다. 몇 초 후 **Ctrl+C**를 눌러 명령을 중지합니다. 요약에서 100% 패킷 손실이 표시됩니다.

PING 224.0.0.1 (224.0.0.1) 56(84) bytes of data.
^C
--- 224.0.0.1 ping statistics ---
14 packets transmitted, 0 received, 100% packet loss, time 13312ms

이 결과는 중요한 실제 네트워킹 원칙을 보여줍니다. 이론적인 표준 (모든 호스트 멀티캐스트에 응답하는 것과 같은) 이 실제로는 항상 구현되거나 활성화되는 것은 아닙니다. 시스템 구성, 방화벽 또는 커널 설정은 예상되는 동작을 변경할 수 있습니다. ping 을 중지하려면 **Ctrl+C**를 누릅니다.

요약

이 실습에서는 일반적인 명령줄 유틸리티를 사용하여 Linux 환경에서 기본적인 IP 주소 지정 및 네트워크 도달 가능성 개념을 탐색했습니다. 루프백 주소 (127.0.0.1) 를 ping 하여 로컬 TCP/IP 스택의 무결성을 확인하는 방법과 ip a 명령을 사용하여 로컬 네트워크 통신을 위한 시스템의 개인 IP 주소를 식별하는 방법을 배웠습니다.

또한 ping 8.8.8.8로 공개 인터넷에 대한 도달 가능성을 테스트하고 할당되지 않은 로컬 IP 주소를 ping 할 때의 응답을 관찰하여 네트워크 연결을 진단하는 연습을 했습니다. 실습은 특수 주소 유형 탐색으로 마무리되었으며, 특히 ping 224.0.0.1을 사용하여 네트워크에서 일대다 통신을 위한 멀티캐스트 주소의 기능을 이해했습니다.