Linux 에서 IPv6 주소 구성 및 확인하기

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 시스템에서 IPv6 주소를 구성하고 확인하는 기본 기술을 배우게 됩니다. 최신 명령줄 도구를 사용하여 검사부터 정적 구성 및 연결 테스트에 이르기까지 IPv6 네트워크 관리의 필수 작업에 대한 실습 경험을 쌓게 됩니다. 이 실습은 Ubuntu 22.04 와 같은 최신 Linux 배포판에서 표준인 iproute2 제품군의 ip 명령과 ping6 유틸리티 사용에 중점을 둡니다.

먼저 ip a 명령을 사용하여 네트워크 인터페이스에서 자동으로 구성된 IPv6 루프백 및 링크 - 로컬 주소를 확인합니다. 다음으로 인터페이스에 정적 글로벌 유니캐스트 주소를 수동으로 할당합니다. 마지막으로 ping6 명령을 사용하여 루프백, 링크 - 로컬 및 새로 구성된 글로벌 유니캐스트 주소에 대한 네트워크 연결을 확인하여 IPv6 설정이 올바르게 작동하는지 확인합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

ip a 명령으로 링크 - 로컬 및 루프백 주소 확인하기

이 단계에서는 시스템에 자동으로 구성된 IPv6 주소를 검색하는 방법을 배우게 됩니다. Ubuntu 22.04 를 포함한 최신 Linux 배포판은 기본적으로 IPv6 가 활성화되어 있습니다. Linux 에서 네트워크 구성 및 검사에 대한 최신 권장 도구인 ip 명령을 사용합니다.

먼저 네트워크 인터페이스와 할당된 주소를 검사해 보겠습니다. ip a 명령은 ip address의 약어입니다.

  1. 터미널을 엽니다. 기본 경로는 ~/project입니다.
  2. ip a 명령을 실행하여 모든 네트워크 인터페이스와 해당 주소를 나열합니다.
ip a

다음과 유사한 출력이 표시됩니다. 인터페이스 이름 (예: eth0) 과 주소는 다를 수 있지만 구조는 동일합니다.

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:00:54:72 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159972sec preferred_lft 1892159972sec
    inet6 fe80::216:3eff:fe00:5472/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:89:01:6f:fc 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

이제 출력을 분석하여 주요 IPv6 주소를 식별해 보겠습니다.

  • 루프백 주소: lo라는 인터페이스를 확인합니다. 이것은 로컬 머신의 네트워크 스택을 테스트하는 데 사용되는 가상 루프백 인터페이스입니다. IPv4 의 127.0.0.1에 해당하는 IPv6 루프백 주소인 ::1/128을 볼 수 있습니다. scope host는 호스트 자체 내에서만 유효함을 나타냅니다.

  • 링크 - 로컬 주소: 기본 네트워크 인터페이스 (예: eth0, enp0s3) 를 확인합니다. fe80::로 시작하는 inet6 주소를 찾을 수 있습니다. 이것이 링크 - 로컬 주소입니다. IPv6 가 활성화된 모든 인터페이스에 자동으로 할당되며 로컬 네트워크 세그먼트 (예: 로컬 이더넷 LAN) 에서만 통신하는 데 사용됩니다. scope link는 이 주소가 로컬 링크에서만 유효하며 인터넷에서 라우팅되지 않음을 확인합니다.

이제 시스템에서 자동으로 구성된 두 가지 기본 유형의 IPv6 주소를 성공적으로 식별했습니다.

ip addr add 명령으로 정적 글로벌 유니캐스트 주소 추가하기

이 단계에서는 네트워크 인터페이스에 글로벌 유니캐스트 주소 (GUA) 를 수동으로 구성합니다. 링크 - 로컬 주소는 로컬 네트워크 세그먼트의 통신에 사용되는 반면, GUA 는 공개 IPv4 주소에 해당하는 IPv6 입니다. GUA 는 전역적으로 고유하며 인터넷에서 라우팅 가능합니다.

