라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
Port Proxy를 이용한 IPv4 서비스의 IPv6 서비스로 변환
1. Port Proxy란
일반적으로 IPv4 애플리케이션을 IPv6로 변환하는 방법은 애플리케이션의 소스코드를 수정하는 것입니다. 하지만 개발자가 아닌 최종 사용자 입장에서 IPv4 애플리케이션을 IPv6로 변환하는 것은 거의 불가능합니다. 이러한 문제점을 해결하기 위해 IPv6 데이터(패킷)와 IPv4 데이터(패킷)를 상호 변환해주는 Port Proxy(포트 프락시) 애플리케이션이 개발되어 활용되고 있습니다.
Port Proxy는 서버 또는 클라이언트 시스템에 설치되어 IPv6 데이터(패킷)를 IPv4 데이터(패킷)로 변화시키거나 IPv4 데이터를 IPv6 데이터로 변환해 주는 역할을 합니다. IPv4 접속만 제공하는 서버에 설치되어 IPv6 접속을 가능하게 하며, IPv4 접속만 가능한 클라이언트에 설치되어 IPv6 서버에 접속을 할 수 있도록 합니다.
또한 Port Proxy는 응용서비스 개발과정에 유용하게 이용될 수 있습니다. 일반적으로 IPv6 애플리케이션을 개발하기 위해서는 서버와 클라이언트를 모두 IPv6를 지원할 수 있도록 변경해야 하지만, 양자을 모두 변경하는 데에는 많은 시간과 노력이 소요됩니다.
따라서, 클라이언트만 IPv6를 지원하도록 변경한 다음에 Port Proxy를 IPv4 서버에 설치하여 IPv6를 지원하도록 설정하면 클라이언트의 IPv6 기능을 손쉽게 테스트, 구현할 수 있습니다. 이와 반대로 서버만 IPv6를 지원하도록 수정한 다음, Port Proxy를 IPv4 클라이언트에 설치하면 서버의 IPv6 기능을 테스트할 수 있습니다.
그러나, Port Proxy는 TCP/UDP 데이터 자체에 대한 변환 기능은 없으며, IPv4(IPv6) 데이터 포맷(헤더)을 IPv6(IPv4) 데이터 포맷(헤더)에 맞도록 상호 변환시켜 주는 역할을 수행합니다.
따라서 아주 복잡한 서비스의 변환에는 적합하지 않고 웹, FTP, Telnet 등 간단한 서비스의 변한에 이용됩니다. 그러나, Port Proxy를 이용하여 특정 서비스를 IPv4 ↔ IPv6간 변환할 수 있는지는, 직접 테스트해보기 전에는 알기 어렵기 때문에, 반드시 테스트를 해보시기 바랍니다.
2. Port Proxy의 작동원리
Port Proxy를 이용하여 IPv4 전용 웹서버를 IPv6를 지원하도록 수정하는 예를 통해 Port Proxy의 작동원리를 알아보겠습니다.
아래 [그림1]처럼 Client는 Dual Stack(IPv4, IPv6 주소를 모두 가진 상태)이고 Server는 Dual Stack이지만, 실제 서비스를 제공해 주는 HTTP 서버(데몬)가 IPv4만을 지원하는 상태입니다. 즉, IPv6 주소는 가지고 있으나, 서버에서 IPv6 웹접속을 제공하지 않는 상태입니다.
이러한 경우 서버 시스템에 Port Proxy를 설치하면 IPv6 웹 접속을 제공할 수 있습니다.
[그림1]처럼 Client는 웹서버 대신 Port Proxy의 IPv6 80포트에 접속하고, Port Proxy는 클라이언트로부터 받은 IPv6 데이터를 IPv4로 변환하여 HTTP 서버의 IPv4 80포트로 전달을 합니다. 이로서 IPv6 클라이언트의 웹서비스 데이터가 IPv4 웹서버까지 전달됩니다.
또한, IPv4 웹서버에서 IPv6 Client로 데이터 전달은 웹서버의 IPv4 데이터가 Port Proxy의 IPv4 포트로 전달되고, Port Proxy가 IPv6 데이터로 변환하여 IPv6 Client에게 전달합니다.
이러한 일련의 과정을 거치면서, 사용자 입장에서는 Port Proxy의 IPv6 80포트를 웹서버의 IPv6 80포트로 인식하게 되고, 외형적으로는 웹서버가 IPv6 접속을 지원하게 됩니다.
 
