라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
Linux에서 IPv6 환경 구성 3
Part 3 : 6to4 Tunnel의 설정
지금까지 Part 1, Part 2를 거치면서, IPv6 모듈의 설치, IPv6 주소 설정, IPv6 라우팅 설정을 알아보았습니다.
Part 3에서는 IPv4 네트워크환경에서 IPv6 네트워크 환경을 구성할 수 있는 6to4 터널링 방법에 대해 알아보겠습니다.
터널링이란 네트워크에서 데이터가 흐를 수 있는 별도의 전용 통로입니다.
아래 [그림1]에서 양쪽에 IPv6 네트워크가 있고, 그 사이에 IPv6 데이터가 흐를 수 없는 IPv4 네트워크가 있을 때, IPv4 네트워크에 IPv6 데이터가 흐를 수 있는 전용 통로(Tunnel)를 만들면, 양쪽의 IPv6 네트워크가 마치 하나의 네트워크처럼 인식되게 됩니다.
 
사용자 삽입 이미지
[그림1]
 
본 문서에서 다룰 6to4 터널은 공인 IPv4 네트워크에 있는 Dual Stack 단말(PC 또는 라우터)이 원격지의 IPv6 네트워크까지 터널을 형성하는 방법입니다.[그림2]
 
** 6to4 터널링은 사설 IP 환경에서는 사용할 수 없습니다.
 
사용자 삽입 이미지
[그림2]
 
6to4 Relay는 6to4 네트워크에서 전달된 데이터를 다른 6to4 릴레이로 전달하는 역할을 하며, 6to4 Router는 6to4 네트워크에서 전달된 데이터를 다른 IPv6 네트워크로 전달하는 역할을 합니다.
 
 
1. 현재 Tunnel 설정 확인
본격 적인 6to4 터널 설정에 앞서, 현재 시스템에 설정되어 있는 Tunnel의 정보를 확인해 보겠습니다.
ip명령과route명령을 이용하여 Tunnel 설정을 확인할 수 있습니다.
가. ip 명령을 이용한 Tunnel 설정 확인
사용법
# /sbin/ip -6 tunnel show [<device>]
사용예
# /sbin/ip -6 tunnel show
실행결과[그림3]를 보시면, IPv6와 관련된 터널(sit0)이 하나도 없음을 알 수 있습니다.
사용자 삽입 이미지
[그림3]
 
나. route 명령을 이용한 Tunnel 설정 확인
사용법
# /sbin/route -A inet6
2. 6to4 터널의 설정
가. 6to4 Prefix의 계산
6to4 터널링은 하나의 IPv6 주소를 생성하는 것이 아니고, /64에 해당되는 Prefix를 생성하는 것이기 때문에 6to4 Prefix가 존재하게 됩니다.
따라서, 6to4 터널을 이용하면 내부적으로 별도의 IPv6 네트워크를 생성할 수 있습니다.
6to4 터널을 설정하게 앞서, 시스템의 IPv4 주소를 이용하여 6to4 네트워크에 사용할 6to4 Prefix를 계산해야 합니다.
자신의 IPv4 주소가 20.30.40.50일 때, 이를 16진수로 변경하면 0A.14.1E.28이 됩니다.
6to4 Prefix는 16진수로 변경한 IPv4 주소를 2002 뒤에 4자리씩 나열한 값이 됩니다.
위 예에서는 2002:0A14:1E28이 6to4 Prefix가 됩니다.
IPv4 주소16진수로 변경한 IPv4 주소6to4 Prefix
20.30.40.500A.14.1E.282002:0A14:1E28
203.254.38.37CB.FE.26.252002:CBFE:2625
147.46.80.2093.2E.50.142002:932E:5014
나. Local 6to4 게이트웨이 주소
6to4 Prefix가 계산이 되면, 6to4로 구현된 내부 IPv6 네트워크의 Local 6to4 게이트웨이 주소를 만들어야 합니다.
일반적으로 Local 6to4 게이트웨이 주소는 6to4 Prefix에 ::1을 더한 형태로 생성합니다.
따라서 6to4 Prefix가 2002:CBFE:2625인 경우 Local 6to4 게이트웨이 주소는 2002:CBFE:2625::1이 되며, 6to4로 구현된 내부 IPv6 네트워크의 데이터는 이 Local 6to4 게이트웨이를 통해 외부로 나가게 됩니다.
다. ip 명령을 이용한 6to4 인터페이스의 설정
일반적으로 터널을 설정하기 위해서는 별도의 논리적(가상) 인터페이스를 만들고, 주소할당 및 라우팅 처리를 하는 과정을 처치게 됩니다.
6to4 터널역시 tun6to4 라는 가상 인터페이스를 생성하게 됩니다.
1) 6to4 터널 인터페이스 생성
# /sbin/ip -6 tunnel add tun6to4 mode sit ttl <ttldefault> remote any local <local IPv4 address>
6to4 터널 인터페이스 생성 예
# /sbin/ip -6 tunnel add tun6to4 mode sit ttl 64 remote any local 203.254.38.37
이제 생성된 tun6to4 인터페이스를 활성화 시켜야 합니다.
2) tun6to4 인터페이스의 활성화
ifconfig 명령으로 시스템의 네트워크 인터페이스를 확인해 보면 tun6to4가 생성된 것으로 확인할 수 있습니다.[그림4]
사용자 삽입 이미지
[그림4]
 