이 실습에서는 문서 및 예제를 위해 특별히 예약된 2001:db8::/32 블록의 주소를 사용합니다. 이를 통해 실제 사용 중인 인터넷 주소를 실수로 사용하는 것을 방지할 수 있습니다.

  1. eth0 인터페이스에 정적 GUA 2001:db8:acad::1/64를 추가합니다. /64는 대부분의 LAN 에 표준인 접두사 길이를 나타냅니다. 네트워크 인터페이스 수정에는 관리자 권한이 필요하므로 sudo가 필요합니다.

    sudo ip -6 addr add 2001:db8:acad::1/64 dev eth0
    • 참고: 이 변경 사항은 임시적이며 시스템을 재부팅하면 제거됩니다. Ubuntu 에서 영구 구성을 하려면 일반적으로 /etc/netplan/의 파일을 편집해야 하지만, 이는 이 실습의 범위를 벗어납니다.
  2. 이제 새 GUA 가 성공적으로 할당되었는지 확인합니다. 네트워크 인터페이스를 검사하기 위해 ip a 명령을 다시 실행합니다.

    ip a

    이제 eth0 인터페이스 아래에 새 주소가 나열된 것을 볼 수 있습니다. 라우팅 가능한 주소임을 나타내는 scope global에 주목하십시오.

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159959sec preferred_lft 1892159959sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever

네트워크 인터페이스에 정적 IPv6 GUA 를 성공적으로 할당했습니다. 다음 단계에서는 이 새 주소로의 연결을 테스트합니다.

ping6 명령으로 루프백 및 GUA 연결 테스트하기

이 단계에서는 ping6 유틸리티를 사용하여 IPv6 연결을 테스트합니다. 이 명령은 익숙한 ping 명령의 IPv6 버전이며 네트워크 진단에 필수적입니다. 로컬 IPv6 스택이 올바르게 작동하고 이전 단계에서 구성한 글로벌 유니캐스트 주소 (GUA) 가 응답하는지 확인할 것입니다.

먼저 루프백 주소를 ping 하여 로컬 IPv6 스택을 테스트해 보겠습니다.

  1. IPv6 루프백 주소 ::1을 ping 합니다. 무기한 ping 하는 대신 3 개의 패킷만 보내기 위해 -c 3 옵션을 사용합니다.

    ping6 -c 3 ::1

    성공적인 테스트는 패킷 손실 0% 로 패킷이 송수신되었음을 보여주며, 로컬 IPv6 스택이 작동 중임을 확인합니다.

    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.026 ms
    64 bytes from ::1: icmp_seq=2 ttl=64 time=0.021 ms
    64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms
    
    --- ::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2030ms
    rtt min/avg/max/mdev = 0.021/0.027/0.035/0.005 ms

다음으로, 이전 단계에서 eth0 인터페이스에 수동으로 할당한 GUA 를 테스트해 보겠습니다. 이를 통해 인터페이스가 올바르게 구성되었고 해당 주소에서 수신 대기 중인지 확인할 수 있습니다.

  1. 이전 단계에서 추가한 GUA 2001:db8:acad::1을 ping 합니다.

    ping6 -c 3 2001:db8:acad::1

    루프백 테스트와 유사하게 성공적인 결과는 주소로부터의 응답을 보여주며, 해당 주소가 올바르게 할당되었고 호스트에서 도달 가능하다는 것을 확인합니다.

    PING 2001:db8:acad::1(2001:db8:acad::1) 56 data bytes
    64 bytes from 2001:db8:acad::1: icmp_seq=1 ttl=64 time=0.028 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=2 ttl=64 time=0.037 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=3 ttl=64 time=0.038 ms
    
    --- 2001:db8:acad::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2034ms
    rtt min/avg/max/mdev = 0.028/0.034/0.038/0.004 ms

