Linux 에서 IPv4-IPv6 6to4 터널 구성하기

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 환경에서 IPv4-to-IPv6 6to4 터널을 구성하는 방법을 배웁니다. 이 실습은 기존 IPv4 네트워크를 통해 IPv6 연결을 활성화하는 과정을 안내하며, 이는 네트워크 관리자에게 중요한 전환 메커니즘입니다. 표준 Linux 명령줄 도구를 사용하여 기능적인 터널을 처음부터 구축하고 검증하게 됩니다.

단계별 프로세스를 따라, 먼저 실제 시나리오를 시뮬레이션하기 위해 개념적인 공개 IPv4 주소를 준비합니다. 그런 다음 SIT(Simple Internet Transition) 터널 인터페이스를 생성하고, 6to4 형식의 IPv6 주소를 할당하며, 공개 6to4 릴레이를 통해 기본 IPv6 경로를 추가합니다. 실습을 마무리하기 위해 ping6 명령을 사용하여 새로 구성된 터널을 통해 종단 간 IPv6 연결을 테스트합니다.

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

개념적 공개 IPv4 주소로 터널링 준비

이 단계에서는 6to4 터널링의 기본 요구 사항인 공개 IPv4 주소에 대해 배우게 됩니다. 시스템의 IP 주소를 식별하는 방법과 이 실습에서 특별한 개념적 주소를 사용하는 이유를 살펴보겠습니다.

6to4 터널링은 IPv6 패킷을 IPv4 패킷으로 캡슐화하여 IPv4 인터넷을 통해 전송할 수 있도록 하는 전환 메커니즘입니다. 실제 시나리오에서 이를 작동시키려면 시스템 (터널 엔드포인트) 에 공개 IPv4 주소가 있어야 인터넷상의 다른 장치가 해당 주소로 트래픽을 다시 보낼 수 있습니다. 일반적인 실험실 또는 가정 환경에서는 컴퓨터가 NAT(Network Address Translation) 를 사용하는 라우터 뒤에 있고 개인 IPv4 주소를 가지고 있어 공개 인터넷에서 접근할 수 없습니다.

먼저 이 실습 환경에서 네트워크 인터페이스에 할당된 실제 IPv4 주소를 확인해 보겠습니다. grep과 함께 ip a 명령을 사용하여 IPv4 주소를 필터링할 수 있습니다.

터미널에서 다음 명령을 실행하십시오.

ip a | grep inet

그러면 시스템의 IPv4 및 IPv6 주소를 나열하는 다음과 유사한 출력이 표시됩니다. IPv4 주소는 공개가 아닌 개인 주소임을 유의하십시오.

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 172.16.50.33/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
    inet6 fe80::216:3eff:fe01:236f/64 scope link
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

보시다시피 나열된 주소는 개인 주소 (172.16.50.33 등) 또는 루프백 주소 (127.0.0.1) 입니다. 6to4 터널의 공개 엔드포인트로 사용할 수 없습니다. 실제 설정을 시뮬레이션하기 위해 개념적 공개 IPv4 주소를 사용할 것입니다. 이 실습에서는 192.0.2.1을 사용합니다. 이 주소는 실제 공개 IP 주소와 충돌하지 않도록 문서 및 예제 (RFC 5737) 를 위해 특별히 예약된 블록의 일부입니다. 후속 단계에서는 이 자리 표시자 주소를 사용하여 터널 구성을 구축할 것입니다.

ip tunnel 명령으로 SIT 터널 인터페이스 생성

이 단계에서는 6to4 터널의 기반이 될 가상 터널 인터페이스를 생성합니다. 네트워크 구성을 위한 Linux 의 강력한 유틸리티인 ip 명령을 사용할 것입니다.

ip tunnel 명령은 터널 인터페이스를 생성, 관리 및 삭제하는 데 사용됩니다. 6to4 의 경우 "Simple Internet Transition"을 의미하는 sit이라는 특정 유형의 터널이 필요합니다. 이 모드는 IPv6 패킷을 IPv4 패킷 내에 직접 캡슐화하며, 이것이 6to4 의 핵심 메커니즘입니다.