사용자 삽입 이미지
[그림1] 서버에 Port Proxy를 설치하는 경우
경우에 따라 Port Proxy를 웹서버에 설치하지 않고 별도의 PC에 설치할 수도 있습니다. 서버의 OS가 Linux나 Solaris 등 Port Proxy가 지원하지 않거나 혹은 설치하기 곤란할 경우 Port Proxy 애플리케이션을 별도의 시스템(보통 Windows XP, 2003)에 설치를 하여 이용할 수 있습니다.[그림2]
 
사용자 삽입 이미지
[그림2] 별도의 시스템에 Port Proxy를 설치하는 경우
 
3. Port Proxy 애플리케이션의 종류
 
현재 쉽게 구할 수 있는 Port Proxy 애플리케이션은 아래와 같으며 기본적으로 IPv6 데이터(패킷)와 IPv4 데이터(패킷)간 상호 변환기능을 제공합니다.
 
o Windows XP 또는 2003 내장 Port Proxy ::참고 사이트
 
o 46Bouncer ::참고 사이트
 
o AsyBoV6 ::참고 사이트
 
o Relay6 ::참고 사이트, Relay6 FrontEnd ::참고 사이트
 
4. 46Bouncer를 이용한 IPv4 서비스를 IPv6로 변환
지금부터 46Bouncer를 이용하여 IPv4 웹 서비스(HTTP)를 IPv6로 접속하고 이용하는 방법을 알아 보겠습니다.
가. 46Bouncer의 다운로드
46Bouncer홈페이지에 접속하여Windows용 프로그램을 다운로드합니다.
** IPv6 포탈 자료실 IPv6 응용서비스 항목에도 등록해 두었습니다.
46Bouncer 홈페이지에는 Port Proxy에 대한 설명, 설치 및 사용방법, 그리고 Unix 계열에서의 설치방법 등이 나와 있으니 시간이 되시면 꼭 읽어보시기 바랍니다.[그림3]
 
사용자 삽입 이미지
[그림3] Windows용 46Bouncer 다운로드
 
46Bouncer를 이용하여 IPv6 접속서비스를 제공할 웹서버에 46Bouncer.zip 파일을 옮기고, 46Boucner.zip 파일을 임의의 폴더에 압축을 푸시기 바랍니다.[그림4]
필자는 c:\46bouncer 아래에 압축을 풀었으며,http://mail.ngix.ne.kr(IPv4 주소 203.254.38.46) 웹사이트를 IPv6로 접속할 수 있도록 설정해 보겠습니다.
 
사용자 삽입 이미지
[그림4]
 
나. 46Bouncer 실행 방법
46Bouncer는 GUI(Graphic User Interface)에서 직접 설정을 할 수 있는 GUI 모드와 Windows 서비스(데몬)로 동작을 하는 서비스(Service) 모드가 있습니다. GUI 모드는 46BncGUI.exe 파일을 이용하고 서비스 모드는 46BncSvc.exe 파일을 사용합니다. 그리고 GUI 모드 및 서비스 모두 동일한 설정파일(예:46bouncer.46b)을 이용합니다.
따라서 우선 GUI 모드를 이용하여 설정파일(46Bouncer.46b)을 생성하고 테스트를 충분히 거친 다음, 보다 안정적인 서비스모드(데몬모드)를 이용하는 것이 좋습니다.
다. GUI 모드로 46Bouncer 설정
GUI 모드로 실행하기 위해서는 46BncGUI.exe를 실행합니다.[그림5]
 
사용자 삽입 이미지
[그림5]
 
