GP4 기반에서 IPv6 기능을 구현하면서 정리한 내용을 기술한 것이다.
IPv6 의 특징
DHCP 서버가 필요없다.
유선의 경우, 랜선만 꼽혀 있으면, 주소가 할당된다. 또한 변하지 않는다.
IPv6 주소 리스트
데스크탑 | fe80::224:21ff:fe27:1573/64 |
서브 노트북 | fe80::2e0:91ff:fe22:5b73/64 |
메인 노트북 | fe80::223:8bff:fe4b:92d5 |
※ 위의 주소의 경우, 재부팅을 하여도 항상 동일한 주소를 가지고 있었다. 1:1 등의 통신에서는 위의 주소를 가지고 통신이 가능하지만, 외부와의 통신을 위해서는 이 주소로는 불가능하다. 이 주소는 실제 IPv6 주소를 할당받기 위해 필요한 주소이다. 예를 들면, 라우터 장비로 부터 IPv6 주소를 받기 위해 기본적으로 가지고 있어야 하는 주소이다.
IPv6 주소 할당 방식
크게 두가지 방식이 있다.
첫번째는 기존의 IPv4 와 같은 DHCP 를 이용한 방식이 있다. 두번째는 IPv6 를 지원하는 라우터 장비를 이용한 방법이다.
DHCP 방식
DHCP 또한 IPv6 에 대응하기 위해 DHCPv6 라는 것이 있다. DHCPv6 서버를 구축하고, 클라이언트 측에서 이에 요청하여 IPv6 주소를 할당받는 방식이다.
IPv6 지원 장비 사용 방식
IPv6 를 지원하는 라우터 장비에 클라이언트(IPv6 를 지원)를 연결하면, 자동으로 장비로부터 Prefix 를 받아서 IP 주소를 설정한다. 이때 사용하는 방식은 기존의 DHCP 가 아닌 IPv6 고유의 프로토콜에 의해서이다.
DHCPv6 서버 구축하기
DHCPv6 서버를 구현하기 위해서는 Dibbler 이라는 프로그램을 사용해야 한다. http://klub.com.pl/dhcpv6/ 에서 받을 수 있다. 이를 설치하기 위해 Fedora 기반에서 tarball 코드를 컴파일 해보았으나 도중 에러가 발생했다. linux binary 코드를 받아서 실행해봤지만, 역시 원하는 결과를 얻지 못했다.
그래서 결국 선택한 방법이 Ubuntu 에서 설치하는 방법이었다. 설치 방법도 간단했고, 원하는 대로 잘 동작하였다. 참고로 DHCPv6 동작 확인을 위해서는 최소 2대의 PC 가 필요하다. 하나는 server, 나머지는 client 로 동작시킬 것이다.
설치 방법은 다음과 같다.
#apt-get install dibbler-server // server 의 경우 #apt-get install dibbler-client // client 의 경우
각각 설치 이후, 실행 방법은 다음과 같다.
#dibbler-server start // server 의 경우 #dibbler-client start // client 의 경우
이제 2대의 PC 를 Cross cable 로 연결한다. 그리고 client 쪽에서 ifconfig 명령을 실행시켜보자.
아래는 DHCP 서버로 부터 IPv6 주소를 받아오기 전의 결과이다. 참고로 'fe80::224:21ff:fe27:1573' 의 값은 기본적으로 설정되어 있으며, 이 값을 통해 IPv6 주소를 얻을 수 있다.
eth0 Link encap:Ethernet HWaddr 00:24:21:27:15:73 inet6 addr: fe80::224:21ff:fe27:1573/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:4581 (4.5 KB) Interrupt:43 Base address:0x8000
아래는 IPv6 주소를 받아온 후의 결과다. '2000::537c:fb85:80e8:7385' 이 새롭게 받은 주소이다.
eth0 Link encap:Ethernet HWaddr 00:24:21:27:15:73 inet6 addr: fe80::224:21ff:fe27:1573/64 Scope:Link inet6 addr: 2000::537c:fb85:80e8:7385/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2805 errors:0 dropped:0 overruns:0 frame:0 TX packets:460 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:428622 (428.6 KB) TX bytes:108918 (108.9 KB) Interrupt:43 Base address:0x4000
설정하기
dibbler 은 server, client 가 각각 따로 분리되어 있는 만큼, 이에 필요한 설정 파일도 따로 있다. 둘 다 모두 Ubuntu 에서 설치했다면, 정해진 디렉토리(/etc/dibbler)에 설정파일이 이미 존재하고 있을 것이다.
server.conf
server 에서 참조하는 파일로서 인터페이스, 주소범위, 기본옵션, 추가옵션 등의 설정을 할 수 있다.
# # Example server configuration file # # This config. file is considered all-purpose as it instructs server # to provide almost every configuratio # # Logging level range: 1(Emergency)-8(Debug) log-level 8 # Don't log full date log-mode short # set preference of this server to 0 (higher = more prefered) preference 0 iface "eth0" { // 인터페이스 설정 // also ranges can be defines, instead of exact values t1 1800-2000 t2 2700-3000 prefered-lifetime 3600 valid-lifetime 7200 # assign addresses from this pool class { // client 에 제공할 주소의 범위 지정 pool 2000::/64 } # assign temporary addresses from this pool ta-class { pool 3000::/96 } #assign /96 prefixes from this pool pd-class { pd-pool 3000:458:ff01:ff03:abcd::/80 pd-length 96 } # provide DNS server location to the clients option dns-server 2000::ff,2000::fe // DNS 서버 지정 # provide their domain name option domain example.com // 도메인 네임 지정 # provide vendor-specific data (vendor-id set to 5678) option vendor-spec 5678-0x0002aaaa # provide ntp-server information option ntp-server 2000::200,2000::201,2000::202 // NTP 서버 지정 # provide timezone information option time-zone CET # provide VoIP parameter (SIP protocol servers and domain names) option sip-server 2000::300,2000::302,2000::303,2000::304 option sip-domain sip1.example.com,sip2.example.com # provide NIS information (server addresses and domain name) option nis-server 2000::400,2000::401,2000::404,2000::405,2000::405 option nis-domain nis.example.com # provide NIS+ information (server addresses and domain name) option nis+-server 2000::501,2000::502 option nis+-domain nisplus.example.com # provide fully qualified domain names for clients # note that first, second and third entry is reserved # for a specific address or a DUID option fqdn 1 64 zebuline.example.com - 2000::1, kael.example.com - 2000::2, inara.example.com - 0x0001000043ce25b40013d4024bf5, zoe.example.com, malcolm.example.com, kaylee.example.com, jayne.example.com, wash.example.com }
위의 주석을 보면, 기존의 DHCP 설정 파일의 형식과 크게 다르지 않다.
client.conf
# Defaults for dibbler-client. # installed at /etc/dibbler/client.conf by the maintainer scripts # 8 (Debug) is most verbose. 7 (Info) is usually the best option log-level 7 # To perform stateless (i.e. options only) configuration, uncomment # this line below and remove any "ia" keywords from interface definitions # stateless iface eth0 { // 인터페이스 설정 # ask for address ia # ask for options option dns-server // DNS 서버 주소만 받음 # option domain # option ntp-server # option time-zone # option sip-server # option sip-domain # option nis-server # option nis-domain # option nis+-server # option nis+-domain }
FAQ
IPv6 관련 담당자 연락처
기관 | 이름 | 연락처 | 비고 |
한국 인터넷 진흥원 | 박현승 선임 | 02-405-6579 | |
한국 인터넷 진흥원 | 이지영 선임 | 02-405-6575 | IPv6 망 연동 |
한국 인터넷 진흥원 | 백형종 선임 | 02-405-6634 | 교육 |
한국 인터넷 진흥원 | 황위종 선임 | 02-405-6976 | 월드 IOP 관련 |
TTA | 석동현 선임 | 070-7780-0152 | IPv6 인증 시험 |
Youtube 와 같은 CP 에서 IPv6 를 지원해야 하나?
IPv6 로 접속하기 위해서는 양 끝단에서 Ipv6 를 지원해야 한다. 따라서 CP, SDP, NSU 서버등은 모두 IPv6 를 지원해야 한다.
CP 를 포함한 Socket API 를 사용하는 모든 Application 은 IPv6 에 대응할 수 있도록 코드를 수정해야 한다.
현재 IPv6 의 진행 상황은?
한국 인터넷 진흥원에서는 듀얼스택 방법을 권장하고 있으며, Application 레벨에서는 먼저 IPv6 로 접속시도를 하고 실패하면 IPv4 로 접속시도를 하도록 한다.
IPv6 를 검증하기 위한 방법은?
망연동을 신청을 하면, 현재 사내 망에 IPv6 망을 연동해 줄 수 있음. 별도의 비용은 없으며, 작업 기간으로는 최장 7일이 소요된다(담당자에게 문의할 것)
로컬망에서 테스트를 하고 싶다면, IPv6 를 지원하는 네트워크 장비(스위치 or 라우터)를 사용하여 IPv6 를 할당받을 수 있는지 여부를 확인 할 수 있다.
사내 망 상황은?
사내 망 관리 부서(2층)에 문의한 결과, L2 스위칭 장비를 이용하여 IPv6 Private 네트워크를 만들어 줄 수 있음. 하지만, 이 망에서 외부와의 IPv6 망 접속은 불가함(왜냐하면, 본사 측에서 보안 문제를 이유로 외부망(한국인터넷 진흥원)과의 망 연동을 꺼리고 있기 때문)
올해 말, 관리부서에서 Private IPv6 망을 테스트하여 결과보고를 올리면, 내년에 본사에서 전사적으로 IPv6 망을 구축할 것인지를 결정할 예정.
필요하다면, IPv6 망의 사용 목적과 회선 수를 알려주면, 작업해 줄 수 있음. 별도의 결재라인은 필요없고, 하지만 작업하는 데 1~2 달의 시간이 소요됨. 처음 해보는 것이라 확정하기 어려움.
간이 환경 구축 방법은?
터널링 소프트웨어를 설치하면, IPv6 망과 통신을 할 수 있다. 대표적인 S/W 로서는 http://gogo6.com/ 과 http://tunnelbroker.net/ 이 있다.
gogo6
홈페이지에서 Freenet6 를 눌러 가입 후 로그인(Sign Up) 하면 다운로드 받을 수 있다. 이때, 입력 항목에 다음과 같은 질문(Spam buster question : What does IP stand for?)에 Internet Protocol''' 라고 입력하면 된다. 참고로 내가 가입한 메일 주소는 fat81@hanmail.net 이다.
tunnelbroker
Telnet 같은 Application 이 IPv6 를 지원하는가?
현재 telnet 접속 시, IPv6 주소를 넣으면 접속 에러가 발생한다. 이유는 telnet application 자체가 IPv6 기반으로 만들어져 있지 않기 때문이다. 이렇다면, 기존의 모든 Network application 은 IPv6 를 지원하도록 수정되어야 한다.
이럴 때, 언뜻 기존의 IPv4 전용 application 을 그대로 사용하면서 IPv6 환경에서 실행하고 싶을 때가 있을 것이다. 이때 필요한 기능이 NAT(Network Address Translation) 이다.
현재 http://ibit.en.ec21.com IBIT 라는 회사에서 IPv6 주소를 IPv4 로 변환(translation)할 수 있는 장비를 만든다. 하지만, 위의 장비는 단말(client) 바로 앞단에 연결되는 형태이며, 각각의 패킷을 파싱하여, IPv6 패킷을 붙이거나, 제거해야 한다. 이로 인하여 네트워크 속도가 느려질 수 있고, 이러한 방법은 최종적으로 IPv6 에서 권장하는 방법이 아니다.