소개
이 실습에서는 Linux 시스템에서 IPv6 주소를 구성하고 확인하는 기본 기술을 배우게 됩니다. 최신 명령줄 도구를 사용하여 검사부터 정적 구성 및 연결 테스트에 이르기까지 IPv6 네트워크 관리의 필수 작업에 대한 실습 경험을 쌓게 됩니다. 이 실습은 Ubuntu 22.04 와 같은 최신 Linux 배포판에서 표준인 iproute2 제품군의 ip 명령과 ping6 유틸리티 사용에 중점을 둡니다.
먼저 ip a 명령을 사용하여 네트워크 인터페이스에서 자동으로 구성된 IPv6 루프백 및 링크 - 로컬 주소를 확인합니다. 다음으로 인터페이스에 정적 글로벌 유니캐스트 주소를 수동으로 할당합니다. 마지막으로 ping6 명령을 사용하여 루프백, 링크 - 로컬 및 새로 구성된 글로벌 유니캐스트 주소에 대한 네트워크 연결을 확인하여 IPv6 설정이 올바르게 작동하는지 확인합니다.
ip a 명령으로 링크 - 로컬 및 루프백 주소 확인하기
이 단계에서는 시스템에 자동으로 구성된 IPv6 주소를 검색하는 방법을 배우게 됩니다. Ubuntu 22.04 를 포함한 최신 Linux 배포판은 기본적으로 IPv6 가 활성화되어 있습니다. Linux 에서 네트워크 구성 및 검사에 대한 최신 권장 도구인 ip 명령을 사용합니다.
먼저 네트워크 인터페이스와 할당된 주소를 검사해 보겠습니다. ip a 명령은 ip address의 약어입니다.
- 터미널을 엽니다. 기본 경로는
~/project입니다. 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 블록의 주소를 사용합니다. 이를 통해 실제 사용 중인 인터넷 주소를 실수로 사용하는 것을 방지할 수 있습니다.
eth0인터페이스에 정적 GUA2001:db8:acad::1/64를 추가합니다./64는 대부분의 LAN 에 표준인 접두사 길이를 나타냅니다. 네트워크 인터페이스 수정에는 관리자 권한이 필요하므로sudo가 필요합니다.sudo ip -6 addr add 2001:db8:acad::1/64 dev eth0- 참고: 이 변경 사항은 임시적이며 시스템을 재부팅하면 제거됩니다. Ubuntu 에서 영구 구성을 하려면 일반적으로
/etc/netplan/의 파일을 편집해야 하지만, 이는 이 실습의 범위를 벗어납니다.
- 참고: 이 변경 사항은 임시적이며 시스템을 재부팅하면 제거됩니다. Ubuntu 에서 영구 구성을 하려면 일반적으로
이제 새 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 스택을 테스트해 보겠습니다.
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 를 테스트해 보겠습니다. 이를 통해 인터페이스가 올바르게 구성되었고 해당 주소에서 수신 대기 중인지 확인할 수 있습니다.
이전 단계에서 추가한 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 인터페이스의 링크 - 로컬 주소를 다시 찾아야 합니다.
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이제 이 링크 - 로컬 주소를 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 구문을 사용하는 것을 포함합니다.