위와 같은 화면에서 (1)에서 (7)번 항목을 아래와 같이 순서대로 입력합니다.
(1) 해당 설정에 대한 간단한 이름을 입력합니다. "IPv4 to IPv6"로 입력을 했습니다.
(2) Receive on 항목에는 46Bouncer가 외부에서 오는 데이터(Packet)를 어떤 포트로 받을지 입력합니다.
외부에서 보면 Port Proxy가 IPv6 웹서버처럼 인식되어야 하기 때문에 80 포트를 입력했습니다. 아직 외부에서 도착하는 데이터(Packet)의 소스주소를 선택할 수 있는 기능은 구현되어 있지 않으므로, 외부에서 46Bouncer의 80포트로 도달하는 모든 데이터를 받아들입니다.
(3) Send to 항목에는 변환된 데이터를 어디로 보낼지 입력합니다.
이미 설명했듯이 46Bouncer는 IPv6 데이터를 받고, 변환된 IPv4 데이터를 동일한 시스템의 IPv4 웹서버로 전달해야 합니다. 따라서, Host에는 Localhost(127.0.0.1) 또는 실제 웹서버의 IPv4 주소(203.254.38.46)를 입력합니다. 그리고 웹서버의 포트(80)를 입력합니다.
** 만약 46Bouncer를 웹서버가 아닌 별도의 독립된 시스템에 설치한 경우 Host 항목에 웹서버의 실제 IPv4 주소를 반드시 입력해야 합니다. 왜냐하면 46Bouncer는 변환된 IPv4 데이터를 Localhost가 아닌 해당 IPv4 웹서버로 보내야 하기 때문입니다.
만약 웹서버가 별도의 포트(예:8080)을 사용하고 있다면 Port에 해당 포트(예:8080)를 입력해야 합니다.
(4) TCP 프로토콜, UDP 프로토콜의 사용여부를 결정합니다.
HTTP 데이터는 대부분 TCP로 송수신되므로 TCP를 선택합니다.
(5) IPv4 데이터를 IPv6로 변환을 할지, IPv6 데이터를 IPv4 변환할지 선택합니다.
우리의 목표는 IPv4 웹서버에 IPv6 접속기능을 추가하는 것이기 때문에, IPv6 데이터를 IPv4 데이터로 변환해야 합니다. 즉 클라이언트의 IPv6 데이터를 받아서 46Bouncer가 IPv6 데이터를 IPv4로 변환한 다음 IPv4 웹서버로 넘겨주는 것이기 때문에, 따라서 IPv6 → IPv4를 선택합니다.
(6) 최대 접속(커넥션) 개수를 지정합니다.
기본 값은 10으로 되어 있습니다. 이미지가 많은 웹페이지의 경우 한번에 수십개의 커넥션이 발생하므로 넉넉잡고 1000을 입력합니다.
아무 것도 입력하지 않고 Save를 누르면 기본 값인 46bouncer.46b 파일명으로 저장이 됩니다.
(8) 지금까지 설정한 설정치를 이용하여 46Bouncer를 실행시키는 기능입니다.
'Start This'하나의 설정치만 실행하며,'Start All'은 여러 개의 설정치를 동시에 실행하는 기능입니다. 하나의 46Bouncer 프로그램에서 여러 서버의 데이터를 변환하거나, 하나의 서비스에서 다양한 포트를 사용하는 경우에는 여러 개의 설정치를 동시에 실행하는'Start All'명령을 이용합니다.
라. GUI 모드로 46Bouncer 실행
[그림5]와 같이 설정을 하고'Start This'를 누릅니다. 설정에 이상이 없으면 주요 설정항목이 회색으로 변하면서 46Bouncer가 실행됩니다.[그림6]
 
사용자 삽입 이미지
[그림6]
 
46Bouncer의 설정이 원하는대로 되었는지 확인해 보려면'시작 >> 실행 >> com'입력해 명령어 프롬프트를 실행합니다.
시스템의 주요 네트워크 포트 상태를 알아보는netstat -an명령을 실행하면 [그림7]처럼 시스템의 각종 네트워크 포트 상태를 알 수 있습니다.
이중0.0.0.0:80은 IPv4 80포트가 활성화되어 있다는 의미이고,[::]:80은 IPv6 80포트가 활성화되어 있다는 의미입니다. 이중 IPv4 80 포트는 기존의 IPv4 웹서버(Apache 웹서버)가 Listening하고 있으며, [::]:80은 방금 실행한 46Bouncer가 이용하고 있습니다.
이로서 46Bouncer가 정상적으로 실행되고 있음을 확인하였습니다.
 