이제 루프백과 수동으로 구성한 글로벌 유니캐스트 주소 모두에 대한 연결을 성공적으로 확인했습니다.

ping6 명령으로 링크 - 로컬 주소 연결 테스트하기

이 단계에서는 링크 - 로컬 주소에 대한 연결을 테스트하는 방법을 배웁니다. 이전에 확인했듯이 이러한 주소는 fe80::으로 시작하며 단일 네트워크 세그먼트 ("링크") 에서만 유효합니다. 전역적으로 고유하지 않기 때문에 ping 을 보낼 네트워크 인터페이스를 지정하기 위해 ping6 명령에 추가 정보를 제공해야 합니다. 이는 "존 인덱스 (zone index)" 또는 "스코프 ID(scope ID)"로 알려져 있습니다.

먼저 eth0 인터페이스의 링크 - 로컬 주소를 다시 찾아야 합니다.

  1. ip a 명령을 실행하고 eth0 인터페이스에 대한 fe80::으로 시작하는 inet6 주소를 식별합니다.

    ip a show eth0

    출력은 다음과 유사합니다. 주소 (예: fe80::xxxx:xxff:fexx:xxxx) 를 복사해야 합니다.

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159869sec preferred_lft 1892159869sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever
  2. 이제 이 링크 - 로컬 주소를 ping 합니다. 존 인덱스를 지정하려면 주소에 % 뒤에 인터페이스 이름 (eth0) 을 추가합니다. YOUR_LINK_LOCAL_ADDRESS를 방금 찾은 실제 주소로 바꿉니다.

    ping6 -c 3 YOUR_LINK_LOCAL_ADDRESS%eth0

    예를 들어 주소가 fe80::216:3eff:fe00:5472였다면 명령은 다음과 같습니다.
    ping6 -c 3 fe80::216:3eff:fe00:5472%eth0

    성공적인 ping 은 인터페이스가 링크 - 로컬 주소에 응답하고 있음을 확인합니다.

    PING fe80::216:3eff:fe00:5472%eth0(fe80::216:3eff:fe00:5472%eth0) 56 data bytes
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=1 ttl=64 time=0.031 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=2 ttl=64 time=0.030 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=3 ttl=64 time=0.030 ms
    
    --- fe80::216:3eff:fe00:5472%eth0 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2028ms
    rtt min/avg/max/mdev = 0.030/0.030/0.031/0.000 ms

    %eth0 부분을 생략하면 시스템이 링크 - 로컬 대상에 사용할 인터페이스를 알 수 없으므로 명령이 실패합니다. 이 특수 구문은 링크 - 로컬 IPv6 주소를 처리하는 핵심 개념입니다.

요약

이 실습에서는 ip 명령 제품군을 사용하여 Linux 시스템에서 기본적인 IPv6 구성 및 확인 작업을 수행하는 방법을 배웠습니다. ip a를 사용하여 네트워크 인터페이스를 검사하는 것으로 시작하여 lo 인터페이스의 자동으로 할당된 IPv6 루프백 주소 (::1) 와 기본 네트워크 인터페이스의 링크 - 로컬 주소 (fe80::로 시작) 를 성공적으로 식별했습니다. 그런 다음 ip addr add 명령을 사용하여 기본 인터페이스에 정적 글로벌 유니캐스트 주소 (GUA) 를 수동으로 구성했습니다.

구성을 검증하기 위해 ping6 유틸리티를 사용했습니다. 루프백 주소를 ping 하여 로컬 네트워크 스택이 작동 중임을 확인했으며 정적 GUA 가 올바르게 할당되고 도달 가능하다는 것을 검증했습니다. 마지막으로, 링크 - 로컬 주소를 테스트하기 위한 특정 요구 사항을 배웠는데, 이는 이러한 주소의 link 스코프 때문에 필요한 단계인 존 인덱스 (발신 인터페이스) 를 명시적으로 지정하기 위해 ping6와 함께 %interface 구문을 사용하는 것을 포함합니다.