이제 tun6to4라는 터널 인터페이스를 생성해 보겠습니다. 이전 단계에서 식별한 개념적 공개 IPv4 주소 192.0.2.1을 사용하여 구성할 것입니다.

터미널에서 다음 명령을 실행하십시오. 네트워크 인터페이스를 생성하는 것은 권한이 필요한 작업이므로 sudo가 필요합니다.

sudo ip tunnel add tun6to4 mode sit local 192.0.2.1 remote any

이 명령을 자세히 살펴보겠습니다.

  • sudo ip tunnel add tun6to4: 이 부분은 tun6to4라는 새 터널 인터페이스를 추가하도록 시스템에 지시합니다.
  • mode sit: 캡슐화 모드를 지정합니다. sit은 6to4 터널링에 올바른 모드입니다.
  • local 192.0.2.1: 터널 패킷의 소스 IPv4 주소를 설정합니다. 이것은 개념적 공개 IP 로 시뮬레이션하는 터널의 "로컬" 엔드포인트입니다.
  • remote any: 6to4 메커니즘의 중요한 부분입니다. 시스템에 터널이 모든 원격 엔드포인트에 연결할 수 있음을 알려줍니다. 실제로는 잘 알려진 6to4 릴레이 라우터의 "anycast" 주소로 트래픽을 보내 트래픽을 IPv6 인터넷으로 전달합니다.

명령을 실행한 후 터널 인터페이스가 생성되었는지 확인할 수 있습니다. ip tunnel show 명령을 사용하십시오.

ip tunnel show

출력은 새 tun6to4 인터페이스의 생성 및 구성을 확인해야 합니다. 이 실습에서는 무시해도 되는 기본 sit0 인터페이스가 보일 수도 있습니다.

sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16
tun6to4: ipv6/ip remote any local 192.0.2.1 ttl inherit 6rd-prefix 2002::/16

ip a를 다시 실행하여 새 인터페이스를 볼 수도 있지만, 아직 IP 주소가 할당되지 않았습니다. 다음 단계에서 이를 처리할 것입니다.

터널 인터페이스에 6to4 형식의 IPv6 주소 할당

이 단계에서는 방금 생성한 tun6to4 인터페이스에 특별한 6to4 형식의 IPv6 주소를 할당하여 구성합니다. 이 주소는 임의가 아니라 터널 엔드포인트의 공개 IPv4 주소에서 직접 파생됩니다.

6to4 주소 지정 체계는 자동화되도록 설계되었습니다. 지정된 IPv6 접두사 2002::/16을 사용합니다. 이 접두사 뒤에 오는 32 비트는 공개 IPv4 주소를 16 진수 형식으로 변환하여 채웁니다. 이를 통해 최소한 하나의 공개 IPv4 주소를 가진 모든 조직에 대해 고유한 /48 IPv6 접두사가 생성됩니다.

개념적 IPv4 주소 192.0.2.1에 대한 16 진수 표현을 계산해 보겠습니다.

  • 10 진수 192는 16 진수로 c0입니다.
  • 10 진수 0은 16 진수로 00입니다.
  • 10 진수 2는 16 진수로 02입니다.
  • 10 진수 1은 16 진수로 01입니다.

이를 결합하면 192.0.2.1의 16 진수 표현은 c000:0201입니다. 따라서 고유한 6to4 접두사는 2002:c000:0201::/48입니다.

이제 이 접두사에서 특정 IPv6 주소를 tun6to4 인터페이스에 할당할 것입니다. 첫 번째 서브넷의 첫 번째 주소인 2002:c000:0201::1/64를 사용하겠습니다. 주소를 할당하려면 다음 명령을 실행하십시오.

sudo ip -6 addr add 2002:c000:0201::1/64 dev tun6to4

인터페이스를 생성하고 주소를 할당한 후 인터페이스는 기본적으로 "DOWN" 상태로 유지됩니다. 작동시키려면 "UP" 상태로 만들어야 합니다. 이를 위해 ip link set 명령을 사용합니다.