사용자 삽입 이미지
[그림7]
 
마. IPv6를 이용한 웹사이트 접속
46Bouncer 설정이 완료되고 46Bouncer의 정상적인 실행이 확인되었으므로 웹 브라우저를 이용하여 IPv6 웹사이트에 접속해 보겠습니다.
지금까지 예를 든 웹서버의 IPv4 주소는 203.254.38.46 이었는데 IPv6 주소는 무었일까요? 바로 웹서버가 설치된 시스템의 IPv6 주소가 웹서버의 IPv6 주소가 됩니다.
'시작 >> 실행 >> cmd >> ipconfig'를 실행하여 시스템의 IPv6 주소를 확인합니다.[그림8]
2001:2b8:2:fff3:290:feff:fe22:2204가 웹서버의 IPv6 주소가 됨을 알 수 있습니다.
 
사용자 삽입 이미지
[그림8]
 
** Windows XP는 기본적으로 두 개의 IPv6 주소를 생성하는데, 위쪽의 IPv6 주소는 Temporary IPv6(임시 주소) 주소이고 아래쪽의 IPv6 주소는 Public IPv6 주소입니다. 두 주소가운데 시간이 지나도 변하지 않는 Public IPv6 주소가 서버 운영에 적합합니다.
** Windows 2003은 기본적으로 Temporary IPv6 주소가 생성되지 않도록 되어 있습니다.
IPv6 주소를 바로http://[2001:2b8:2:fff3:290:feff:fe22:2204]를 Internet Explorer에 입력하면 될까요?
아닙니다.
최근의 Internet Explorer는 주소 입력 창에 IPv6 주소를 바로 입력하는 것을 지원하는 않기 때문에 반드시 호스트명(DNS 네임)을 입력해야 합니다. 따라서 기존 mail.ngix.ne.kr의 DNS를 변경하여 mail.ngix.ne.kr 에 대한 IPv6 주소(DNS의 AAAA 레코드)를 2001:2b8:2:fff3:290:feff:fe22:2204로 설정해 주어야 합니다.
또는 별도로 ipv6mail.ngix.ne.kr 이라는 호스트네임을 만들고 2001:2b8:2:fff3:290:feff:fe22:2204을 할당할 수 있습니다.
하지만 즉시 DNS 설정 변경해주면 좋으나 그렇지 못한 경우가 많습니다.따라서 클라이언트PC의 hosts 파일을 수정하여 ipv6mail.ngix.ne.kr 호스트네임에 2001:2b8:2:fff3:290:feff:fe22:2204 IPv6 주소를 할당해 보겠습니다.
** hosts 파일의 내용은 DNS 서버의 설정보다 우선하게 되므로, DNS 서버가 없거나 즉시 수정할 수 없을 때 hosts 파일의 내용을 임시로 변경하여 DNS 서버를 수정한 것과 동일한 효과를 얻을 수 있습니다.
DNS(호스트네임) 수정은 c:\windows\system32\drivers\etc\hosts 파일을 메모장이나 기타 텍스트 에디터로 열고, 가장 마지막 줄에 아래 한줄을 추가합니다.[그림9]
 
사용자 삽입 이미지
[그림9]
 
hosts 파일 수정내용이 정상적으로 반영되었는지 확인하시려면 ping ipv6mail.ngix.ne.kr 명령을 입력하여 ping에 대한 응답이 정상적으로 오는지 확인하면 됩니다.[그림10]
 
사용자 삽입 이미지
[그림10]
 
이제 임시로 DNS 수정이 완료되었으므로 Internet Explorer를 이용하여 IPv6 웹사이트에 접속해 보겠습니다.
클라이언트 PC에서 Internet Explorer 주소 입력창에http://ipv6mail.ngix.ne.kr를 입력하면 [그림11]과 같은 화면이 나타납니다.
 
