IPv6 포럼코리아기술문서 2001-004 IPv6 PC 라우터및호스트설치및설정방법 IPv6 PC Router & Host Configuration (Linux 2.4.X) 이경진 (K. J. Lee) 이승윤 (S. Y. Lee) 김용진 (Y. J. Kim) ETRI ETRI ETRI 목차 1. Linux 운영체제설치 2. 네트워크구조 3. 네트워크인터페이스의 IPv6 주소지정 4. 터널인터페이스설정 5. IPv6 라우팅테이블엔트리설정 6. PC 라우터의작동및검사 7. IPv6 호스트설치및설정참고문헌 1
IPv6 포럼코리아기술문서 2001-004 IPv6 PC 라우터및호스트설치및설정방법 IPv6 PC Router & Host Configuration (for Linux 2.4.X) 이경진 (K. J. Lee) 이승윤 (S. Y. Lee) 김용진 (Y. J. Kim) ETRI ETRI ETRI 본문서는 Linux 2.4.X 운영체제를이용하여, IPv6 Network 구축을위한 IPv6 PC 라우터와호스트의설치와설정방법을설명하고, 터널링 (Tunneling) 을통한다른 IPv6 Network 과의연동방법을기술한다. 1. Linux 운영체제설치 리눅스커널버전 2.4.X 는 IPv6를 support하고있기때문에별도의 patch없이커널컴파일만으로 IPv6를지원할수있다. 그럼우선최신커널을다운로드받아설치하는과정을살펴보자. 다음서버에접속하여최신버전의커널을다운로드받을수있다. 이번 IPv6 network 구성에서사용한리눅스버전은레드햇 (RedHat) 7.1이며커널버전은 linux-2.2.7이다. 커널소스를받은후 /usr/src/linux-2.2.7에압축을풀고심볼릭링크 (symbolic link) 를설정한다. 2
IPv6를지원하기위해서커널옵션에서반드시설정해주어야할것들은다음과같다. 이밖에시스템특성에따라필요한옵션들을설정해주어야한다. ( 표 1) 은설정이필요한옵션들을정리하고있다. ( 표 1). IPv6를지원하기위해설정이필요한커널옵션들커널옵션설정유무 Code maturity level options Loadable module support Console drivers Networking options Prompt for development and/or incomplete code/drivers Enable loadable module support Set version information on all symbols for modules Kernel module loader Video mode selection support Packet Socket Unix domain sockets Kernel/User netlink socket Routing messages TCP/IP networking The IPv6 protocol IPv6: enable EUI-64 token format removed 2.4.5+ IPv6: disable provider based address removed 2.4.5+ File systems /proc filesystem support Kernel hacking Magic sysrq key 각커널옵션들의의미는다음과같다. 3
IPv6 포럼코리아기술문서 2001-004 Code maturity level options Y를선택하면개발중인새로운기능과새로운드라이버를포함할것인지에대해선택할수있도록하는데, 이옵션을켜두었을때시스템특성에따라에러가발생하기도한다. IPv6는 experimental 버전이므로이옵션을 Y로설정해야한다. Loadable module support 리눅스의모듈기능에대한설정. Enable Loadable module Support : version 1.2 이후부터리눅스커널은모듈기능을이용한다. 모듈을이용하면자주쓰이지않는장치드라이버나기능들을커널바깥에모듈로만들어두었다가필요할때에만동적으로메모리에적재하여사용하고작업이끝나면메모리에서다시제거하므로메모리를효율적으로사용할수있고, 커널크기가감소한다. 또한, 모듈은스스로가컴파일되어독자적인기능을가지므로모듈로설정한기능에변화가있더라도전체커널에는손대지않을수도있다. 파일시스템, 장치드라이버, 바이너리포맷등많은기능이모듈을지원한다. 반드시 [Y] 를선택. Set version information on all symbols for modules : 다른버전의커널에서만들어진모듈이나커널과함께배포되지않는특별한모듈을사용할수있도록하는기능. Kernel module Loader : kerneld 데몬이대체된기능. 모듈로만들어진기능을필요할때적재하고제거하는작업들을 modprobe를이용해커널이자동으로관리한다. 물론적절한옵션들도덧붙인다. Networking options Packet Socket : tcpdump처럼매개프로토콜없이직접네트워크장치와통신하는어플리케이션에서사용된다. Kernel/User netlink Socket : 커널의어떤부분들또는모듈과유저프로세스사이의양방향통신을허락한다. 유저프로세스는 /dev 디렉토리로부터읽거나쓸수있다. routing message 기능과함께네트워크관련정보를알리기위해사용하고 IP: firewall packet netlink device 기능과함께가능한공격에대한정보를알리기위해방화벽코드에서사용합니다. arpd 데몬, 네트워크링크드라이버를사용하기위해서는 [Y] 를선택해야한다. Routing messages : 네트워크관련라우팅정보를 /dev/route에서읽을수있게하는기능이다. mknod("man mknod") 로메이저넘버 36, 마이너넘버 0인스페셜캐릭터파일로 /dev/route를만들면이파일을읽어서라우팅정보에대해알아낼수있다. 4
Unix domain Sockets : 소켓은네트워크연결을 open하고 access하기위한표준메커니즘이다.. 리눅스박스가어떤네트워크에도연결되지않아도 X 윈도우시스템이나 syslog 같은많은일반적인프로그램이소켓을사용한다. TCP/IP networking : 거의대부분네트워크에서사용하는표준프로토콜로인터넷접속뿐만아니라다른많은프로그램에꼭필요하므로반드시 [Y] 를선택한다. The IPv6 protocol (EXPERIMENTAL) : IPv6을실험적으로지원한다. File systems /proc filesystem Support : 커널과프로세스를위한가상의파일시스템으로실제디스크공간을점유하지는않는다. 프로세스등시스템정보를제공하는많은프로그램이사용하는유용한기능이므로반드시 [Y] 를선택한다. /proc 아래시스템정보들은텍스트형태로관리되므로 cat 명령으로도정보를볼수있다. 예를들어 cpu 정보를보려한다면다음명령을사용한다 : # cat /proc/cpuinfo Console drivers Video mode selection Support : 커널을시작할때 "vga=" 옵션으로비디오모드를선택하는기능이다. 예를들어 "VGA=ASK" 옵션을사용하면커널이시작될때비디오모드메뉴가나타난다. "man bootparm" 명령으로부트매개변수를알아볼수있다. Kernel hacking Magic sysrq key : [Y] 로설정할경우시스템이심각한문제가 (crashes) 있어도통제할수있다. 예를들면버퍼캐시를디스크로옮기고, 시스템을재부팅하거나상태정보를표시한다. 이기능은 "<alt>+<sysrq>" 를누른채 k, r, s 등 <command key> 를눌러사용할수있고 SysRQ 키가없는키보드는 PrtSc 키를누르면된다. 위의옵션들을설정해준후커널컴파일하고모듈을설치한다. 이제 IPv6 를설정할준비가되었다. 5
IPv6 포럼코리아기술문서 2001-004 PC 라우터를구성하므로두개이상의 NIC(Network Interface Card) 를해당 PC에설치한다. 참고로본실험에서는다음두개의 NIC를사용하였다. 해당하는 NIC 모듈은 Network Device Support 커널옵션항목에서설정해주어야한다. ( 본문서에서는 NIC 설치에대한내용은기술하지않는다.) 2. 네트워크구조 이번실험에서구성하고자하는네트워크모델은 ( 그림 1) 과같다. Net 1 : IPv4/IPv6 H1 H2 Router 1 Tunnel Interface 의 IPv4 주소 : 129.254.254.86 Tunnel Interface 의 IPv6 주소 : 3ffe:2e00:e:fff6::1 IPv4 Internet IPv6/IPv4 Tunneling Router 2 eth0 의 IPv4 주소 : 129.254.164.13 Tunnel Interface(sit1) 의 IPv6 주소 : 3ffe:2e00:e:fff6::2 PC-Router eth1 의 IPv4 주소 : 129.254.179.33 eth1 의 IPv6 주소 : 3ffe:2e01:1:5::1 H 3 H 4 Net 2: IPv4/IPv6 (3ffe:2e01:1:5::/64) eth0 의 IPv4 주소 : 129.254.179.34 eth0 의 IPv6 주소 : 3ffe:2e01:1:5::2 ( 그림 1) 터널링네트워크구조 6
( 그림1) 과같이 PC-Router와 Router 1을터널링 (Tunneling) 하고자한다. PC-Router는 IPv6 Prefix 3ffe:2e01:1:5::/64를할당받아서서브넷 Net2를구성하고 Router 1과 IPv6 over IPv4 터널링을한다. Router 1의 TEP(Tunneling End Point) IPv4 주소는 129.254.254.86이고, PC-Router의 TEP IPv4 주소는 129.254.164.13 이다. Router 1의 TEP IPv6 주소는 3ffe:2e00:e:fff6:1이고, PC-Router의 TEP IPv6 주소는 3ffe:2e00:e:fff6:2 이다. 3. 네트워크인터페이스의 IPv6 주소지정 Assumption 1. 터널서버관리자로부터할당받은 IPv6 Prefix는 3ffe:2e01:1:5::/64이다. 2. PC-Router의 eth0 IPv4 주소는 Router 1과터널링되는 IPv4 주소이다. 3. Prefix 3ffe:2e01:1:5::/ 64의 Subnet은 PC-Router의 eth1과직접연결되어있다. 4. eth1은 Autoconfiguration에의해 IPv6 주소를부여받지만, Prefix 3ffe:2e01:1:5:: 와임의의값 (1) 을결합시켜유일한 IPv6주소 3ffe:2e01:1:5::1을배정한다. (PC-Router 가관장하는 Link-local Network의 Host가 PC-Router를 default-gateway로지정할때필요하다.) 5. PC-Router의 sit1은 Router 1과터널링할때이용되는 Tunnel interface이다 Script files 수정 1. 커널컴파일을통해서필요한기능들을지원할수있도록하였으므로이제스크립트파일들을수정하여 IPv6를 enable 시켜야한다. 그럼먼저 /etc/sysconfig/network 파일에다음과같은엔트리들을포함시켜수정한다. 7
IPv6 포럼코리아기술문서 2001-004 2. /etc/sysconfig/network-scripts/ 에는 IPv6 지원을위해필요한여러가지스크립트파일들이존재한다. 본실험에서는네트워크인터페이스카드두개에대해서 ifcfg-eth0 와 ifcfg-eth1 스크립트파일을각각수정하여주었다. /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 eth1은새로운 IPv4/IPv6 서브넷을구성하는데 IPv4 서브넷은 129.254.179.32~47까지의범위를갖도록설정하였고, IPv6 서브넷은 3ffe:2e01:5::/64 범위를갖도록설정하고자하므로 IPv4 주소는 129.254.179.33으로설정하고 IPv6주소는 3ffe:2e01:1:5::1로설정하고 Net2에서각각의디폴트주소가되도록하여라우터역할을수행하도록설정하였다. 8
4. 터널인터페이스설정 Assumption 1. 본실험에서 Router 1의 IPv4 주소는 129.254.254.86 이다. 2. PC-Router의터널인터페이스인 sit1의물리적인터페이스 eth0의 IPv4 주소는 129.254.164.13이다. Notice 리눅스커널버전 2.4.x에서는 ifconfig sit1 up으로터널인터페이스 sit1이생성되지않는다. 따라서, sit1을터널인터페이스로사용하기위해서취할수있는세가지방법이있다. 1. automatic-tunneling 에사용되는 sit0 에 IPv6 over IPv4 TEP 를할당하면 sit1 생성 2. iptunnel 명령어를이용하여터널인터페이스 sit1 을생성한다. 3. 모든것을스크립트로해결하고자한다면, 다음스크립트를다운로드받아서해당디렉토리에복사한후이어지는설명과같이수정해준다. http://www.6bone.ne.kr/network-scripts.zip ( /etc/sysconfig/network-scripts/ ) Script file 수정 1. IPv6-in-IPv4 터널인터페이스 sit0,sit1,sit2 인데 sit0는 automatic tunneling을위해 reserve된인터페이스이므로 sitx (X>1) 인인터페이스를사용한다. 따라서 sit0는 ifcfg-sit0 파일을다음과같이설정하여사용하지않았다. 9
IPv6 포럼코리아기술문서 2001-004 /etc/sysconfig/network-scripts/ifcfg-sit0 2. sit1 의설정스크립트파일인 ifcfg-sit1 을다음과같이수정하였다. /etc/sysconfig/network-scripts/ifcfg-sit1 5. IPv6 라우팅테이블엔트리설정 이제필요한 IPv6 루트를설정해주어야한다. 이를위해서 /etc/sysconfig/static-routesipv6라는스크립트파일에필요한라우팅테이블엔트리를추가한다. 우리가이미알고있는정보로는터널관리자로부터할당받은주소블록인 일반적으로알고있는실험주소와공식주소의주소블록인 10
이있으며이에대한루트정보를추가해주어야한다. 따라서 eth1의 IPv6 서브넷인 3ffe:2e01:1:5::/64 prefix에매치하는모든패킷은 eth1을통하여전송되도록하였으며, longest prefix matching에의해위실험주소 / 공식주소블록에매치하는모든주소가 sit1 을통해라우팅되도록엔트리를추가하였다. /etc/sysconfig/static-routes-ipv6 이제필요한모든네트워크설정을마쳤다. 6. PC 라우터의작동및검사 이제모든수정된네트워크구성을반영해보자. 명령을사용하면재부팅할필요없이수정된네트워크구성을실험할수있다. 인터페이스정보확인우선필요한네트워크설정이제대로이루어졌는지확인해보자. 각인터페이스정보는 ifconfig 명령어로확인할수있다. 1. eth1에 IPv6 주소 3ffe:2e01:1:5::1/64 가설정되어있는지확인한다. 2. sit1의 TEP IPv6 주소 (3ffe:2e00:e:fff6::2) 가설정되어있는지확인한다. 11
IPv6 포럼코리아기술문서 2001-004 라우팅테이블확인라우팅테이블에서 static-routes-ipv6 파일의루트엔트리들이반영되었는지확인한다. route A inet6 명령어로 IPv6 라우팅테이블을확인할수있다. 12
위의검사에이상이없을때 IPv6 Networking 기능을확인해보자. 1. PC-Router 자신의 IPv6주소 (3ffe:2e00:e:fff6::2) 로 ping6를실행 2. Router 1의 TEP IPv6 주소 (3ffe:2e00:e:fff6::1) 로 ping6를실행 3. Router 1에터널로연결된다른 PC의 TEP IPv6주소 (3ffe:2e00:e:fffe::2) 를 ping6 실행 13
IPv6 포럼코리아기술문서 2001-004 ping6의응답이제대로돌아오면 IPv6 Networking 기능이제대로동작하고있음을확인할수있다. 그럼 IPv6 DNS 서비스를받을수있는경우에는 ping6에 IPv6 주소대신에도메인이름 (www.6bone.net) 을입력해도된다. 7. IPv6 호스트설치및설정 IPv6 호스트를설치하는순서 1. 리눅스설치. 2. 필요한커널옵션을설정하여커널컴파일. 3. PC-Router를설정할때와같이 /etc/sysconfig/network와 /etc/sysconfig/networkscripts/ifcfg-eth0 스크립트파일에 IPv6 Networking에필요한구성정보를추가. 4. 라우팅테이블에필요한루트엔트리추가하기위해 /etc/sysconfig/static-routes-ipv6 스크립트파일수정. IPv6 호스트가위치할 Network의 IPv6 Prefix와임의의값을가지고 IPv6 주소를정할수있으나, PC 라우터가 Router Advertisement를통해 Prefix 정보를공지하므로, Host는 Auto-configuration을통해유일한주소를할당받을수있다. Assumption 1. 설치할호스트는그림 1에서 Net2의 H3이다. 2. H3의 Network Interface는 eth0라고가정한다. 3. 그림 1에서 PC-Router가 Prefix 3ffe:2e01:1:5::/64를 Advertise하므로 H3는 EUI-64 방식으로유일한 IPv6 주소를배정받을수있다. 3ffe:2e01:1:5:: + Interface ID -> H3의 IPv6 주소 14
4. Prefix에임의의값을결합하여 IPv6 주소를배정받을수있다. 3ffe:2e01:1:5:: + 임의의값 -> H3의 IPv6 주소예 ) 3ffe:2e01:5:::2 /64 Network 설정을위한 Script file 수정 /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0 라우팅테이블엔트리추가를위한 Script file 수정 /etc/sysconfig/static-routes-ipv6 네트워크 prefix 3ffe:2e01:5::/64 에매치하는모든패킷은 eth0를통하여나가도록하였으며디폴트주소는 PC-Router의 IPv6 주소인 3ffe:2e01:1:5::1로 eth0를통해나가도록 15
IPv6 포럼코리아기술문서 2001-004 설정하였다. 설정확인인터페이스정보확인 : ifconfig IPv6 routing table 확인 16
참고문헌 [1] http://kldp.org/koreandoc/html/2.4kernel_compile-kldp/2.4kernel_compile- KLD.html#toc22 [2] http://www.bieringer.de/linux/ipv6/ipv6-howto/ [3] 신명기외 5명, IPv6 시험망구축방법 IPv6 포럼코리아기술문서 2001-001 17