sudo ip link set tun6to4 up

마지막으로 인터페이스가 활성화되었고 올바른 IPv6 주소를 가지고 있는지 확인해 보겠습니다. ip a 명령을 사용하고 tun6to4 인터페이스를 찾으십시오.

ip a

tun6to4 인터페이스가 포함된 출력이 표시되어야 하며, 이제 활성화되고 IPv6 주소로 구성됩니다. 인터페이스 번호 (예: 5:) 는 다를 수 있으며 docker0 또는 sit0과 같은 다른 인터페이스가 보일 수 있습니다.

5: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.0.2.1 brd 0.0.0.0
    inet6 ::192.0.2.1/96 scope global
       valid_lft forever preferred_lft forever
    inet6 2002:c000:201::1/64 scope global
       valid_lft forever preferred_lft forever

구성한 2002:... 주소 외에도 시스템이 IPv4 호환 IPv6 주소 (::192.0.2.1/96) 를 자동으로 추가했음을 알 수 있습니다. 이것은 예상된 동작입니다.

6to4 릴레이 주소를 통한 기본 IPv6 경로 추가

이 단계에서는 아웃바운드 연결을 위한 마지막 조각인 기본 경로를 구성합니다. tun6to4 인터페이스에 IP 주소를 갖는 것만으로는 충분하지 않습니다. 시스템은 전역 인터넷으로 향하는 IPv6 트래픽을 어디로 보내야 하는지 알아야 합니다. 특별한 6to4 릴레이 라우터로 이를 지정할 것입니다.

6to4 는 6to4 세계를 네이티브 IPv6 인터넷에 연결하는 공개 릴레이 라우터에 의존합니다. 이러한 라우터는 특정 잘 알려진 anycast IPv4 주소인 192.88.99.1에서 캡슐화된 트래픽을 수신 대기합니다. 시스템이 외부 대상으로 IPv6 패킷을 보낼 때 IPv4 패킷으로 캡슐화하여 이 릴레이 주소로 보냅니다. 그런 다음 릴레이는 패킷을 압축 해제하고 IPv6 네트워크로 전달합니다.

이를 설정하기 위해 ip -6 route add 명령을 사용하여 기본 IPv6 경로를 추가할 것입니다. 터미널에서 다음을 실행하십시오.

sudo ip -6 route add default via ::192.88.99.1 dev tun6to4

명령을 분석해 보겠습니다.

  • default: 라우팅 테이블에서 더 구체적인 경로와 일치하지 않는 모든 IPv6 트래픽에 대한 "기본 게이트웨이"임을 지정합니다.
  • via ::192.88.99.1: 다음 홉 게이트웨이를 설정합니다. ::192.88.99.1 구문은 IPv6 컨텍스트 내에서 IPv4 주소를 나타내는 특별한 방법으로, 시스템에 IPv4 주소 192.88.99.1로 트래픽을 보내도록 지시합니다.
  • dev tun6to4: 이 경로에 tun6to4 인터페이스를 사용하도록 시스템에 명시적으로 지시합니다.

이제 IPv6 라우팅 테이블이 올바르게 업데이트되었는지 확인할 수 있습니다. 다음 명령을 실행하십시오.

ip -6 route show

출력에는 이제 터널 인터페이스를 통해 6to4 릴레이를 가리키는 기본 경로가 포함되어야 합니다. 정확한 출력은 약간 다를 수 있지만 핵심은 default 줄입니다.

::1 dev lo proto kernel metric 256 pref medium
::/96 dev tun6to4 proto kernel metric 256 pref medium
2002:c000:201::/64 dev tun6to4 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via ::192.88.99.1 dev tun6to4 metric 1024 pref medium

이 경로가 설정되면 시스템은 시뮬레이션된 6to4 터널을 통해 IPv6 트래픽을 보내도록 완전히 구성되었습니다.

ping6 를 사용하여 터널을 통한 IPv6 연결 테스트

이 단계에서는 공개 대상에 IPv6 트래픽을 보내어 새로 구성한 6to4 터널을 테스트합니다. 익숙한 ping 유틸리티의 IPv6 버전인 ping6 명령을 사용할 것입니다.