사용자 삽입 이미지
[그림11]
 
이전에 설명한netstat -an 명령을 이용하여 확인할 수 있습니다.
'시작 >> 실행 >> cmd >> netstat -an'명령을 실행하면 네트워크 연결정보가 나옵니다.[그림12]
아래그림에서 [2001:2b8:2:fff3:290:feff:fe22:2204] 호스트 즉 ipv6mail.ngix.ne.kr 시스템의 IPv6 80포트와 C연결이 정상적으로 이루어 졌던 것을 알 수 있습니다.
** http 프로토콜의 경우 세션이 연결되는 시간이 매우 짧기 때문에 대부분 상태가 TIME_WAIT로 나타나게 됩니다.
 
사용자 삽입 이미지
[그림12]
 
5. 46Bouncer를 서비스 모드로 실행
GUI 모드로 46Bouncer를 실행하면 설정이 용이하긴 하지만, 시스템이 시작될 때 마다 46Bouncer GUI를 실행시켜야하는 번거로움이 있습니다. 그리고 일반적으로 GUI 프로그램보다 서비스 프로그램이 안정적인 경우가 많습니다.
46Bouncer를 GUI 모드로 실행시키는 방법을 자세히 알아보겠습니다.
가. 46Bouncer 서비스의 설치
46Bouncer를 서비스 모드로 실행하기 위해서는46BncSvc.exe파일을 이용하여 46Bouncer를 시스템의 서비스로 등록을 해야 합니다.
서비스 생성 방법
46BncSvc.exe create -f <full path of config file> -l <full path of log file>
** -l 옵션은 생략 가능합니다.
생성예
46BncSvc.exe create -f c:\46bouncer\46bouncer\46bouncer.46b
** 46Bouncer.46b 파일은 GUI로 46Bouncer를 실행시킬 때 생성한 설정 파일입니다.
나. 46Bouncer 서비스의 시작
46Bouncer가 서비스로 등록되었으면 46Bouncer 서비스를 시작해야 합니다.
서비스 시작 방법
46BncSvc.exe start
서비스가 시작되어도 아무런 메시지가 나오지 않습니다. 시스템에서 46Bouncer 서비스가 정상적으로 동작하는지 확인하기 위해서는 시작 >> 제어판 >> 관리도구 >> 시스템 항목을 선택한 뒤 46Bouncer 항목을 확인하시면 됩니다.[그림13]
 
사용자 삽입 이미지
[그림13]
 
다. 46Bouncer 서비스의 중단 및 삭제
더 이상 46Bouncer가 필요없거나 새로운 설정내용을 적용하기 위해서는 46bouncer 서비스를 중단시켜야 합니다.
서비스 중단 방법
46BncSvc.exe stop
시스템에서 46Bouncer 서비스를 제거하기 위해서는 아래와 같은 명령을 이용합니다.
46BncSvc.exe delete
아래 [그림14] 처럼 시스템 서비스 항목에서 46Bouncer가 제거된 것을 확인할 수 있습니다.
 
사용자 삽입 이미지
[그림14]
 
46Bouncer를 서비스모드로 실행한뒤, 46Bouncer를 GUI 모드로 실행한 것과 동일하게 DNS를 수정하고 웹 브라우저를 이용하여 해당 웹사이트에 접속하시면 됩니다.
이상으로 46Bouncer를 이용하여 IPv4 서비스를 IPv6가 지원되도록 변경하는 방법에 대해 알아보았습니다.

'Technology > IPv6' 카테고리의 다른 글

ipv6 DNS 설정 클라이언트  (0) 2004.07.27
Linux에서 IPv6 환경 구성 2  (0) 2004.07.26
Linux에서 IPv6 환경 구성 3  (0) 2004.07.26
Linux에서 IPv6 환경 구성 1  (0) 2004.07.26
IPv6 웹서버 구현  (0) 2004.07.26
6to4 게이트웨이를 이용한 IPv6 네트워크 구현  (0) 2004.07.26
  Comments,     Trackbacks