그런데, 아직 6to4 IPv6 주소가 tun6to4 인터페이스에 추가되지 않았습니다.
3) 이미 계산한 Local 6to4 게이트웨이 주소를 tun6to4 인터페이스에 추가
tun6to4 인터페이스에 로컬 6to4 주소 추가 ( 프리픽스 길이가 /16인 것에 유의!)
# /sbin/ip -6 addr add <local 6to4 address>/16 dev tun6to4
사용예
# /sbin/ip -6 addr add 2002:CBFE:2625::1/16 dev tun6to4
이제, tun6to4 인터페이스에 6to4 IPv6 주소가 입력된 것을 확인할 수 있습니다.[그림5]
사용자 삽입 이미지
[그림5]
 
3. 6to4 라우팅 설정
내부적으로 6to4 터널링 인터페이스가 활성화되고, 주소까지 추가되었더라도 외부와 통신을 위한 라우팅 설정을 하지 않으면 Global IPv6 네트워크와 연결이 되지 않습니다.
6to4 라우팅 설정은 ip 명령을 이용합니다.
# /sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
위 명령에서 192.88.99.1은 IPv4 Anycast 주소로서, 자신이 속한 네트워크에서 가장 가까운 6to4 릴레이(라우터)를 찾아서 통신을 하게 됩니다.
만약, Anycast 주소를 이용하지 않고, 별도로 자신이 원하는 6to4 릴레이(라우터)를 설정하려면 192.88.99.1 대신 해당 6to4 릴레이(라우터)의 IPv4 주소를 입력하면 됩니다.
# /sbin/ip -6 route add 2000::/3 via ::203.254.38.130 dev tun6to4 metric 1
** 참고로 192.88.99.1을 입력하면 해외의 6to4 릴레이(라우터)를 이용하게 되는 경우가 있습니다.
** 가능하면 한국전산원의 6to4 릴레이(라우터, 203.254.38.130) 이용을 권장합니다.
참고 : route 명령을 이용한 6to4 설정은Linux IPv6 HowTo 문서를 참고하세요.
 
4. 6to4 터널의 테스트
기존 IPv6 테스트때와 마찬가지로 ping6 명령을 이용하여 테스트합니다.[그림6]
예) ping6 2001:2b8::1
사용자 삽입 이미지
[그림6]
 
5. 6to4 터널의 삭제
6to4 터널의 삭제는 6to4 터널의 생성과 마찬가지로 ip 명령을 이용합니다.
1) 6to4 터널과 관계된 라우팅 설정의 제거
# /sbin/ip -6 route flush dev tun6to4
** 인터페이스민 삭제되고 라우팅 설정이 남아있게 되면 향후 네트워크의 오동작 또는 혼란이 발생할 수 있습니다.
2) 인터페이스의 비활성화
# /sbin/ip link set dev tun6to4 down
3) 6to4 인터페이스의 삭제
# /sbin/ip tunnel del tun6to4
최종적으로 ifconfig 명령을 이용하여 tun6to4 인터페이스의 유무를 확인합니다.
이상으로 6to4 주소의 계산, 터널의 설정, 삭제에 대해 알아보았습니다.
  Comments,     Trackbacks