목표는 시스템이 IPv6 패킷을 보내고, 이를 IPv4 패킷으로 캡슐화하여 6to4 릴레이로 보내고, 최종 대상으로 전달할 수 있는지 확인하는 것입니다. ping6와 함께 -I 플래그를 사용하여 트래픽이 tun6to4 인터페이스에서 시작되어야 함을 지정할 것입니다.

ipv6.google.com과 같이 잘 알려진 IPv6 지원 호스트를 ping 해 보겠습니다. -c 4 플래그는 명령을 4 개의 패킷만 보내도록 제한합니다.

터미널에서 다음 명령을 실행하십시오.

ping6 -c 4 -I tun6to4 ipv6.google.com

예상 결과 및 설명

명령이 실패하고 대상에 도달할 수 없음을 나타내는 출력이 표시됩니다. 이것이 예상 결과이며, 이 실험실의 이 부분은 시연 목적으로만 사용됩니다.

PING ipv6.google.com(sfo03s32-in-x0e.1e100.net (2607:f8b0:4005:814::200e)) from 2002:c000:201::1 tun6to4: 56 data bytes
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=1 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=2 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=3 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=4 Destination unreachable: Address unreachable

--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3253ms

이 실패는 잘못 구성했음을 의미하지 않습니다. 6to4 터널의 클라이언트 측을 성공적으로 설정했습니다. 이 실험실 환경에서 실패가 예상되는 두 가지 주요 이유는 다음과 같습니다.

  1. 실험실 환경: LabEx 가상 머신에는 실제 공개 IPv4 주소가 없습니다. 구성에는 개념적 주소 (192.0.2.1) 를 사용했습니다. 6to4 릴레이는 이 라우팅 불가능한 주소로 응답을 다시 보낼 수 없습니다.
  2. 사용되지 않는 인프라: 공개 6to4 릴레이 인프라 (anycast 주소 192.88.99.1에 있음) 는 대부분 사용되지 않으며 현대 인터넷에서 더 이상 유지 관리되지 않습니다. 네트워크 운영자는 네이티브 IPv6, 6rd 및 DS-Lite 와 같이 더 강력하고 안전한 IPv6 전환 메커니즘으로 전환했습니다.

이 실험실의 주요 목적은 CompTIA Network+ 와 같은 네트워킹 인증에서 다루는 주제인 역사적으로 중요한 IPv4-IPv6 터널링 메커니즘의 개념 및 구성 구문을 가르치는 것입니다.

요약

이 실험실에서는 Linux 에서 IPv4-IPv6 6to4 터널을 구성하는 방법을 배웠습니다. 6to4 터널링의 핵심 요구 사항인 공개 IPv4 주소를 이해하는 것부터 시작했습니다. 실험실 환경에서 개인 IP 주소를 식별한 후, 실제 시나리오를 시뮬레이션하기 위해 개념적 공개 IPv4 주소 (192.0.2.1) 를 채택했습니다. 그런 다음 ip tunnel 명령을 사용하여 SIT(Simple Internet Transition) 터널 인터페이스를 생성했으며, 이는 IPv4 내에서 IPv6 패킷을 캡슐화하는 엔드포인트 역할을 합니다.

터널 인터페이스를 설정한 후, 개념적 공개 IPv4 주소에서 프로그래밍 방식으로 파생된 6to4 형식의 IPv6 주소를 구성하고 할당했습니다. 터널을 통해 IPv6 트래픽을 전달하기 위해 anycast 6to4 릴레이 주소를 가리키는 기본 IPv6 경로를 추가했습니다. 마지막으로 ping6 명령을 사용하여 구성을 테스트했습니다. 테스트는 예상대로 실패했으며, 이는 로컬 설정은 올바르게 되었지만 공개 6to4 릴레이 인프라가 더 이상 널리 사용 가능하지 않음을 확인시켜 주었으며, 이 기술이 현재 역사적인 것으로 간주되는 주요 이유를 보여줍니다.