engineering/Network Eng.2006. 8. 7. 12:13
출처 블로그 > [네트워크 대통령]개발자의 하루하루..
원본 http://blog.naver.com/aimh/3388281

1절. 소개

개인적으로 최근들어 SNMP에 관심을 가지게 되었다. (실은 상당히 오래되었지만) 그래서 앞으로 몇부? 에 걸쳐서 SNMP관련 강좌를 개설하고자 한다. 강좌는 SNMP개요및 설치운용에서 부터 시작해서 프로그래밍을 통해서 SNMP응용 애플리케이션을 제작하고, 확장 MIB(뒤에 설명한다)를 작성하는 것 까지를 다룰것이다.

이번글은 그중 첫번째 글로 SNMP개요와 설치및 운용에 대한 글이다. 설치및 운용은 실제 어떻게 작동되는지 눈으로 확인하는 차원의 수준에서 이루어질 것이며, 설치되는 snmp애플리케이션의 상세설치와 높은 수준에서의 운용에 대해서는 언급하지 않을것이다. 이러한 것들은 (필요할경우)해당 snmp애플리케이션의 메뉴얼을 참고해서 개인적으로 학습해야만 할것이다.

여기에서 얻은 지식은 나중에 SNMP애플리케이션을 제작하는 밑거름이 될것이다.


2절. SNMP개요

2.1절. SNMP란 무엇인가

SNMP는 Simple Network Management Protocol의 약자이다. 해석을 해보자면 간단한 네트워크관리를 위한 규약 인데, 말그대로 SNMP는 네트워크관리를 위한 용도로 사용되는 프로토콜이다. 가장 앞에 Simple라는 단어가 붙어있는데, 진짜로 간단한 프로토콜인지 아닌지는 사람에 따라 약간씩 차이가 있을수 있다. 필자가 보기엔 그리 복잡한 프로토콜은 아닌것 같은데, 어떤 사람들은 매우 복잡한 프로토콜 이라고 말하는 사람들도 있다.

그럼 먼저 SNMP가 나타난 배경에 대해서 알아보도록 하겠다. SNMP가 쓰이기 전에 일반적으로 사용되는 네트워크 관리는 ICMP에 의존했었다. ICMP는 Network계층의 프로토콜로써, 운영체제에 관계없이 사용할수 있는 간단한 프로토콜이였다. 이 프로토콜을 이용해서 우리는 네트워크로 연결된 각각의 호스트가 작동하고 있는지, 작동한다면 어느정도의 응답시간을 가지고 작동하는지 등의 간단한 정보를 얻을수 있었으며, 초기에는 이정도로도 필요한 네트워크 관리가 가능했었다. ICMP를 이용한 가장 유용한 도구는 아마도 ping 프로그램일 것이다.

그러나 인터넷의 사용이 보편화되고 네트워크에 연결된 호스트의 수가 증가하자 거기에 따라서 네트워크 구성역시 복잡해지고, ICMP만을 가지고는 이러한 네트워크의 관리를 효율적으로 할수 없게 되었다.

그래서 몇가지 프로토콜에 대한 연구가 진행되었고, SGMP, HIMS, CMIP/CMIS등이 제안되게 되었다. 이중에서 SGMP를 발전시킨 SNMP가 사실상 네트워크 관리를 위한 표준적인 프로토콜로 자리잡게 되었다. 다른 프로토콜들이 사용되지 않은데에는 몇가지 이유가 있었다. CMIP/CMIS는 너무 방대하고 너무 복잡했으며, HEMS의 경우에는 실제 적용사례가 적었기 때문이다.

어쨋든 SNMP는 거의 대부분의 운영체제에서 사용되어 지고 있다. 여러분이 사용하는 Linux, 그밖의 대부분의 유닉스와, 윈도우계열 운영체제는 기본적으로 SNMP프로토콜을 사용하는 도구들을 제공하고 있다. 그외에도 router등 TCP/IP를 네트워크 프로토콜로 사용되는 운영체제들 역시 SNMP는 필수적으로 제공하고 있다.


2.2절. SNMP로 할수 있는 것들

SNMP를 이용해서 할수 있는 것들은 다음과 같다.

네트워크 구성관리

네트워크상의 호스트들이 어떤 구조를 이루고 있는지 지도를 그리는게 가능하다.

성능관리

각 네트워크 세그먼트간 네트워크 사용량, 에러량, 처리속도, 응답시간 등 성능 분석에 필요한 통계정보를 얻어낼수 있다.

장비관리

SNMP의 주목적이 네트워크관리관리 이기는 하지만 SNMP특유의 유연한 확장성을 이용하여서 시스템정보(CPU, MEMORY, DISK 사용량)의 정보를 얻어올 수 있도록 많은 부분이 확장되었다. 이 정보는 네트워크문제를 해결하는데 큰도움을 준다. 예를들어 특정 세그먼트의 네트워크 사용량이 갑자기 급증했는데, 특정 호스트의 CPU사용율까지 갑자기 증가했다면, 우리는 해당 호스트에서 문제가 발생했을것이란걸 유추해낼수 있을것이다.

보안관리

정보의 제어 및 보호 기능, 최근버젼인 SNMP3는 특히 정보보호를 위한 기능이 향상되었다.


2.3절. SNMP를 통한 망의 구성

SMTP는 인터넷상에서 메시지를 교환하기 위한 프로토콜로 사용되며, 주로 전자메일 교환을 위해서 사용되는 프로토콜이다. 그러나 SMTP는 어디까지나 프로토콜일 뿐이며, 실제 메시지를 인터넷상에서 주고 받기 위해서는 SMTP프로토콜을 사용하는 SMTP서버(Sendmail같은)와 SMTP클라이언트(mutt, pine같은)가 준비되어 있어야만 한다.

SNMP역시 그자체로는 프로토콜일 뿐이며 SNMP프로토콜을 활용해서 실제 네트워크 관리 정보를 얻어오기 위해서는 응용 애플리케이션이 준비되어있어야만 한다. 보통의 네트워크프로토콜을 사용하는 애플리케이션이 서버/클라이언트 모델로 구성되듯이 SNMP역시 서버와 클라이언트로 구성된다.

그림 1. SNMP망 관리 시스템

일반적으로 SNMP망 에서는 서버/클라이언트라고 부르지 않고 snmp manager/snmp agent라고 부른다. snmp agent는 관리대상이 되는 시스템에 설치되어서 필요한 정보(네트워크 혹은 시스템)를 수집하기 위한 snmp 모듈(혹은 애플리케이션) 이며, snmp manager은 snmp agent가 설치된 시스템에 필요한 정보를 요청하는 snmp 모듈이다. snmp agent는 서버, snmp manager은 클라이언트로 생각하면 이해하기가 좀더 수월할 것이다(그러나 반드시 agent가 서버, manager이 클라이언트가 되는건 아니다. 그냥 개념적으로 이해만 하고 있도록 하자).

2.4절. MIB에 대해서

SNMP는 네트워크를 관리하기 위한 프로토콜이다. 그렇다면 무엇을 관리할 것인가(관리객체)를 결정해야 할것이다. 관리객체를 결정했다면, 이러한 관리객체를 효과적으로 관리하기 위해서 이를 분류해야 할것이다. 이게 바로 MIB이다.

MIB는 Man In Black의 줄임말이 아니다. Management Information Base의 줄임말인데, 관리되어야할 자원 객체의 분류된 정보를 말한다. 관리되어야할 객체는 시스템정보, 네트워크사용량, 네트워크 인터페이스정보 등이 된다.

이 MIB객체들은 관리하기 편하도록 Tree구조를 가지게 된다. 다음은 MIB의 일반적인 구조이다.

그림 2. MIB계층 구조

MIB는 위에서 처럼 계층적인(디렉토리) 구조를 가지게 된다(위의 그림은 MIB를 설명하기 위해 일부만을 표시하고 있다). 예를들어서 agent가 설치되어 있는 시스템으로 부터 시스템부가정보(sysDescr)를 얻어오길 원한다면 ISO.org.dod.internet.mgmt.mib-2.system.sysDescr과 같은 식으로 manger에서 데이타를 요청하면 된다.

위의 MIB계층 구조를 보면 각 MIB옆에 숫자가 있는것을 볼수 있다. 이 숫자가 OID번호이다. 즉 sysDescr의 OID값은 1.3.6.1.1.2.1.1.1 이 될것이다. OID번호를 이용하는 이유는 MIB고유 문자열을 통해서 원하는 데이타를 가져오기위해서는 아무래도 요청이 길어질수가 있기 때문이다.

MIB는 IANA(Internet Assigned Number Authority)라는 단체에서 관리하며 표준적으로 사용되고 있다. 그럼으로 표준적인 MIB구현을 위해서는 IANA에서 OID를 부여받아야만 한다. 그래야 전체네트워크상에서 다른 여러가지 MIB와 중복되지 않고 사용이 가능할것이다.

작은 정보: cisco과 같은 대중적인(거의 표준이나 마찬가지인) 제품들은 모두 자체적인 MIB를 구현해서 IANA에 등록하여 사용하고 있다. 여러분이 cisco 라우터등의 SNMP정보를 접근할수 있다면 cisco MIB가 등록되어 있음을 확인할수 있을것이다. 확인하는 방법은 다음 강좌에서 따로 언급하도록 하겠다.

MIB는 계층적 구조를 가짐으로 필요에 따라서 확장해서 사용이 가능하며, (물론 프로그래밍 능력이 있어야 하지만)때에 따라서는 자체 회사내에서만 사용가능하거나 제한된 네트워크 영역의 네트워크상황을 관제하는 제품을 위한 MIB를 추가해야 하는경우가 생길수 있을것이다. 그래서 사설로 MIB를 만들어서 사용할수 있는 여지를 남겨두었다. (마치 독립된 지역네트워크를 위해 사설IP를 사용하는 것처럼) 이러한 사설 MIB는 private(4)의 enterprises(1)에 정의해서 사용할수 있다. 여러분이 그리 대중적이지 않은 그래서 IANA에 등록되지 않은 어떤 장비의 고유 SNMP정보를 얻어오고 싶다면 업체에 문의하거나, 메뉴얼을 확인하는 정도로 쉽게 SNMP정보를 얻어올수 있다.

현재 MIB는 버젼 2까지나와 있으며, 버젼의 구분을 위해서 MIB-1, MIB-2로 부르고 있다. MIB-2는 MIB-1의 확장판으로 MIB-1의 모든 객체를 포함하여 약 171개의 객체들을 더 포함하고 있다. 최근의 제품들은 대부분 MIB-2를 지원하고 있다. 물론 위에서 말했듯이 독자적인 MIB를 만들어서 사용할수 있으며, 이를 확장 MIB라고 부른다.


2.5절. SNMP 프로토콜의 동작과 구성

현재 SNMP는 버전 3가지 나와있는 상태이지만 아직까지는 버젼2가 가장 널리 사용 되고 있다. 필자역시 SNMP 버젼 2에 대한 경험이 많은 관계로 버젼2를 기준으로 설명하도록 하겠다.

SNMP는 기본적으로 네트워크 정보를 수집하는데 그 목적이 있는데, 수집하는 몇가지 각각 다른 방법이 있다. 일반적으로 생각해서 우리가 생활중에 얻게 되는 정보는 우리가 요구해서 발생하는 정보와(신문을 구입한다든지, 인터넷으로 서핑을 하는등) 뉴스속보와 같은 형식으로 중요한 일이 있을때 발생하는 정보가 있을것이다. 또한 단지 정보를 얻는데 그치지 않고 정보를 입력하기도 한다.

SNMP정보수집역시 기본적으로 위의 일상생활에서의 정보수집과 같은 방식으로 이루어진다. 이하 snmp manager은 manager로 snmp agent는 agent로 부르도록 한다.

GET

manager에서 agent로 특정 정보를 요청하기 위해서 사용한다.

GET NEXT

기본적으로는 GET과 같은일을 한다. 그러나 SNMP에서 각정보들은 계층적 구조로 관리된다. 위의 MIB계층 구조를 나타낸 이미지에서 우리는 system(1)계층밑에 있는 모든 정보를 가져오고 싶을 때가 있을것이다. 그럴경우 GET NEXT를 사용할수 있다.

SET

manager에서 agent로 특정 값을 설정하기 위해서 사용한다.

TRAP

agent에서 통보해야될 어떤 정보가 발생했을때(임계치를 넘는네트워크자원 사용등) manager에게 해당 상황을 알리기 위해서 사용한다. 위의 다른 요청들이 동기적 요청이라면 이것은 비동기적 사건을 알리기 위해서 사용되어진다.

SNMP프로토콜은 기본적으로 어떤 정보를 요청하는 메시지와 이에 대한 응답메시지로 이루어지며 다음과 같은 구조를 가지고 있다.

표 1. SNMP 메시지

VersionCommunity nameSNMP PDU
Version은 말이 필요없다. SNMP프로토콜의 버젼번호를 나타낸다. Community name은 메니저와 에이전트간의 관계를 나타내는데, 인증, 접근통제등의 목적으로 사용된다. 보통은 간단하게 public을 사용한다. PDU 는 Physical Data Unit의 줄임말인데, 실제 전송되는 필요한 정보들을 담고 있는 Unit이다. Unit 이라고 하는 이유는 실제 전송되는 정보들의 부가 속성을 나타내기 위한 몇가지 값들을 포함하고 있기 때문이다. PDU는 PDU 타입(GET인지 Set인지 GET Next인지, TRAP인지등)과, Request-id, 실제보내고자 하는 데이타등(OID와 OID에 대한 값들)으로 구성되어 있다.

SNMP를 통해서 전달되는 메시지들은 기본적으로 UDP를 이용하게 된다. 바로위에서 PDU는 Request-id를 포함하고 있다고 했는데, 데이타그램처리방식인 UDP의 단점을 극복하기 위해서 사용되는 값으로, 각 메시지의 요청번호를 표시한다. 그래야만 수신된 SNMP메시지가 어떤 요청에 대해서 수신된 메시지인지 확인이 가능할것이기 때문이다.


3절. SNMP 설치 및 운용

그럼 실제로 시스템에 SNMP(agent와 manager 애플리케이션)을 설치해서 정보를 가져오는걸 간단히 테스트 해보도록 하겠다.

설치는 Linux(Kernel-2.4.x)에서 ucd-snmp로 할것이다. 위에서 설명했듯이, SNMP는 manager과 agent로 운영되게 되는데, 테스트의 편의를 위해서 하나의 시스템(localhost)에서 manager와 agent를 운용하도록 하겠다.


3.1절. ucd-snmp 설치

ucd-snmp는 net-snmp.sourceforge.net에서 얻을수 있으며 애플리케이션 관련 정보들도 얻을수 있다. ucd-snmp는 현재 버젼 5.x대까지 진행되어 있는데, 5.x부터는 net-snmp로 이름을 바꾸고 개발되어지고 있으며, 4.x버젼까지를 ucd-snmp라고 부르고 있다. 필자는 익숙한 ucd-snmp(버젼 4.x)를 설치하도록 할것이다. 비록 net-snmp가 최신이긴 하지만 별로 다루어본적이 없고, 대부분의 경우 아직까지는 ucd-snmp가 많이 사용되어지고 있기 때문이다. 최신이 아니라고 불만을 가질 필요는 없다. 근본적으로 net-snmp와 ucd-snmp간의 차이는 없으며, 우리의 목적은 최신의 snmp애플리케이션을 테스트하는게 아닌 snmp의 기능과 원리를 이해하고 이를 이용해서 필요한 응용 애플리케이션을 작성하는 것이기 때문이다.

위의 URL에서 ucd-snmp를 다운받아서 압축을 풀고 컴파일 하도록 하자. 컴파일 하는중에는 아마도 아무런 문제가 없을것이다. 컴파일은 매우 일반적인 방법을 따른다. 적당한 디렉토리에 압축을 풀고 ./configure, make, make install 하면된다. 헤에... 너무 간단하지 않은가 ?


3.2절. SNMP AGENT 실행

make install 까지 했다면 agent와 manager프로그램이 모두 설치되어 있을 것이다. 그리고 여기에 더불어 개발자를 위한 각종 라이브러리와 헤더파일들도 설치된다. 이 라이브러리와 헤더파일들은 개발할때 필요하며 다음 강좌에서 다루게 될것이다.

ucd-snmp는 agent 프로그램으로 snmpd를 제공한다. agent환경을 제대로 만들려면 복잡해보이는(사실은 그리 복잡하다고 볼수없는) 설정파일을 만들어줘야 하지만 이것은 각자의 몫이다. net-snmp프로젝트 홈페이지에서 제공하는 메뉴얼을 참고하기 바란다. 어쨋든 현재로써는 단지 snmpd를 띄우는 정도로 snmp agent환경을 만들수 있다.

[root@localhost root]# snmpd 
이것으로 snmp를 테스트할 최소한의 agent환경이 구축되었다.


3.3절. SNMP MANAGER 테스트

3.3.1절. 동기적인 데이타 요청 - snmp get, get next

GETGET NEXT는 동기적인 정보요청을 위해서 사용한다. manager에서 agent에 대해서 정보를 요청했을때 해당 정보를 agent에서 보내주는 방식이다. GET은 단일정보요청을 위해서 사용하며, GET NEXT는 해당 계층의 하위에 있는 모든 정보의 요청을 위해서 사용된다.

ucd-snmp는 이러한 정보요청을 위한 manager프로그램으로 snmpgetsnmpnext, snmpwalk를 제공한다.

snmpget은 이름에서 알수 있듯이 agent로부터 특정한 정보를 얻어내기 위해서 사용한다. 정보를 얻기 위해 필요한 기본정보는 agent가 설치되어 있는 서버의 주소(혹은 이름) 와 커뮤니티(권한을 위한)이름 그리고 얻기 원하는 정보의 OID번호 혹은 MIB의 계층이름이다. 예를들어서 localhost로부터 public권한을 가지고 sysDescr(시스템 부가정보)정보를 얻어오고 싶다면 아래와 같이 하면 된다.

 [root@localhost /root]# snmpget localhost public system.sysDescr.0 system.sysDescr.0 = Linux localhost 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 
혹은 MIB이름대신에 OID번호를 사용해도 된다.
 [root@localhost /root]# snmpget localhost public 1.1.0 system.sysDescr.0 = Linux localhost 2.4.2-2 #1 Sun Apr 8 20:41:30 EDT 2001 i686 

snmpwalk는 해당 MIB의 하위계층에 있는 모든 정보를 요청한다. 예를들어 system MIB의 하위 계층에 있는 모든 OID에 대한 정보를 요청하길 원한다면 아래와 같이 하면된다. 이게 가능한 이유는 snmpwalk가 정보를 요청하기 위해서 snmp메시지를 만들때 PDU타입을 GET NEXT를 사용하기 때문이다. 나중에 직접구현하게 될것이다. 지금은 구현에 신경쓰지 말자. system하위의 모든 OID에 대한 정보를 얻어오고 있음을 확인할수 있다.

snmpgetnext는 snmpwalk의 기능 축소판정도로 볼수 있을것이다. 즉 MIB계층구조에서 현재 요청한 OID의 다음 OID의 정보를 가져온다. 예르들어 system.sysDescr.0에 대한 정보를 요청하면 다음 OID인 system.sysObjectID.0의 정보를 요청하게 될것이다. 이게 가능한 이유는 snmpwalk와 마찬가지로 내부적으로 GET NEXT를 이용하고 있기 때문이다. snmpwalk가 더이상 얻을수 없을때까지 OID를 요청하는것과 달리 snmpgetnext 바로다음의 OID만을 요청한다.


3.3.2절. 비동기적인 데이타 요청 - snmp trap

기본적으로 GET, GET NEXT를 통한 데이타요청은 일정한 polling시간을 가지고 manager에서 agent로 필요한 정보를 요청하는 방식이다. 그러나 이걸 이용해서는 비동기적으로 발생하는 정보를 수집할수가 없다.

이러한 비동기적인 정보는 여러가지가 될수 있다. 예를들면 특정 네트워크 세그먼트에 문제가 생겼다거나 디스크나 메모리용량을 과다하게 사용하고 있다거나(많은 운영체제의 경우 시스템정보까지도 snmp를 통해서 얻을수 있도록 허용하고 있다)하는 사건들은 비동기적으로 발생할것이다. 이럴경우에는 agent에서 manager측으로 사건을 통보해야 할것이다. 이렇게 agent에서 manager측으로 비동기적으로 사건을 통보하는 것을 SNMP TRAP라고 한다(간단히 말해서 경고메시지 보내는거다).

ucd-snmp에서는 이러한 trap정보를 전송하고 받기 위해서 snmptrapdsnmptrap를 제공한다. snmptrapd는 agent에 제공되는 데몬프로그램으로 manager에서의 trap데이타 발생을 기다린다. snmptrap는 agent에 설치되어서 사용될수 있으며 trap데이타를 manager로 전송하는 일을한다.

이 snmptrap은 꽤 유용하게 사용할수 있다. 간단하게 스크립트로 만들어서 어떤 파일이 변조되었을경우 trap정보를 manager쪽으로 발생시킨다거나, 프로세스 갯수가 일정갯수 이상 초과했을때 이를 전송한다든지 하는 기능을 비교적 간단하게 추가시킬수 있을것이다.

다음은 ucd-snmp에서 제공하는 trap애플리케이션을 이용한 간단한 테스트이다. 먼저 snmptrapd를 manager측에서 실행시켜야 한다. 이 애플리케이션은 옵션없이 실행할경우 데몬모드로 실행되며 표준출력을 시키지 않음으로 다음과 같이 옵션을 주고 실행시켜서 일반모드(forground)에서 받은 trap정보를 표준출력하도록 실행시키도록 하자.

[root@localhost root]# snmptrapd -f -P 2003-04-23 00:13:34 UCD-snmp version 4.2.6 Started. 
이제 agent측에서 snmptrap를 이용해서 trap정보를 manager로 전송해보도록 하자.
[root@localhost root]# snmptrap -v 2c -c public localhost "" ucdStart sysContact.0 s "yundream" 
그러면 manager로 system.sysContact.0="yundream" 과 같은 정보가 전달되는걸 확인할수 있을것이다.

이들 ucd-snmp에서 제공하는 애플리케이션들의 자세한 사용법은 메뉴얼 페이지를 참고하기 바란다.


4절. 결론

이상 SNMP의 개념과 개념의 이해를 위해서 실제 사용되는 snmp애플리케이션을 설치해서 간단히 운영테스트까지 해보았다. 이러한 운영테스트를 위해서 ucd-snmp를 사용했는데, 다음 강좌는 ucd-snmp에서 제공하는 snmplib를 통해서 snmp애플리케이션을 만드는 법을 다루도록 하겠다.

Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 12:11
출처 블로그 > bestkr00님의 블로그
원본 http://blog.naver.com/bestkr00/40012093656
이더리얼은 이와 달리 다양한 기능을 제공하지만 누구나 쉽게 접근할 수 있는 공개용 툴이다. 대부분 윈도우에서 이더리얼을 사용하지만 이더리얼은 원래 리눅스용으로 사용되던 툴이다.

리눅스를 많이 사용하는 사람들은 ‘tcpdump’라는 패킷 덤프 툴에 익숙할 것이다. tcpdump 가 명령어 창에서 패킷의 헤더를 본다면 이더리얼은 GUI 형태에서 프로토콜 포맷을 구분한다. (화면 1)은 똑같은 핑(ping) 패킷을 리눅스는 tcpdump로, 윈도우에서는 이더리얼로 캡처한 것이다. 물론 리눅스용 이더리얼을 사용하면 GUI 형태로 볼 수도 있다.

(화면 1) tcpdump와 이더리얼로 핑 패킷 캡처한 비교 화면. 리눅스의 tcpdump(좌)와 윈도우의 이더리얼(우)

(화면 2) 일반적인 핑 테스트 화면

(화면 2)는 일반적으로 많이 사용하는 간단한 핑 테스트의 결과 화면이다. 이를 보고 우리는 ‘아, 정상적으로 응답이 됐구나’라고 생각할 것이다. 그렇다면 패킷이 실제로 오가는 모습을 보지도 않은 우리가 그와 같이 판단하는 근거는 무엇인가. 그것은 오로지 핑 프로그램의 결과에만 의존해 정상적으로 동작했다고 판단했을 뿐이다.

하지만 패킷 분석기는 다르다. 단순히 결과를 보고 추측하는 것이 아니라 실제 네트워크 를 지나다니는 패킷들을 살펴보고, 분석할 수 있도록 한다. 핑 요청(ping Request)이 가고, 핑 응답(ping Reply)이 되돌아오는 과정을 직접 확인할 수 있는 것이다.

만약에 ‘Request timeout’이 되면 그냥 상대방 컴퓨터가 죽었기 때문이 아니라 왜 그랬는지를 파악해야만 한다. 패킷 분석기는 ‘내 컴퓨터가 못 보냈는지’ 아니면 ‘나는 보냈는데 상대 컴퓨터에서 응답이 안 온것인지’ ‘못 보냈다면 왜 못보냈는지’ 등을 파악하는데 도움을 준다.

이더리얼은 MRTG와 마찬가지로 리눅스, 솔라리스, HP-UX, FreeBSD, 윈도우, 매킨토시 등 다양한 운영체제를 지원한다. 이번 기고에서는 일반적으로 가장 많이 사용하는 윈도우 기반의 이더리얼에 대해서만 소개하도록 한다.

이더리얼은 공식 홈페이지(www.ethereal.com)에서 다운로드 받을 수 있다. 단, 주의할 점은 이더리얼 설치 전에 윈도우에서 패킷을 캡처해 주는 툴인 WinPcap를 먼저 설치해야 한다는 점이다(참고로 리눅스에서는 libpcap가 그 역할을 한다).

알다시피 운영체제의 NIC들은 자신의 인터페이스로 들어오는 패킷 중 목적지 하드웨어 어드레스가 자신이 아닐 경우는 상위로 올려보내지 않고 버리게 돼 있다. 그래서 이런 패킷들을 모두 애플리케이션단까지 올리려면 별도의 툴을 설치해야 한다. 그것이 바로 WinPcap다. WinPcap는 해당 홈페이지(http://winpcap.polito.it)에서 다운로드 받을 수 있다.

WinPcap와 윈도우용 이더리얼은 모두 윈도우용 실행 파일이므로 설치 과정은 쉽다. WinPcap는 설치가 모두 되고 나면 이더리얼에서 캡처를 하는 동안에만 사용하게 되므로 신경쓰지 않아도 된다.


캡처 옵션 사용 방법
자, 이제 이더리얼 설치가 끝났다면 (화면 3)처럼 [시작] → [프로그램] → [Ethereal] → [Ethereal]을 실행시켜보자. 누구라도 어떤 새로운 프로그램을 실행할 때 이 단계까지는 막힘없이 진행할 수 있다. 하지만 그러고 나서는? 그 다음에는 ‘이제 뭘 해야 하지’라고 고민할 것이다.

하지만 이더리얼은 고민할 필요가 없다. 왜냐하면 이더리얼은 패킷을 캡처하고 분석하는 프로그램이므로, 화면 상단에 있는 여러 메뉴 중에서 가장 적합한 의미를 지닌 ‘Capture’라는 메뉴를 바로 찾을 수 있기 때문이다. 'Capture'를 실행하면 (화면 4)와 같은 화면을 볼 수 있다. 여기서 몇 가지 옵션만 설정하고 나면 실제 이더리얼의 90%는 사용했다고 볼 수 있다.
(화면 3) 이더리얼 실행 화면

(화면 4) 필자가 자주 사용하는 캡처 옵션

(화면 4)의 옵션은 특별히 설명할 필요도 없이 간단하다. 가장 먼저 LAN 카드의 종류를 선택하도록 돼 있다. 참고로 화면상에 보이는 필자의 노트북은 Realtek의 8139 칩을 사용하는 LAN 카드가 장착돼 있다.

다음으로 필터링 옵션이 있는데, 이 부분은 옵션 사용 방법을 조금 알아야 한다. 아무것도 넣지 않으면 모든 패킷이 다 캡처돼 출력되기 때문에 원하는 패킷만을 볼 수 없다. 필터 방법에 대해서는 다시 설명하도록 하겠다.

다음으로 ‘파일(File)’ 옵션은 캡처된 파일을 별도의 파일로 저장할 수 있도록 한다. 이 기능을 이용하면 저장했다가 나중에 필요할 때 불러서 다시 사용할 수 있다.

‘화면 옵션(Display Option)’은 캡처된 파일을 실시간으로 보여줄 것인지 아니면 캡처가 끝난 다음에 보여줄 것인지를 결정한다. ‘화면 옵션’은 장단점이 있다. 실시간으로 보게 될 경우 즉각적으로 패킷들을 볼 수 있는 반면, 패킷이 많을 때는 프로그램 구동에 부하를 줄 수도 있다. 하지만 일반적인 네트워크에서는 부하 정도까지는 아니어서 필자의 경우 실시간으로 보여주기 옵션을 주로 이용한다.

‘캡처 제한’ 옵션은 숫자, 시간, 사이즈에 따라 선택할 수 있도록 돼 있으며, ‘이름 해석(name resolution)’ 부분은 패킷을 분석할 때 나타나는 하드웨어 어드레스, IP 어드레스, 포트 번호에 대해서 이름 해석을 할지를 묻는 메뉴이다.
예를 들면 어떤 패킷의 하드웨어 어드레스가 00-06-C4-11-22-33이라면, 이 하드웨어는 필자가 근무하는 ‘파이오링크’의 고유 MAC 어드레스에 속한다. 이때 어드레스 해석 기능을 사용하면 48비트 주소로 보이는게 아니라 piolink_11-22-33이라고 표시된다. TCP 포트 23번의 경우 텔넷(Telnet) 이라고 표시된다. 이 옵션은 자칫하면 캡처된 파일을 보여주는 과정에서 부하를 일으킬 수도 있으니 모든 것을 사용하는 것은 금물이다. 자 여기까지 선택이 끝났다면 그 다음은 ‘OK’를 누르면 된다.

(화면 5) 이더리얼로 캡처된 결과

(화면 5)는 기본 옵션으로 캡처한 결과다. 패킷 덤프된 결과는 크게 3개의 화면에 나타난다. (화면 5)의 맨 윗줄은 순차적으로 캡처된 패킷들의 내용이고, 가운데 창은 첫번째 창에서 선택된 패킷을 사용자가 알아볼 수 있도록 계층 구조로 표현한 내용이다. 마지막으로 맨 아랫줄은 선택된 패킷의 실제 내용으로, 16진수로 구성돼 있다. 16진수로 표시된 부분의 옆을 자세히 보면 사람이 식별할 수 있는 문자가 나와 있긴 하지만 가독성 측면에서 그리 좋지는 않다. 하지만 사용자가 어떤 웹 사이트에 ID와 암호를 넣을 경우 바로 이 부분에 해당 내용이 표시된다(꼭 한번 테스트 해 보자).

실제로 필자가 가장 많이 테스트해 보는 부분은 첫번째와 두번째의 계층 형태로 구분된 부분이다. 이 같이 계층 구조로 표현이 가능한 것은 이더리얼이 해당 프로토콜을 분석할 수 있기 때문이다. 실제 이더리얼 홈페이지에서 확인해 보니 ‘422개의 하위부터 상위계층까지의 다양한 프로토콜을 지원한다’라고 설명돼 있었다. 이 정도라면 어떤 네트워크에서든지 이더리얼을 사용할 수 있을 것이다.


/Tip! Tip! Tip!/  /
대부분의 패킷 분석기는 캡처를 하고 난 후 새로 패킷 캡처를 하면 이전에 캡처한 내용을 그냥 버리는데, 필자는 중요한 패턴이나 특이한 패턴이 있으면 저장하는 습성이 있다. 왜냐하면 자연 상태에서 만들어진 패킷들은 다시 가공해서 만들기가 힘들기 때문이다. 그래서 다른 캡처를 하기 전에 바로 메뉴바에서 ‘File - Save’를 구동시킨다. 그렇게 하면 나중에 다시 필요할 때 재확인할 수 있다. 재확인 하려면 ‘File - Open’을 구동해 저장된 파일을 선택하면 된다.
/
/
이더리얼의 필터링 기능 활용하기
이더리얼은 리눅스의 Tcpdump와 맥락을 같이 한다. 그래서 이더리얼에서 사용하는 필터링 방법은 Tcpdump만 제대로 활용할 수 있다면 보다 쉽게 접근할 수 있다. 앞에서도 잠깐 언급했지만 이더리얼을 아무런 필터링 옵션 없이 사용한다는 것은 그리 유쾌한 일은 아니다. 왜냐하면 네트워크에는 사용자가 원하는 패킷들만 지나다니는게 아니라 아주 다양한 패킷들이 오가고 있기 때문이다. 사실 이더리얼과 같은 패킷 분석기를 실행하고 나면 보고 싶은 패킷보다 그렇지 않은 패킷들을 더 많이 만나게 될 것이다. 이제부터 필터링 설정 방법에 대해 자세히 알아보자.

패킷 필터링은 ‘File-Capture’를 누르고 나면 나타나는 캡처 옵션 중 필터(Filter)에 입력하는 부분을 말한다. 이 외에도 캡처된 내용들이 화면에 뿌려질 때 사용되는 디스플레이 필터(Display Filter)가 있는데 이 부분에 대한 설명은 뒤에서 다시 하겠다. 필터에서 사용 가능한 옵션으로는 and/or/not, ‘host/net, src/dst, tcp/udp/icmp,, less/greater, ip/ether proto, ether/ip broadcast/multicast 등이 있다.

이제부터 www.nemaum.net이라는 사이트를 모델로, 실제 필터를 구동해 캡처된 패킷을 살펴보도록 하자. www.nemaum.net는 도메인을 사용했으므로 DNS가 사용될 것이다. DNS는 보통 UDP 53을 사용하는데, 예제를 든 것은 웹사이트이니 TCP 80을 사용한다. 또한 외부로 통신하기 위해 자신의 게이트웨이의 ARP 요청을 할 수도 있다. 이 경우는 (화면 6)과 같은 필터 방법을 사용할 수 있다. 이 부분은 쉽게 이해할 수 있을 것이다. 왜냐하면 위에 나열된 포트들은 이미 독자들도 이전부터 사용해 왔던 포트들일 것이니 말이다.


/Tip! Tip! Tip!/  /
만약에 ‘or’를 사용하지 않고 ‘and’ 연산을 사용했다면 어떻게 될까? 이더리얼은 실제 캡처를 시작하기 전에 필터 옵션의 문법에 맞는지를 판단한다. ‘and’를 사용할 경우 에러가 나게 된다. 왜냐하면 port 53 and arp인 패킷은 존재할 수 없기 때문이다.
/
/
(화면 6)의 오른쪽에는 실제 DNS 요청과 ARP 요청, TCP 80인 HTTP 패킷들만 보이므로 전체적인 통신을 짐작할 수가 있다. (화면 7)은 전체 패킷 중 192.168.0.0/24에 해당하는 네트워크 패킷만 원할 경우의 필터 룰이다. 이 필터는 출발지와 목적지 구분이 없는 상태이다. 만약에 사용자가 출발지 192.168.0.0/24 네트워크에 해당하는 패킷만 수집하고 싶을 경우는 ‘src net 192.168.0.0/24’로 설정하면 된다. 필터를 잘 사용하려면 원하는 필터링 옵션들을 잘 조합하는 것이 우선이다. 만약 특정 프로토콜만 캡처하고 싶다면 프로토콜 명을 사용해 필터를 적용하면 된다.

(화면 8)의 필터 옵션은 arp이거나 icmp인 패킷을 캡처하는데 사용됐다. 실제 캡처된 내용에도 arp와 icmp들만 캡처된 것을 볼 수 있다.

다음은 조금 더 세밀하게 특정 사이즈를 가진 패킷을 얻고 싶을 때 사용하는 필터에 대해 알아보자. 이런 패턴의 경우, 실제로 많이 사용하지는 않지만 최근에 발생한 ‘Welchia’ 라고 불리는 웜 바이러스가 ‘92바이트’의 사이즈를 가진 데이터를 네트워크에 있는 수많은 장비들로 보내 응답이 되돌아오면 다음 공격을 시도한다. 사실 어제 필자의 사무실 네트워크도 상당히 느려졌는데 바로 이런류의 패킷이 있었다.

/Tip! Tip! Tip!/  /
필터 적용시 종종 사용하는 옵션 중 하나는 바로 ‘not’이다. 이 옵션은 말 그대로 어떤 특정 패킷들은 너무도 당연해서 볼 필요가 없을 경우에 이들을 제외한 나머지 패킷을 보고자 할 때 사용하는 옵션이다.
/
/
그런데 우리가 앞에서 알아봤던 단순한 프로토콜 필터링 만으로는 이런 패킷만을 찾기가 쉽지 않다. 그래서 이번에는 특정 사이즈를 기준으로 필터를 사용해 보는 방법을 익혀보자.

(화면 9)의 필터는 icmp이면서 IP인 패턴인데, IP 뒤에 [2:2]라는 특이한 옵션이 붙었다. 이것은 IP 헤더 중에 전체 길이를 나타내는 필드의 위치를 표시한다. 2는 16비트로 실제 전체 길이를 나타내는 위치이다. 다음으로 나오는 2는 전체길이를 16비트라는 값에 나타내게끔 돼 있어 [2:2]가 된다. 잘 이해가 안된다면 IP 헤더의 포맷에 대해 소개한 책이나 글을 다시 보도록 하자. (화면 10)을 보면 목적지 어드레스가 계속 하나씩 증가하고 있다. 이렇게 수도 없이 핑을 날려버리기 때문에 네트워크 전체가 마비되는 경우가 종종 있다.

다음은 디스플레이에서 사용할 수 있는 필터에 대해 알아보도록 하자. ‘Display Filter’는 이미 다양한 옵션을 사용해 캡처된 파일 중, 다시 화면에 뿌려지는 내용에 필터를 걸고 싶을 때 사용한다. 여기서 사용할 수 있는 필터가 한가지 더 있는데 ‘Color Filter’가 그것이다. 이 기능을 이용하면 실제 특정 패턴의 경우 화면에 색깔을 다르게 표시할 수 있기 때문에 가독성이 좋아진다.

(화면 9) 필터 4. icmp and ip[2:2] = 92

(화면 10) 실제 사이트에서의 Welchia 웜 바이러스

이들 필터 옵션은 기본적으로 캡처할 때 사용했던 필터 옵션들에 추가적으로 사용할 수 있다. 필자의 경우는 애플리케이션 계층에 있는 컨텐츠를 확인할 때 종종 사용한다.

(화면 11)은 예전에 한창 유행했던 코드레드, 님다 웜 바이러스를 ‘Coloer Filter’를 통해 화면상에서 눈에 확 띄도록 표시한 것이다. (화면 11)의 왼쪽 그림은 Color Filter에 추가된 내용을 보여준다. 필자가 사용한 필터는 ‘tcp contains default.ida’ 와 ‘http contains cmd.exe’ 이다. default.ida는 코드레드 유형에서 사용되는 전형적인 패턴이고, cmd.exe는 님다에서 주로 사용한다. 이들을 각각 빨간색과 파란색 배경으로 나타나게 했다. (화면 11)의 오른쪽 화면은 실제 각각의 패턴이 일치했을 때 나타나게 된다. 이더리얼을 이런 방법에 응용하면 아주 유용할 것이다.

(화면 11) Color Filter를 이용해 웜 바이러스 패턴 보기


이더리얼로 네트워크 문제 파악하기
인터넷이 안될 때 가장 먼저 어디에 원인이 있다고 생각하는가. 흔히들 인터넷이 안되면 제일 먼저 상대방 서버가 다운됐거나, 자신이 사용하는 네트워크에 문제가 생겼거나, 라우터에 문제가 생겼다고 짐작할 수도 있다. 하지만 네트워크 관리자라면 짐작 수준에서 그칠 수는 없는 노릇. 지금부터 이더리얼을 이용해 네트워크에 어떤 문제가 발생하고 있는지 알아보도록 하자.

․핑(ping)이 안될 때
내 네트워크에 있는 192.168.0.100이라는 컴퓨터의 생존(?) 여부를 확인하기 위해 핑을 했는데 응답이 없었다(화면 12). 대부분 핑은 ‘ICMP Echo Request’를 날려서 응답을 받는 프로그램이기 때문에 ‘Echo Reply’가 오지 왔기 때문이라고 생각하기 쉽다. 그렇지만 아닐 수도 있다.

(화면 12) 192.168.0.100으로 핑이 안될 때 화면

(화면 13) ICMP 요청이 아니라 ARP 요청에 대한 응답을 못 받고 있는 경우

(화면 13)을 보면 192.168.0.4라는 필자의 컴퓨터는 192.168.0.100에게 ‘ICMP Echo Request’ 조차 보내지 못했음을 알 수 있다. 다만 필자의 컴퓨터는 192.168.0.100의 MAC 어드레스를 얻기 위해 ARP 요청만 반복하고 있을 뿐이다. 대부분 이더넷에서 통신을 하기 위해서는 IP에 대한 ARP 요청을 한다고 생각하지만, 핑에 대한 응답이 오지 않을 때 그렇게 생각하기 보다는 이미 ‘Request’ 됐다고 생각하는 경우가 많다.

․웹 페이지가 안 열릴 때
(화면 14)는 필자의 개인 홈페이지(www.nemaum.net)에 요청을 했는데 응답이 없는 경우다. 이때 웹 서버가 죽은것이 아닐까라고 판단할 수 있지만 방심은 금물이다. (화면 15)에서 이더리얼을 구동시킨 결과를 한번 보자. 필자의 컴퓨터 IP 어드레스 설정시 존재하지 않는 잘못된 DNS 서버들을 입력해 놓았음을 알 수 있다. 즉, www.nemaum.net에 대한 요청을 했을 때 컴퓨터는 우선 이름 풀이를 하고자 설정된 DNS 서버에 요청을 했지만 존재하지 않는 서버들은 응답을 하지 않았다. 결국 웹 서버가 죽은 것이 아니라 DNS의 오류로 접속하지 못했다는 것을 알 수 있다. 네트워크에 문제가 발생했을 때 어림짐작으로 문제의 원인을 추측하는 일은 금물이다. 이더리얼은 그런 측면에서 많은 도움을 준다.


스위치 미러링으로 네트워크 전체 오가는 패킷 캡처하기
이더리얼을 설치한 컴퓨터에서 나오고 들어가는 패킷만 잡으려면 이번 기고는 여기서 끝내면 된다. 하지만 실제 운영되고 있는 네트워크에서 문제를 찾기 위해서는 네트워크 전체를 지나다니는 패킷을 캡처할 수 있어야 한다. 흔히 초보자들이 패킷 분석기를 들고 네트워크 문제를 해결한다는 열정만으로, 문제가 생긴 네트워크에 있는 스위치에 모니터링 장비를 과감히 꽂아 놓고 한참을 들여다 보는 경우가 있는데 패킷 분석기들은 자신에게 온 패킷들만 수집하게 돼 있다.

잘 알다시피 네트워크 스위치들은 ‘MAC Learning’이라는 기능이 있어 각 포트들에 어떤 컴퓨터들이 연결돼 있는지를 알 수 있다. 그래서 목적지 어드레스가 자신이 아닌 모든 패킷을 받을 수가 없다. 이 사실은 반드시 기억하자. 그래서 가장 많이 사용하는 방법이 (그림 2)와 같이 네트워크에 있는 스위치에서 미러링을 하는 것이다.

(그림 2) 스위치의 미러링 기능을 이용한 모니터링

물론 이 방법은 스위치가 이런 기능을 제공해야 가능하다(어느 정도의 스위치들은 대부분 미러링 기능을 제공한다). 한 가지 더 중요한 사실은 미러링을 하고 나면 대부분의 스위치들의 해당 포트(모니터링 장비가 연결된 포트)는 네트워크에 연결될 수 없다는 사실이다. 이런 연결을 할 때 주의할 점은 트래픽이 굉장히 많은 곳에서 모든 패킷이 포워딩될 경우 스위치는 둘째치고 모니터링 장비의 성능에 문제가 있을 수 있다. 네트워크를 설계한다면 이런 점도 고려하기 바란다.

탭과 허브 이용해 모니터링 구현하기
다음으로 최근 많이 사용하는 방법 중 하나인 탭(Tap)이라는 장비를 중간에 두는 것이다.이 장비는 (그림 3)처럼 생겼고 모니터링하고 싶은 지점의 중간에 둬 실제로 지나가는 모든 패킷을 모니터링 장비로 보내주는 역할을 한다. 탭 영업을 하는 사람들은 스위치들은 미러링을 하면서 성능 저하가 많이 일어나기 때문에 탭을 써야 하며, 탭이 패킷 손실을 막아주기도 한다고 설명한다. 실제로 최근 금융권 같이 네트워크에 상당히 민감한 곳에서는 이런 장비를 많이 사용하고 있다.

(그림 3) Tap를 이용한 모니터링

(그림 4)는 허브를 이용한 모니터링을 구현하는 방식이다. 허브는 입력된 모든 패킷을 자신이 갖고 있는 모든 포트로 내보내면서 동작을 한다. 그래서 별도의 옵션 없이도 모니터링 장비로 패킷을 보낼 수 있다. 그렇지만 허브는 구석기 시대 장비로, 포트 네고시에이션(Port Negotiation)이나 성능에 문제를 야기시킬 수도 있다. 개인적으로는 그리 추천하고 싶은 방법은 아니다. 하지만 정말로 다른 장비를 준비하기가 힘들다면 트래픽이 몇 Mbps 수준인 작은 네트워크에서는 대체용으로 사용하는 것은 가능하다.

(그림 4) 허브를 이용한 모니터링 구현


본문에서 미처 다 소개하지 못했지만 이더리얼은 스니퍼나 리눅스의 tcpdump에서 캡처된 파일을 가져다 읽는 기능도 제공한다. 공개용 툴이고 아직 사용자 인터페이스가 많이 부족한 것이 단점이지만, 개인적으로 이더리얼은 아주 쓸만한 툴이라고 생각한다. 혹시 주위에 네트워커를 자칭하면서 네트워크 패킷 하나 확인 못하는 사람이 있다면 자신있게 이더리얼을 추천한다. @

자료출처 : http://blog.naver.com/b2future.do

Reference

Ethereal site : http://www.ethereal.com

WinPcap site : http://winpcap.polito.it

Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 12:09
출처 블로그 > ~~랑쓰 이야기~~
원본 http://blog.naver.com/ilrang77/60002724994

들어가면서

    네트워크를 사용하는 사람이라면 자신의 네트워크의 트래픽이 얼마정도인지 확인해 보고 싶은 생각을 한번쯤은 해 봤을 것이다. 네트워크의 트래픽을 보여주는 유닉스 커맨드들이 있지만 수 많은 옵션들은 금방 초보들의 기를 꺾어 버리고 그 결과조차도 한눈에 파악하기가 쉽지 않다. 상용 Network Management툴들이 있지만 개인 사용자가 이런 고가의 툴들을 구입해서 사용하기는 힘들다. MRTG는 바로 이런 분들을 위한 S/W이다.

    MRTG는 네트워크 링크(대부분의 경우 라우터)의 트래픽을 모니터링하는 툴이다. MRTG는 실시간의 트래픽 정보를 그래프로 보여주는 html 페이지를 생성한다. 그래프는 GIF 화일에 저장되고 이 화일은 사용자가 지정하는 시간만큼의 단위로 리프레쉬된다.

    MRTG의 홈페이지는 http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html이다. 필자의 능력이 부족해서인지 MRTG에 대한 자료는 많이 찾을 수 없었다. 혹시 한글 문서가 있지 않을까 해서 돌아다녀 봤지만 찾을 수가 없었다. 하지만 필요한 대부분의 정보는 MRTG의 홈페이지에서 얻을 수 있다. 이 문서에서는 MRTG 홈페이지의 내용을 기반으로 하여, 이 툴을 설치하고 운영해본 경험을 다루기로 한다.

    더 자세한 정보를 얻기 원한다면 MRTG 메일링 리스트에 가입하라. 가입하는 방법은 다음과 같다. 제목을 subscribe로 하여 mrtg-request@list.ee.ethz.ch나 mrtg-announce-request@list.ee.ethz.ch로 메일을 보내면 된다. 실수 없이 메일을 보냈다면 가입이 되었다는 회신이 올 것이다. 이후에 실제적인 포스팅을 할때에는 mrtg@list.ee.ethz.ch로 메일을 보내면 된다.

    MRTG가 생성하는 그래프의 예를 보려면 http://www.ee.ethz.ch/stats/mrtg에 가보라. MRTG는 Perl과 C로 작성되었으며 UNIX와 Windows NT 환경하에서 작동한다. 현재 많은 사이트에서 네트워크 트래픽을 측정하기 위해 MRTG를 사용하고 있다.  MRTG를 사용하는 사이트들의 리스트가 http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/users.html에 있다. 물론 여기에 기록된 사이트가 다는 아닐 것이다. 필자의 시스템도 여기에 등록되어 있지 않으니까.

    MRTG란?

    MRTG는 SNMP를 사용하여 라우터에서 트래픽 정보를 가져오는 Perl script와, 트래픽 데이타 로그 기능과 네트워크 트래픽 정보를 그래프로 만들어주는 기능을 가지는 C 프로그램으로 구성된다. 이 그래프는 일반적인 웹 브라우져에서 볼 수 있는 html 화일에 넣어진다.
    MRTG는 라우터로부터 받은 모든 데이타의 로그를 유지할 수 있기 때문에, 일간은 물론 주간, 월간, 연간 트래픽 체크가 가능하다. 로그 화일은 자동으로 정리되며, 2년동안의 정보를 유지한다. 효율적인 자료구조를 사용하여 시간이 경과되어도 로그 화일의 크기는 증가하지 않는다. MRTG는 네트워크의 트래픽뿐만이 아니라 어떠한 SNMP 변수에 대해서도 모니터링이 가능하다. 심지어 외부 프로그램이 모니터하려는 데이타를 생성할 수 있기만 하다면, MRTG를 사용하여 실시간 그래프로 모니터링이 가능하다. MRTG의 이런 기능을 사용하여 시스템 부하, 로그인 되어 있는 세션, 모뎀의 가용도등을 체크하는 사람들이 있다. 또한 2개 이상의 데이타 소스를 하나의 그래프로 통합시킬 수도 있다.

    MRTG의 특징

    1. 대부분의 유닉스와 Windows NT 플랫폼에서 작동 가능하다.
    2. Perl을 사용함으로써 손쉽게 커스터마이즈 할 수 있다.
    3. 다른 SNMP 패키지를 설치할 필요가 없으며 SNMP 부분 전체가 Perl로 씌어 졌기 때문에
       이식성이 높다.
    4. 로그 화일의 크기가 증가하지 않는다.
    5. 반자동적인 설정 툴을 지원한다.
    6. 라우터 포트의 구성이 변경되었을 때, 이를 체크하여 사용자에게 경고 메일을 보내는
       기능이 있다.
    7. 속도가 필요한 부분은 C로 작성되었다.
    8. 그래프는 Thomas Boutell의 GD 라이브러리를 사용하여 GIF 파일로 생성된다.
    9. MRTG에 의해 생성되는 HTML 화일은 손쉽게 커스터마이즈 가능하다.
    10. MRTG는 GNU Public License를 따른다.

    MRTG 설치 방법

    1) 소프트웨어를 다운로드한다. MRTG의 최신버젼은http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/에 있다.

    2) 설치하려는 시스템에 GD 라이브러리가 없다면 http://www.boutell.com에서 GD 라이브러리를 다운로드한다.

    3) Perl 5.003 이상의 버젼이 설치하려는 시스템에 있어야 한다. 없다면
    http://www.perl.com/perl/info/software.html에서 다운로드 받는다.

    4) 자신의 시스템에 맞게 Makefile을 수정한다. 최소한 PERL 항목과 GD_LIB 항목은 변경해야 한다.

    5) rateup 실행 화일을 만들기 위해 make rateup을 실행한다.

    6) make substitute를 실행하여 MRTG의 perl 스크립트에 시스템의 perl 실행 화일의 패쓰를 삽입한다.

    7) MRTG가 웹페이지를 생성할 디렉토리를 정한 후, mrtg*.gif 화일들을 이 디렉토리에 카피한다. 이 화일들은 생성되어질 웹페이지에서 참조될 화일들이다. 필요할 때 쉽게 참조하기 위해 readme.html 화일도 이 디렉토리에 카피하는 것이 좋다.

    8) MRTG 배포판에 있는 그 외의 모든 화일들은 MRTG 실행 화일과 같은 디렉토리에 넣어 놓는다. 이 디렉토리는 어느 곳이어도 상관없다. 이 디렉토리에는 다음의 화일들이 반드시 있어야 한다 : BER.pm, SNMP_Session.pm, mrtg, rateup

    9) 자신의 mrtg.cfg 화일을 만든다. mrtg.cfg-dist 화일을 참조하라. 설명이 잘 되어있으므로 그렇게 어렵지는 않다. mrtg.cfg-dist 화일을 mrtg.cfg 화일로 복사한 후에 주석을 보면서 각 항목을 수정하면 된다. 라우터의 포트 할당을 알아내는 일이 cfg 화일을 만드는데 있어서 좀 힘든 부분인데, cfgmaker 툴을 사용하여 이를 해결할 수 있다. cfgmaker 툴은 mrtg.cfg 화일을 만드는데 필요한 라우터의 정보를 제공하는 툴이다. 사용 방법은 다음과 같다.

      cfgmaker <community>@<router-host-name or IP> | more

    라우터의 community name을 모른다면 public을 사용해보라. 그래도 안되면 라우터 관리자에게 문의하라. community이름이 틀리면 cfgmaker는 아무런 정보도 출력하지 않는다.

    10) MRTG 2.0 이전 버젼에서 업그레이드 하려면 convert 스크립트를 이전 버젼의 로그 화일에 적용시켜서 로그 화일의 포맷을 MRTG 2.0에서 사용 가능하도록 한다.

    11) MRTG 실행 화일이 있는 디렉토리에서 ./mrtg mrtg.cfg 를 실행시킨다. cfg 화일을 맞게 만들었다면 MRTG는 지정한 라우터에서 트래픽 데이타를 가져온다. 처음 MRTG를 실행시키면 로그 화일이 없다는 에러 메세지가 나온다. 신경쓸 것 없다. 에러 메세지가 안나올때까지 계속 실행시키면 된다. 필자의 경우 3번 정도 실행시켰다. 만약 에러 메세지가 계속 나온다면 이는 cfg 화일이 잘못 작성된 것이다.

    12) 일정 시간 간격으로 그래프를 업데이트 시키기 위해서 crontab 에 MRTG 를 넣는다. 매 5분마다 그래프를 업데이트 하려면 다음 항목을  crontab에 넣는다.
    *5**** <mrtg 실행 화일이 있는 디렉토리>/mrtg <mrtg.cfg가 있는 디렉토리>/mrtg.cfg
    crontab에 항목을 등록시키는 방법은 각 유닉스마다 조금씩 틀리다. 리눅스에서는  위의 내용을 파일로 만든 후 crontab[파일명]명령을 준다. crontab 내용을 확인하는 명령은 crontab-1이다.

    cfg 화일 작성에서의 팁

    많은 링크를 모니터링 하고자 한다면 개요 페이지를 만드는 것이 좋다. 이를 위해 indexmaker 스크립트가 있다. 이 스크립트를 사용하여 각각의 트래픽 상태 페이지를 가리키는 항목들을 그 내용으로 하는 웹페이지를 생성할 수 있다. 사용 방법은 다음과 같다. Indexmaker <mrtg.cfg> <regexp for router-names>
    좀 복잡하다고 생각하는 분들이 있을지 모르겠는데 필자도 그런 사람중의 하나이다.
    필자의 경우는 2개의 타겟에 대해 모니터링을 하고 있는데, 각 타겟에 대한 html file이 만들어지므로 이들 html화일에 대한 링크를 가지는 아주 짧은 html 화일을 손으로 만들어서 쓰고 있다. html 을 전혀 모르는 사람을 위해서 필자의 엄청난 overview 페이지를 아래에 쓴다.

      <html>
      <body>
      <a href="http://dove.hanjin.net/~kelpie/pozol.html"> pozol </a><br>
      <a href="http://dove.hanjin.net/~kelpie/bay.html"> bay (Internet connection point)</a>
      </body>
      </html>

    MRTG는 디폴트 5분 간격으로 그래프를 업데이트한다. 그런데 로컬 브라우져의 캐쉬나 프락시의 캐쉬를 사용함으로써 그래프가 업데이트되지 않을 수 있다. 만약 이런 불상사가 생긴다면 여기에 해결책이 있다. 단 이는 아파치 웹 서버를 사용할때에만 적용된다. 그 방법은 다음과 같다. mrtg.cfg 화일의 WriteExpire 키워드와 아파치 서버의 config화일의 MetaDir 키워드를 적절하게 셋팅한다. 이것저것 귀찮은 사람은 그냥 reload 버튼을 누르면 될 것이다. 필자의 웹 서버는 오라클 웹 서버이고, 웹 브라우져는 넷스케이프인데, 매 5분마다 페이지가 업데이트될때마다 자동으로 브라우져의 내용이 업데이트되었다.

    MRTG의 주 목적은 트래픽 모니터링이지만, SNMP 변수들을 관측하는데도 사용될 수 있다. 모뎀 뱅크의 상황, 서버의 부하, 인터페이스의 에러율 등을 MRTG를 이용하여 모니터링 할 수 있다. 더 자세히 알고 싶으신 분은 패키지에 포함된 mibhelp.txt와 contrib 디렉토리의 내용을 참조하도록 하라. 처음 부분에서 소개한 MRTG 메일링 리스트에 가입한다면 더 많은 정보를 얻을 수 있다. 많은 사람들이 이런 고급 활용들에 대해 질문하고 답하는 것을 볼 수 있다. SNMP 변수들을 관측하길 원한다면 SNMP에 대한 어느 정도의 지식이 있어야 가능할 것이라고 생각된다. 이 부분에 있어서는 본 원고의 주제에서 벗어나므로 더 이상 깊게 다루지 않겠다. SNMP에 대해 더 자세히 알고 싶은 분은 아무 TCP/IP책이나 조금만 시간을 내서 보면 될 것이다. SNMP의 개념은 전혀 어려울 것이 없다. 단지 수많은 변수들의 리스트가 있을 뿐이다. SNMP의 개념을 뒷 부분에서 간략하게 설명하겠다.

    필자의 시스템 상에서의 설치와 사용기

    이곳에서는 필자가 MRTG 패키지를 다운로드 받기에서부터 시작해서 사용하기까지의 실제 예를 적도록 하겠다. 사용 운영체제는 Solaris 2.5 이며 GD 라이브러리는 없었고, Perl은 5.003 이전 버젼이 깔려있어서 GD라이브러리, Perl 5.003 모두 설치해야 하는 상황이었다.
    참고로 필자는 설치시 루트 권한을 가졌음을 밝힌다. 필자의 시스템이 솔라리스라고 해서 MRTG가 솔라리스에서만 실행되는 것은 물론 아니다. 앞에서 밝혔듯이 MRTG는 대부분의 유닉스에서 운영할 수 있다. 구체적으로 어떤 플랫폼을 지원하는지에 대한 자료를 찾을 수는 없었다.(compile에 gcc를 사용한다.)

    1. MRTG source 패키지 다운로드

    2. GD 라이브러리 설치
    소스를 받아서 임시 디렉토리에서 압축을 푼 다음 컴파일한다.
    make를 실행시켰더니 이상없이 컴파일이 되었다.
    /usr/local/include에 gd란 디렉토리를 만든 후, 여기에 *.h 화일을 복사한다.
    /usr/local/lib 에 libgd.a 화일을 복사한다.

    3. Perl 5.003 설치
    Perl 홈 페이지에서 5.004_01소스를 가져다가 컴파일해보니 컴파일이 되지 않았다. 하는 수 없이 Perl 5.003의 Solaris 2.5 바이너리 화일을 가져다 설치했는데 이 파일은
    ftp://ftp.kreonet.re.kr/pub/Sun/binaries/sparc/perl5_003_
    SPARC_Solaris_2_5_pkg.tgz
    에서 가지고 왔다. 참고로 이 사이트에는 솔라리스용 바이너리들이 많이 있으니 솔라리스 사용자라면 기억해 둘 만한 곳이다. 바이너리 화일을 시스템에 설치하기는 무척 쉬웠다. 우선 임시 디텍토리에서 압축을 풀면 perl5란 디렉토리가 생긴다. ./perl5/root 디렉토리가 실제 시스템의 루트 디렉토리라고 생각하고 하위 디렉토리의 모든 화일들을 실제 시스템 디렉토리에 복사하면 된다. 아주 무식한 방법이다. 물론 이전 버젼의 Perl을 백업한 다음 모두 삭제한 후에 설치했다. 마지막으로 /usr/local/bin 디렉토리에서 ln -s perl perl5.003을 실행한다. (참고. 솔라리스의 pkgadd 명령을 사용해도 된다.)
    리눅스 사용자들은 배포판에서 perl 바이너리를 설치할 수 있고, 많은 사이트에 리눅스용 바이너리가 있으므로 perl 설치는 별 문제가 되지 않으리라 생각된다. 실제로 공개용 소프트웨어를 받아서 자신이 설치해 보기에는 리눅스가 가장 편한 플랫폼이라는 것이 필자의 지금까지의 경험에서 나오는 생각이다. (물론 반대하는 분들이 있을 수 있겠지만 그리 중요한 문제는 아니므로 항의 메일을 보내거나 하시지는 마세요.)

    4. MRTG 설치
    Makefile 수정 : #GD_INCLUDE=/usr/local/include/gd 라인에서 #을 뺀다
    GD_INCLUDE=gd1.2 라인의 앞부분에 #을 추가한다.
    #GD_LIB=/usr/local/lib 라인에서 #을 뺀다
    GD_LIB=gd1.2 라인의 앞 부분에 #을 추가한다.
    # PERL=/usr/local/bin/perl 라인에서 #을 뺀다
    PERL=/usr/local/gnu/bin/perl5 라인의 앞 부분에 #을 추가한다.
    make rateup을 실행시켜 rateup 실행 화일을 만든다.
    (음 에러메세지 하나 없이 한방에 되는군요)
    make substitute를 실행시킨다.
    MRTG가 웹 페이지를 생성할 디렉토리를 만든 후, 그 디렉토리에 *.gif, *.html, *.pm, mrtg, rateup 화일들을 복사한다. 나중에 참조할 수 있게끔 *.c, *.o 화일들을 제외하고는 모두 복사하는 것이 편하다. 필자의 시스템에는 웹 서버가 있으므로 아예 모든 화일들을 필자의 홈 디렉토리 밑의 public_html 디렉토리에 복사해 버렸다.

    5. cfg 화일 만들기
    mrtg.cfg-dist 화일을 mrtg.cfg 화일로 복사한다. 이 화일에는 주석이 아주 잘 되어 있으므로 cfg 화일을 만드는데 큰 어려움은 없을 것이다. 체크하려는 라우터의 포트를 알아야 하는데 이는 cfgmaker를 쓰면 알 수 있다. cfgmaker의 사용법과 라우터의 community를 알아내는 방법은 앞에서 설명했으므로 생략한다. cfg 화일에서 설정해야 할 것이 많은 것처럼 보이지만 실제로는 그렇지 않다. 단 몇 줄만 써 주면 지금까지 한 작업의 결과를 볼 수 있다. 필자의 cfg 화일을 예로써 아래에 적는다.

    WorkDir: /user/kelpie/public_html
    Target[bay]: 1:xxxxx@10.1.1.254
    RouterUptime[bay]: xxxxx@10.1.2.254
    MaxBytes[bay]: 16000
    Title[bay]: Traffic Analysis for bay
    PageTop[bay]: <H2>Traffic Analysis for our internet router (bay)</H2>
    AddHead[bay]: Base of Percentage computing = 128K
    WithPeak[bay]: m
    Supress[bay]: y
    XSize[bay]: 450
    YSize[bay]: 150
    Options[bay]: growright, bits
    Timezone[bay]: Japan

    라우터의 community와 IP는 회사의 보안을 위해서 실제 값을 쓰지 않았다. 괜히 똑같이 했는데 안된다고 불평하지 마시고 자신의 시스템의 맞는 값을 쓰시길 바란다.

    Target[bay] : 1:xxxxx@10.1.1.254 라인이 가장 중요한데, [bay] 부분은 체크하고자 하는 타켓에 대해 사용자가 주는 이름이다. bay란것은 필자가 체크하고자 하는 라우터의 포트에 붙인 이름이다. cfg 화일을 다 만든다음 MRTG를 실행시키면 그 결과가 bay.html에 들어간다. 이 웹 페이지를 참조할때는 필자의 경우 웹 서버가 같은 호스트상에 설치되어 있었으므로, 웹 브라우져에서 http://dove.hanjin.net/~kelpie/bay.html이라고 입력하면 된다. 이런 식이다. 자신의 홈 페이지를 가지고 있지 않으신 분은 일단 PC로 html 파일을 가지고 와서 웹 브라우저에서 보면 된다.

    그 다음 '1'은 체크대상 라우터의 포트 번호이다. 하나의 라우터는 여러개의 포트를 가진다. 보통 이더넷 포트와 시리얼 포트들로 구성된다. cfgmaker를 사용하여 체크하려는 포트의 번호를 알아낼 수 있다. cfgmaker의 출력 결과를 주의 깊게 들여다 보면 자신이 체크하려는 포트가 몇 번인지 알 수 있다. cfgmaker는 출력을 html문서의 포맷으로 화면에 보여준다. 그냥 화면에 보여지는 결과만으로도 충분히 내용을 파악할 수 있지만 출력 결과를 html화일로 리다이렉트하여 웹 브라우저에서 본다면 깨끗하게 볼 수 있다.

    그 다음 xxxxx은 체크하고자 하는 라우터의 community이다. 이 community가 틀리면 MRTG는 실행되지 않는다. 다음 숫자 부분이 라우터의 IP 주소이다. 다른 항목들에 대해서는 mrgt.cfg-dist 화일에 아주 잘 설명이 되어 있으므로 따로 설명하지 않겠다. mrtg.cfg-dist 화일과 위의 예를 참조한다면 쉽게 자신의 cfg 화일을 만들 수 있을 것이다.
    이로써 모든 준비 작업이 끝났다. community만 맞게 써 줬다면 MRTG는 분명히 라우터의 트래픽을 그린 출력물을 내어 놓는다. 이제 실행만 시키면 된다. 실행은 ./mrtg mrtg.cfg라고 치면 된다. MRTG를 처음 실행시켰다면 에러 메세지가 뜨는데 몇번(2-3번) 반복해서 실행시키면 된다.

    6. MRTG가 주기적으로 실행되도록 crontab에 등록한다. 등록 방법은 시스템마다 조금 틀리므로 알아서 하기 바란다. 아마 man cron, 또는 man crontab, 또는 man crond중의 하나로 사용법을 알 수 있을 것이다. 세가지 다 안되면 man -k cron으로 cron이란 말을 키워드로 하는 도움말 항목들을 볼 수 있다. 리눅스에서는 crontab[파일명] 이다. 미련한 방법인지 모르겠지만 이런 식으로 스스로 man페이지를 찾아가면서 하나하나 알아가는 것이 유닉스에 익숙해지는 한 방법이라고 생각한다.

    이로서 모든 것이 끝났다. 자신의 네트워크 트래픽을 그래프로 알기 쉽게 확인한다는 것은 필자에게 있어서는 아주 즐거운 경험이었다. 괜찮은 아이템이 있으면 다시 소개하도록 하겠다.

용어설명

    라우터(Router) : 서로 다른 네트워크를 연결해 주는 장비이다. 인터넷 IP 체계하에서 다른 주소대를 가지는 네트워크를 다른 네트워크라 한다. 예를 들면 203.245.11.xx 주소를 가지는 네트워크와 195.126.11.xx주소를 가지는 네트워크는 서로 다른 네트워크이다. 서로 다른 네트워크끼리 통신을 하기 위해서는 라우터가 필요하다. 이 설명은 지극히 단순화된 것이다.

    프락시(Proxy) : 프락시는 대행자라는 뜻을 가지고 있다. 총체적인 개념으로는 Telnet, FTP, HTTP, Gopher 등등 많은 응용에서 프락시를 사용할 수 있지만 가장 익숙한 것을 역시 HTTP프락시일 것이다. 프락시 서버는 보안 기능, 로그 기능, 프락시 연계 기능 등 다양한 기능을 가진다. 가장 유용하면서 대표적인 기능은 캐쉬기능이다. 많은 사람들이 프락시 서버를 사용한다고 할 때, 단 한사람이 어떤 사이트에서 정보를 가지고 왔다면 그 이후에는 다른 사람이 같은 사이트를 보고자 할 떄 그 사이트까지 가는 것이 아니라 프락시 서버에서 가져오므로 빠르게 Web을 사용할 수 있다.

    SNMP(Simple Network Management Protocol) : 네트워크사의 장치들로부터 네트워크에 대한 정보를 모으는 기능과, 장치들이 네트워크 관리 머쉰에게 자신의 문제점을 보고 할 수 있는 기능을 제공한다. SNMP 프로토콜은 Client/Server 모델을 기반으로 한다. 각각의 네트워크 장비들은 Agent라는 Server 모듈을 가진다. 이 Agent들은 자신의 네트워크 정보를 수집한다. Client는 보통 응용 프로그램이 된다. 이 프로그램이 운영되는 머쉰이 관리 머쉰이 되는 것이다. 이 Client를 Manager라 한다. Manager를 사용하여 네트워크 관리자는 네트워크 상의 Agent들에게 정보를 요구하고 취합하여 자신의 네트워크를 관리할 수 있다. 가능한 한 최대로 축약된 설명이므로 더 자세히 알고 싶으신 분은 TCP/IP 책을 참조하길 바란다.

참고자료

Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 12:07
출처 블로그 > Big_Boss의 블로그
원본 http://blog.naver.com/boss0425/40003038330
아래글은 세노님이 쓰신 글입니다. 세노(박병석)님이 예전에 쓰신 글을 퍼옵니다..^^

이글에 대한 저작권은 세노님한테 있습니다. ^^;

저는 첨에 이글을 보고.. 이야~! 참 기똥차다~! 라는 말이 저절로 나오더군요...ㅎㅎ

--------------------------------------------------------------------------


제로님께서 요청하셨던 '어떻게 null interface 가 routing loop 을 방지하는가'에
대해 말씀드리고자 합니다.


null interface 는 제로님께서 비팬에 올리신 글에서 말씀하셨듯이 특정 주소를
목적지로 하는 트래픽을 discard 시키기 위해 사용하며, access-list 와는 달리
라우터의 CPU 를 적게 사용하기 때문에 효과적으로 라우터의 부하를 줄이는 방법
으로 사용됩니다.
그런데, 이러한 잇점과 아울러 null interface 는 routing loop 을 방지하는데
일조하기도 합니다.

일반적으로 EIGRP 나 BGP 에서 specific 한 어드레스를 summarization 하게 되면,
summarization 과 동시에 저절로 null interface 가 라우팅 테이블에 생성되는
것을 볼 수 있습니다. 바로 이것이 routing loop 을 방지하기 위해 생성되는 것
입니다.

이해를 돕기 위해 하나의 예를 들어보겠습니다.


192.168.4.0 / 24 ---I
192.168.5.0 / 24 ---I------ [Router A] ------ [Router B] ------ [Internet]
192.168.6.0 / 24 ---I BGP BGP
192.168.7.0 / 24 ---I

Router A 와 Router B 사이에는 BGP 가 동작한다고 가정합니다.
Router A 의 뒷단에는 위와 같이 네 개의 C class 네트웍이 존재합니다.
Router A 는 ISP 망에 존재하는 Router B 를 통해 외부 Internet 으로 나갑니다.
Router A 에서 Router B 쪽으로 default route 를 설정합니다.

이런 상황에서, flapping 으로 인한 네트웍 토폴로지의 변화를 localize 함으로써
네트웍을 안정적으로 유지하고, 라우팅 테이블의 엔트리의 숫자를 줄임으로써 라우팅
테이블의 크기를 줄여 결과적으로 효율적으로 bandwidth 를 사용하기 위해 Router A
뒷단에 있는 네 개의 C class 네트웍을 하나의 네트웍(192.168.4.0 / 22)으로
summarization 해서 (이 경우엔 CIDR 이겠지요?) Router B 로 advertise 했다고
가정해보죠. 여기서는 summary-only 키워드를 통해 summary 된 정보만 advertize
했다고 가정하겠습니다.

이 경우에 Router A 에는 다음과 같은 라우팅 테이블이 존재할 것입니다.

- Router A -

192.168.4.0 / 24
192.168.5.0 / 24
192.168.6.0 / 24
192.168.7.0 / 24
192.168.4.0 / 22 null 0
0.0.0.0 via Router B

여기서 null 0 는 summarization 과 동시에 자동으로 생성된 null interface 입니다.
물론, 이보다 specific 한 route 가 존재하기 때문에 longest match 에 입각하여 null
interface 로 인해 discard 되는 트래픽은 존재하지 않을 것입니다.

그리고 Router B 에는 다음과 같은 라우팅 테이블이 존재할 것입니다.
당연히 Router A 에서 summarization 한 결과를 넘겨줬기 때문에 Router B 의 라우팅
테이블에는 summary 된 결과만이 존재할 것입니다.

- Router B -

192.168.4.0 / 22 via Router A


자, 눈채 채셨습니까? 제로님.
일반적인 경우 아무런 문제없이 Router A 와 Router B 사이에 트래픽이 오고 갈 것
입니다. 물론 이 경우 저절로 생성된 null interface 는 유명무실하겠지요?
그런데!!!
Router A 의 뒷단에 있는 네트웍 가운데 하나, 예를 들어 192.168.7.0 네트웍으로
통하는 link 가 down 되었다고 가정해 봅시다. 어떤 일이 발생할까요?

먼저, Router B 의 라우팅 테이블은 변화가 없을 것입니다. flapping 이라고 보긴
어렵지만 - 아니, 조금 큰 규모의 flapping 이라고 보아야 할까요? - 어찌됐건
summary 된 모든 네트웍이 다 없어지지 않는 한 Router B 에는 Router A 로부터 건네
받은 summary 된 정보가 라우팅 테이블에 올라와 있을 것입니다.
그렇다면, 외부 Internet 에서 192.168.7.0 을 목적지로 하는 트래픽은 무리없이
Router A 로 전달되겠지요?

하지만 Router A 의 라우팅 테이블은 어떻게 변했을까요?
다음과 같이 192.168.7.0 / 24 엔트리는 사라지고 없을 것입니다.

192.168.4.0 / 24
192.168.5.0 / 24
192.168.6.0 / 24
192.168.4.0 / 22 null 0
0.0.0.0 via Router B

여기서 바로 null interface 의 진가가 나타나는 것이지요.
만약 null interface 가 없다면, Router B 로부터 전달받은 192.168.7.0 을 목적지로
하는 트래픽은 default route 를 통해서 다시 Router B 로 전달될 것입니다.
그리고 여기서 바로 routing loop 이 발생하는 것이지요.
하지만 null interface 가 존재하기 때문에 192.168.7.0 을 목적지로 하는 트래픽은
discard 되고 말 것입니다.


명확하게 정식화하지는 못했지만.. 대강 감이 잡히나요?
위의 내용들을 무시하시고 종이에 다시 한번 그림을 그려보며 하나하나 짚어보세요.
별 내용 아니지만 그래도 궁금해하시는 것 같아 글을 올렸습니다.
재밌게 보셨는지 모르겠네요.

행복한 주말 보내시기 바랍니다.
그럼 이만..

Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 12:05
출처 블로그 > 엔시아님의 블로그
원본 http://blog.naver.com/ncia77/120010955639
가상PC의 제왕 VMware Workstation 4

오늘 필자가 소개할 소프트웨어는 VMware 라고 하는 가상PC 프로그램이다. 소개에 들어가기 전에 VMware(이하 VMware)가 제공하는 가상PC의 개념에 대해서 간단하게 짚어보도록 하자. 어떤 것이든 그 정확한 개념을 이해하고 사용한다면 쉽게 자신의 것으로 만들 수 있을 것이다.
 

◆ 가상PC란?

컴퓨터 속에 또 다른 컴퓨터를 만들어주는 프로그램을 말한다. 물론 여기에 실제는 없다. 어디까지나 가상(Virtual)이다. 단지 윈도우 안에 작은 컴퓨터를 만들어 주는 것으로 생각한다면 옳을 것이다. 하지만 가상PC라고 해도 실제 컴퓨터와 다를 것도 없다. 모든 하드웨어장치는 원래 PC의 것을 빌려서 사용하지만, 단순한 흉내를 하는 수준을 벗어나 완전히 하나의 PC가 가진 모든 기능을 제공하고 있다.


그럼 왜 이런 가상PC로 다른 OS를 설치할 필요가 있을까? 쉽게 2개의 운영체제로 부팅하여 사용하는 멀티부팅이라는 것도 있지 않은가? 하지만 멀티부팅이란 결국 한번에 하나의 OS만을 사용할 수 있을 뿐이다. 그러나 가상PC를 사용하면 새로운 OS의 사용을 위해 매번 재부팅을 해야 하는 번거로움을 줄일 수 있다.
 

컴퓨터 프로그래머나 하드웨어 개발자. 또는 필자와 같은 강좌가 필요한 사람들은 VMware과 같은 가상PC를 사용함으로써 아주 효율적인 작업을 할 수 있으며, 전문유저가 아닌 일반유저들도 특별한 환경에서만 동작이 되는 프로그램의 설치나 운용이라던지, 기타학습이나 특정목적으로 전혀 다른 OS를 필요로 할 경우에 기존의 윈도우 환경에 전혀 영향을 미치지 않고 다른 OS를 사용할 수도 있다. 필요에 따라서는 OS를 종류별로 만들어두고 그때그때 사용할 수도 있을 것이다. 그 사용범위는 사용자들이 생각하는 것 이상이다.


그럼 본론으로 들어가 VMware에 대하여 간단히 소개해 보겠다. VMware는 가상 PC를 구현해주는 일종의 에뮬레이터 프로그램으로 VMware 외에도 VitualPC와 같은 유사한 기능을 하는 가상PC프로그램들이 있다. 보통 프로그램을 가장먼저 개발한 곳이 더 안정적이고 최신의 기능을 지원하는 것처럼 가상PC 역시 VMware가 좀더 뛰어난 것으로 알려져 있다.


한가지 알아야 할 것이 있는데 이런 VMware과 같은 가상PC프로그램들은 편리한 기능을 지원하지만 역시 기존의 OS플랫폼 내에서 동작한다는 것이다. 즉 원래 PC의 CPU와 RAM과 같은 하드웨어 사양에 의해서 직접적인 영향을 받는다. 사양이 높다면 원할하게 동작을 하지만, 저사양일수록 운영체제 또한 느리게 작동할 것이다. 하지만 요즘같이 고사양 PC들이 보편화되는 것을 보면 그리 큰문제는 아니지 않을까하는게 필자의 개인적인 생각이다. 참고로 필자가 VMware을 테스트한 PC는 "펜티엄4 2.2G/512DDR"이며, 이 사양에서도 별문제 없이 원활한 동작을 보여주었다.

 

◆ VMware의 주요기능

1) 스냅샷

VMware Workstation 4 은 운영중인 시스템의 상황을 시간별로 복사 하여 저장할수 있도록 해주며, 사용자로 하여금 백업 되있던 시스템의 상태를 언제든 복원 할수 있도록 해준다.


2) 가상PC 탭

직관적으로 새로워진 빠른 변환 모드를 사용하여,마우스 클릭 만으로 가상PC들 사이를 옮겨 다닐 수 있다.


3) 드래그엔 드롭과 공유폴더

공유폴더를 사용하거나, 파일을 시스템 사이로 드래그 엔 드롭 할수 있게 함으로써, 게스트 와 호스트 가상PC 사이의 파일공유를 보다 쉽게 하였다.


4) 완벽한 디버그 지원

프로그래머들은 사용자 및 커널 레벨 디버거를 지원하는 가상 머신 상에서 네이티브 프로그램을 디버깅 할 수 있게 되었다.


5) 향상된 사운드 와 비디오

새로운 사업 표준 SoundBlaster 장치 지원을 통해 높은 원음 재생을 가능하게 되었으며, 고성능의 그래픽기능 구현으로 비트손실 없는 스트리밍 비디오 표현이 가능 해졌다.


6) 새로운 운영체제 지원

VMware Workstation 4 은 Microsoft Windows Server 2003, Red Hat 8.0, Red Hat Enterprise Linux AS, SuSE 8.0, 8.1, Enterprise Server 8, Mandrake 9.0 등의 거의모든 운영체제를 지원한다.


7) Linux 사용자를 위한 새로운 인터 페이스

Linux 사용자들을 위한 인터페이스가 완전히 새롭게 업그레이드되어, Windows 버젼의 VMware Workstation 과 동일한 인터페이스를 제공한다.


위의 7가지는 최신 VMware Workstation 4의 주요기능을 간략히 정리해본 것이다. 물론 위의 설명만으로는 잘 이해가 가지 않는 유저들도 있을 것이다. 그러나 나머지 기사를 본다면 충분히 이해할 수 있을 것이므로 그럼 이제부터 VMware의 설치에서부터 간단한 사용까지 알아보도록 하자.


 



1. VMware Workstation 4 설치하기

VMware에도 몇 가지 종류가 있다. 크게 서버용과 일반용으로 구분할 수 있으며, 오늘 필자가 소개하는 것은 일반용 VMware Workstation4 버젼이다. 설치를 위해 우선 VMware을 다운로드 받도록 하자.
VMware의 제작사인 www.VMware.com 로 접속하면 최신판 VMware Workstation4 Trial 버젼을 다운로드 할 수 있지만, 사용자들의 편의를 위해 아래주소에서 VMware을 바로 다운받도록 하자.

- VMware 윈도우버젼 다운로드 링크(
http://www.VMware.com/VMwarestore/newstore/download_link.jsp)
 

- VMware 리눅스버젼 다운로드 링크
Compressed Tar :
http://download3.VMware.com/software/wkst/VMware-workstation-4.5.2-8848.tar.gz
 

RPM Vesion : http://download3.VMware.com/software/wkst/VMware-workstation-4.5.2-8848.i386.rpm

그럼 설치를 시작해보도록 하자. 라이센스화면에서 동의한 후 확인을 클릭하면 설치가 진행될 것이다.

만일 설치 중 활성화된 CD-ROM 자동실행 기능을 발견하면, 이 기능을 비활성 시킬 옵션을 제공 하는 메시지가 출력된다. 이 기능은 VMware의 오류 및 예기치 못한 충돌을 방지하기 위해 비활성 시키는 것이 좋다. 그리고 인스톨러가 VMware 가상 이더넷(Ethernet) 어댑터 설치를 시작 하면 Digital Signature Not Found 대화상자를 여러 번 보여줄 수도 있는데, 이러한 메시지들은 무시하고 설치하여도 아무런 문제가 되지 않는다.

다음은 .vmdk 확장자를 사용할 수 있도록 기존 가상PC 파일의 명칭을 변경할 것 인지를 묻는 대화상자가 나타난다. 이것은 VMware Workstation 3 에서 소개된 것으로 이미 .vmdk 확장자를 사용하고 있거나, 이전 버젼의 VMware을 사용하지 않았다면, No 를 선택해 이 과정을 생략하자. 그리고 만일 모든 로컬 디스크를 검사하여 이 변경사항을 적용 하고 싶다면 Yes를 선택 하면 된다.

FInish를 클릭하면 VMware의 설치가 완료된다.



2. VMware실행하기

자, 제대로 설치가 완료되었다면, 이제 VMware을 실행해보도록 하자. 실행하면 각종설정과 가상PC들을 만들고 관리하는 메인 창을 확인할 수 있다. 즉 VMware의 모든 기능을 이 화면에서 제어할 수가 있다.
VMware은 가상시디/가상디스켓/가상네트워크/가상비디오/가상사운드/가상USB까지 모두를 지원하는데 해당설정은 메인창의 상위메뉴를 통해 할수 있다. 디스켓, 시디롬들을 사용할지 안할지 등도 설정할 수 있다.


그리고 메인창의 왼쪽은 등록된 가상PC의 목록은 보여주는 곳이고, 오른쪽의 2가지 메뉴아이콘은 실제 가상PC를 만들고 관리하는 것들인데,

- New Virtual Machine : 새로운 가상PC 환경을 만든다.

- Open Existing Virtual Machine : 기존 가상PC 환경을 불러와서 관리한다. 가상PC는 하드용량이 허락하는 한 얼마든지 많은 종류의 OS를 설치할 수도 있다.

그럼 실제로 VMware을 사용하여 OS를 까는 법을 알아보도록 하자. 그러자면 먼저 OS가 설치될 가상PC의 하드디스크를 만들어야 할 것이다. "New Virtual Machine"를 선택해서 새로운 가상PC 마법사를 시작하면 아래와 같은 대화창이 나온다.

 

Select the Appropriate Configuration

새로운 가상PC 마법사를 시작하게 되면 일반설정과 사용자설정중 하나를 선택할 수 있다.

- Typical : 일반설정(대부분의 설정이 자동 설정되므로 간편하다.)

- Custom : 사용자설정(세세한 부분까지 직접 설정할 수 있다.)

일반설정은 대부분의 자동설정으로 맞춰지므로 별 어려움 없이 설치를 진행할 수 있다. 하지만 제대로 VMware의 기능을 사용하려면 사용자의 목적에 맞게 정확하게 설정하여 설치할 수 있는 사용자 설치를 추천하고 싶다. 조금 설정이 까다롭기는 하지만 차근차근 따라 해보도록 하자.

 

Select a Guest Operating System

사용자설정을 선택하고 확인을 하면 어떤 OS를 가상PC으로 사용할지 선택할 수가 있다. OS 대분류로 크게 구분이 되며 다시 OS의 종류로 나뉘어지는데, 필자는 Microsoft Windows를 선택하고 다시 WindowsXP Professional을 선택하여 설치해보도록 하겠다.

 

Name the Virtual Machine

가상PC의 메인 이름을 설정한다. 여러 가지 종류의 가상PC를 관리하고 있다면 메인 이름으로 이것들을 구분하고 관리할 수 있을 것이다. 물론 기본값으로 두어도 문제는 없다.

- Virtual Machine name : QbicWebzin XP Pro
- Location : 가상PC 파일을 저장할 위치를 설정한다.

 

Memory for the Virtual Machine

가상PC에 할당해줄 메모리 양을 정할 수 있다. 슬라이드막대로 설정을 변경할 수 있는데, 최저메모리와 최고메모리 수치를 추천해주고 있다. 각각 노랑색 삼각과 파랑색 삼각으로 표시가 되어있다. 필요한 수치만큼 조절하면 되는데 주의할 점은 너무 많이 주면 안 된다는 것이다. 현재PC의 실제 메모리중에 절반 정도를 할당해 주는 것이 좋다. 자신의 사양에 맞게 적당히 조절해주도록 하자.

 

Network Type

VMware에서 사용할 네트워크 환경을 설정해야 한다. 바로 실제 네트워크 어댑터와 가상네트워크를 어떤 방법으로 연결할 것인가를 선택하는 것이다.

- Use bridged networking : VMware의 기본설정으로서 현재 호스트PC에서 인터넷이 가능하다면 이 설정으로 가상PC에서도 바로 인터넷을 사용할 수 있다.

- Use network address translation [NAT] : 가상PC에서 가상내부IP를 할당하여 사용한다.

- Use host-only networking : 호스트PC만 네트워크를 사용한다.

- Do not use a network connection : 네트워크를 사용하지 않음.특별히 다른 설정이 필요한 경우가 아니면 " Use bridged networking"를 선택하도록 하자. 기존 호스트PC에서 인터넷이 가능했다면, 별다른 설정 없이도 가상PC에서도 인터넷을 사용할 수 있다.

 

Select I/O Adapter Types

입출력장치의 종류를 설정한다. 자신에게 맞는 설정을 적용하도록 하자. 선택이 어렵다면 기본값을 선택하자.

 

Select a Disk

가상PC에서 사용할 하드디스크를 설정한다. 물론 실제 호스트PC에서는 파일로만 존재하게 되며, 그 파일을 VMware에서는 하드디스크로 인식하게 된다. 필요한 수만큼 만들 수 있으나 별문제 없다면 기본값으로 설정하도록 하자.

- Creat a new virtual disk : 기본값사용

- Use an existing virtual disk : 이미 만들어진 기존 이미지파일로부터 사용한다.

- Use a physical disk (for advanced users) : 실제 호스트PC의 디스크를 사용한다. 실제디스크를 엑세스 할 경우 위험이 크므로 추천하고 싶지 않다.

 

Select a Disk Type

가상PC의 하드디스크의 타입을 설정한다. IDE방식과 SCSI 방식 중 맞는 것을 선택하자.

 

Specify Disk Capacity

가상PC에서 사용할 하드디스크 용량을 설정한다. 기본값 4.0GB는 이 가상PC가 사용 가능한 디스크의 최대용량이다. 기본값은 가상PC의 파일용량이 추가되는 만큼 디스크의 크기가 최고 4GB이내로 변경된다.

- Allocate all disk space now : 사용 가능한 모든 디스크 용량을 미리 할당한다.

- Split disk into 2 GB files : 디스크의 크기를 2GB로 분할한다.

 

Specify Disk File

가상PC의 하드파일이 저장되는 위치를 지정한다. 이 파일만 있다면 나중에 재사용할 수도 있으니, 안전한 곳에 저장하도록 하자. 이제 마침을 누르면 OS설치를 위한 기본설정이 완료된다.




 

3. 가상PC실행 및 OS설치

제대로 설치가 되었다면 왼쪽에 가상PC의 목록을 확인할 수 있을 것이다. 이제 가상PC를 선택하면 가상PC의 하드웨어사항을 확인 할 수 있다. Devices에서는 현재 가상PC의 하드웨어 사항을 바로 확인 할 수 있으며 각각 수정이나 변경할 수 있다.

Commands는 2가지 메뉴가 있는데,

- Start this Virtual Machine : 가상PC를 시작한다.

- Edit Virtual Machine Settings : 가상PC의 하드웨어를 수정하거나 변경한다.

2번째 "Edit Virtual.."명령으로 모든 하드웨어사항을 검색하거나 변경할 수 있으니 Devices보다는 이쪽을 사용하길 권한다.

 

Commands의 "Start this virtual machine" 또는 상위 툴바의 Play 버튼을 누르면 VMware의 로고와 함께 가상PC가 부팅을 시작할 것이다. 일단 실행이 되고난 뒤 가상PC의 화면을 클릭하면 키보드와 마우스의 제어가 가상PC로 옮겨가게 된다. 다시 원래 윈도우로 빠져 나오고 싶다면 " Ctrl + Alt " 키를 동시에 누르면 된다.

 

VMware이 시작하면 일반컴퓨터와 똑같은 초기 부팅화면을 볼수가 있는데, 여기서 VMware가 다른 가상PC 프로그램들과 뛰어난 강점이 있다. 그것은 BIOS 에뮬레이션이라는 기능으로, 가상PC에서 CMOS설정이 할 수 있는 기능이다. CMOS설정에서 할 수 있는 하드웨어 정보, 부팅순서 등을 똑같이 변경할 수 있다. 물론 가상PC 내에서의 CMOS설정은 실제 하드웨어에는 아무런 영향도 주지 않으므로 걱정할 필요없다. CMOS 바이오스를 설정하려면 시작화면에서 F2키를 누르면 되며, OS설치를 해야 한다면 부팅순서를 시디부팅으로 바꾸어주는 것이 좋을 것이다. 바이오스 재설정하고 저장 후 종료하면 자동으로 재시작된다.

자 이제 윈도우 설치CD를 넣고 부팅을 하면 멋지게 부팅이 되는 모습을 볼 수 있을 것이다. 이후는 일반적인 윈도우 설치과정과 똑같이 진행하면 된다. 해당 운영체제의 설치방법은 따로 설명하지 않겠다. (지난 큐빅웹진 기사 참조)

설치를 완료했다면 윈도우에서 또 하나의 윈도우가 실행되는 재미있는 모습을 볼 수 있을 것이다. 그리고 웬만한 장치들은 모두 VMware에서 가상하드웨어로 설정이 되어있으며, 특별한 설정 없이도 인터넷, 사운드 등을 사용할 수 있도록 준비되어있다. 이제 남은 건 어떻게 활용할 것인가 뿐이다.




 

4. 맺음말

지금까지 VMware의 설치에서부터 OS를 설치하는 간단한 과정을 살펴보았다. 물론 이것은 VMware의 일부를 살펴본 것에 불과하다.
 

VMware과 같은 가상PC 프로그램의 가장 큰 특징은, 사용자들이 사용하기에 따라 아주 다양하고 효율적인 작업을 하도록 도와주는 프로그램이라는 것이다. 필자 역시 이전의 "초보사용자를 위한 윈도우 설치와 고스트 백업 가이드"에 관한 기사를 작성하면서, 윈도우XP설치의 모든 과정을 VMware을 통해 하나하나 캡쳐하여 기사를 작성하였던 적이 있다.


그리고 오늘은 필자가 설명을 쉽게 하기 위해 OS를 범용적인 윈도우를 선택하였지만, 리눅스나 다른 기타OS를 필요로 하는 사용자들 역시 똑같은 방법으로 그것들을 활용할 수 있을 것이다. 특히 VMware은 별도의 리눅스 버젼을 제공하고 있으므로, 리눅스에서도 본 기사와 똑같은 인터페이스와 환경으로 작업을 할 수가 있다.


끝으로, 오늘 이 기사에서 VMware의 모든 것을 이야기할 수는 없었지만, 적어도 VMware이 어떤 프로그램인지, 어떤 역할을 할수 있는지, 어떻게 써야 할지는 다들 이해했으리라고 생각한다. 그럼 이제부터 VMware라는 재미있는 프로그램을 어떻게 활용하느냐는 여러분의 선택에 맡기겠다.

Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 01:22
출처 블로그 > romu님의 大略難堪
원본 http://blog.naver.com/romu/60011176173
네트워크 - 세계 IP 주소 분포도  
003.000.000.000~003.255.255.255 미국신택서통용전기회사
224.000.000.000~224.255.255.255 미국캘리포니아대학
216.244.192.000~216.244.207.255 아르헨띠나
216.154.000.000~216.154.255.255 캐나다
216.000.000.000~216.255.255.255 미국/캐나다
214.000.000.000~215.255.255.255 미국국방부네트웍(포기니아주)
212.216.160.000~212.216.167.255 이탤리아
212.156.000.000~212.156.193.255 터키
212.020.096.000~212.020.111.255 체스코인라인
212.000.000.000~213.255.255.255 호주
211.094.000.000~211.103.255.255 중국
211.072.000.000~211.075.255.255 대만
211.032.000.000~211.051.255.255 한국
211.008.000.000~211.019.255.255 일본
211.000.000.000~211.255.255.255 아세아주
210.248.000.000~211.007.255.255 일본
210.240.000.000~210.247.255.255 대만
210.224.000.000~210.239.255.255 일본
210.216.000.000~210.223.255.255 한국
210.212.000.000~210.212.255.255 인도
210.208.000.000~210.209.063.255 대만
210.204.000.000~210.207.255.255 한국
210.200.000.000~210.200.095.255 대만
210.196.000.000~210.199.255.255 일본
210.192.000.000~210.192.255.255 대만
210.188.000.000~210.191.255.255 일본
210.178.000.000~210.184.095.255 한국
210.176.000.000~210.176.255.255 홍콩
210.128.000.000~210.175.255.255 일본
210.090.000.000~210.127.255.255 한국
210.088.000.000~210.088.191.255 일본
210.087.248.000~210.087.255.255 홍콩
210.084.000.000~210.084.255.255 호주
210.081.000.000~210.081.031.255 일본
210.072.000.000~210.079.255.255 중국
210.059.000.000~210.071.255.255 대만
210.056.000.000~210.056.031.255 파키스탄
210.048.000.000~210.055.255.255 뉴질랜드
203.133.192.000~203.133.255.255 파키스탄
203.133.000.000~203.133.063.255 대만
203.132.000.000~203.132.255.255 호주
203.131.224.000~203.131.255.255 홍콩
203.131.000.000~203.131.063.255 호주
203.130.192.000~203.130.255.255 인도네시아
203.130.000.000~203.130.063.255 파키스탄
203.129.224.000~203.129.255.255 인도
203.128.000.000~203.129.063.255 파키스탄
203.116.000.000~203.127.255.255 싱가폴
203.115.000.000~203.115.063.255 스리랑카
203.112.128.000~203.112.159.255 인도
203.112.000.000~203.112.031.255 싱가폴
203.110.128.000~203.111.255.255 호주
203.109.192.000~203.110.031.255 뉴지랜드
203.109.000.000~203.109.031.255 인도네시아
203.108.000.000~203.108.255.255 호주
203.107.000.000~203.107.063.255 대만
203.106.000.000~203.106.063.255 말레시아
203.105.000.000~203.105.063.255 홍콩
203.100.000.000~203.104.255.255 호주
203.099.255.000~203.099.255.255 서사모아
203.099.000.000~203.099.071.255 뉴질랜드
203.098.224.000~203.098.255.255 페루
203.096.000.000~203.098.063.255 뉴질랜드
203.095.128.000~203.095.255.255 대만
203.095.000.000~203.095.063.255 중국
203.094.224.000~203.094.255.255 인도
203.094.000.000~203.094.063.255 중국
203.092.224.000~203.092.255.255 호주
203.092.000.000~203.092.063.255 중국
203.090.224.000~203.090.255.255 홍콩
203.090.000.000~203.090.063.255 중국
203.089.224.000~203.089.255.255 호주
203.089.000.000~203.089.063.255 중국
203.088.064.000~203.088.255.255 호주
203.087.224.000~203.088.063.255 중국
203.087.000.000~203.087.063.255 호주
203.080.000.000~203.086.255.255 홍콩
203.079.000.000~203.079.255.255 대만
203.078.224.000~203.078.255.255 필리핀
203.078.000.000~203.078.031.255 대만
203.077.224.000~203.077.255.255 인도네시아
203.077.000.000~203.077.127.255 대만
203.076.000.000~203.076.255.255 호주
203.064.000.000~203.075.255.255 대만
203.000.000.000~203.255.255.255 아세아주
203.000.000.000~203.063.255.255 호주
202.208.000.000~202.255.255.255 일본
203.133.192.000~203.133.255.255 파키스탄
203.133.000.000~203.133.063.255 대만
203.132.000.000~203.132.255.255 호주
203.131.224.000~203.131.255.255 홍콩
203.131.000.000~203.131.063.255 호주
203.130.192.000~203.130.255.255 인도네시아
203.130.000.000~203.130.063.255 파키스탄
203.129.224.000~203.129.255.255 인도
203.128.000.000~203.129.063.255 파키스탄
203.116.000.000~203.127.255.255 싱가폴
203.115.000.000~203.115.063.255 스리랑카
203.112.128.000~203.112.159.255 인도
203.112.000.000~203.112.031.255 싱가폴
203.110.128.000~203.111.255.255 호주
203.109.192.000~203.110.031.255 뉴질랜드
203.109.000.000~203.109.031.255 인도네시야
203.108.000.000~203.108.255.255 호주
203.107.000.000~203.107.063.255 대만
203.106.000.000~203.106.063.255 말레이시아
203.105.000.000~203.105.063.255 홍콩
203.100.000.000~203.104.255.255 호주
203.099.255.000~203.099.255.255 서사모아
203.099.000.000~203.099.071.255 뉴질랜드
203.098.224.000~203.098.255.255 페루
203.096.000.000~203.098.063.255 뉴질랜드
203.095.128.000~203.095.255.255 대만
203.095.000.000~203.095.063.255 중국
203.094.224.000~203.094.255.255 인도
203.094.000.000~203.094.063.255 중국
203.092.224.000~203.092.255.255 호주
203.092.000.000~203.092.063.255 중국
203.091.064.000~203.091.255.255 호주
203.091.000.000~203.091.063.255 중국
203.090.224.000~203.090.255.255 홍콩
203.090.000.000~203.090.063.255 중국
203.089.224.000~203.089.255.255 호주
203.087.224.000~203.088.063.255 중국
203.087.000.000~203.087.063.255 호주
203.080.000.000~203.086.255.255 홍콩
203.079.000.000~203.079.255.255 대만
203.078.224.000~203.078.255.255 필리핀
203.078.000.000~203.078.031.255 대만
203.077.224.000~203.077.255.255 인도네시아
203.077.000.000~203.077.127.255 대만
203.076.000.000~203.076.255.255 호주
203.064.000.000~203.075.255.255 대만
203.000.000.000~203.255.255.255 아세아주
203.000.000.000~203.063.255.255 호주
202.208.000.000~202.255.255.255 일본
203.133.192.000~203.133.255.255 파키스탄
203.133.000.000~203.133.063.255 대만
203.132.000.000~203.132.255.255 호주
203.131.224.000~203.131.255.255 홍콩
203.131.000.000~203.131.063.255 호주
203.130.192.000~203.130.255.255 인도네시아
203.130.000.000~203.130.063.255 파키스탄
203.129.224.000~203.129.255.255 인도
203.128.000.000~203.129.063.255 파키스탄
203.116.000.000~203.127.255.255 싱가폴
203.115.000.000~203.115.063.255 스리랑카
203.112.128.000~203.112.159.255 인도
203.112.000.000~203.112.031.255 싱가폴
203.110.128.000~203.111.255.255 호주
203.109.192.000~203.110.031.255 뉴질랜드
203.109.000.000~203.109.031.255 인도네시아
203.108.000.000~203.108.255.255 호주
203.107.000.000~203.107.063.255 대만
203.106.000.000~203.106.063.255 말레이시아
203.105.000.000~203.105.063.255 홍콩
203.100.000.000~203.104.255.255 호주
203.099.255.000~203.099.255.255 서사모아
203.099.000.000~203.099.071.255 뉴질랜드
203.098.224.000~203.098.255.255 페루
203.096.000.000~203.098.063.255 뉴질랜드
203.095.128.000~203.095.255.255 대만
203.095.000.000~203.095.063.255 중국
203.094.224.000~203.094.255.255 인도
203.094.000.000~203.094.063.255 중국
203.092.224.000~203.092.255.255 호주
203.092.000.000~203.092.063.255 중국
203.091.064.000~203.091.255.255 호주
203.091.000.000~203.091.063.255 중국
203.090.224.000~203.090.255.255 홍콩
203.090.000.000~203.090.063.255 중국
203.088.064.000~203.088.255.255 호주
203.087.224.000~203.088.063.255 중국
203.088.064.000~203.088.255.255 호주
203.087.224.000~203.088.063.255 중국
203.087.000.000~203.087.063.255 호주
203.080.000.000~203.086.255.255 홍콩
203.079.000.000~203.079.255.255 대만
203.078.224.000~203.078.255.255 필리핀
203.078.000.000~203.078.031.255 대만
203.077.224.000~203.077.255.255 인도네시아
203.077.000.000~203.077.127.255 대만
203.076.000.000~203.076.255.255 호주
203.064.000.000~203.075.255.255 대만
203.000.000.000~203.255.255.255 아세아주
203.000.000.000~203.063.255.255 호주
202.208.000.000~202.255.255.255 일본
202.020.008.000~202.020.015.255 호주
202.020.000.000~202.020.007.255 뉴질랜드
202.016.000.000~202.019.255.255 일본
202.015.000.000~202.015.255.255 일본
202.014.254.000~202.014.254.255 뉴질랜드
202.014.252.000~202.014.253.255 뉴질랜드
202.014.248.000~202.014.251.255 호주
202.014.240.000~202.014.247.255 호주
202.014.239.000~202.014.239.255 호주
202.014.234.000~202.014.234.255 호주
202.014.232.000~202.014.233.255 호주
202.014.230.000~202.014.231.255 호주
202.014.229.000~202.014.229.255 호주
202.014.228.000~202.014.228.255 뉴질랜드
202.014.224.000~202.014.227.255 뉴질랜드
202.014.223.000~202.014.223.255 호주
202.014.222.000~202.014.222.255 홍콩
202.014.220.000~202.014.221.255 호주
202.014.219.000~202.014.219.255 호주
202.014.218.000~202.014.218.255 뉴질랜드
202.014.216.000~202.014.217.255 뉴질랜드
202.014.208.000~202.014.215.255 호주
202.014.192.000~202.014.207.255 호주
202.014.176.000~202.014.191.255 호주
202.014.172.000~202.014.175.255 호주
202.014.170.000~202.014.171.255 호주
202.014.169.000~202.014.169.255 호주
202.014.168.000~202.014.168.255 뉴질랜드
202.014.167.000~202.014.167.255 뉴질랜드
202.014.166.000~202.014.166.255 호주
202.014.165.000~202.014.165.255 한국
202.014.164.000~202.014.164.255 태국
202.014.162.000~202.014.163.255 태국
202.014.160.000~202.014.161.255 호주
202.014.156.000~202.014.159.255 호주
202.014.155.000~202.014.155.255 호주
202.014.154.000~202.014.154.255 싱가폴
202.014.153.000~202.014.153.255 싱가폴
202.014.152.000~202.014.152.255 호주
202.014.151.000~202.014.151.255 호주
202.014.150.000~202.014.150.255 뉴질랜드
202.014.149.000~202.014.149.255 뉴질랜드
202.014.148.000~202.014.148.255 호주
202.014.144.000~202.014.147.255 호주
202.014.143.000~202.014.143.255 호주
202.014.142.000~202.014.142.255 뉴질랜드
202.014.140.000~202.014.141.255 뉴질랜드
202.014.138.000~202.014.139.255 호주
202.014.137.000~202.014.137.255 호주
202.014.136.000~202.014.136.255 뉴질랜드
202.014.135.000~202.014.135.255 뉴질랜드
202.014.134.000~202.014.134.255 호주
202.014.132.000~202.014.133.255 호주
202.014.128.000~202.014.131.255 호주
202.014.127.000~202.014.127.255 뉴질랜드
202.014.126.000~202.014.126.255 호주
202.014.124.000~202.014.125.255 호주
202.014.120.000~202.014.123.255 호주
202.014.118.000~202.014.119.255 호주
202.014.117.000~202.014.117.255 태국
202.014.116.000~202.014.116.255 호주
202.014.114.000~202.014.115.255 뉴질랜드
202.014.112.000~202.014.113.255 호주
202.014.110.000~202.014.111.255 호주
202.014.108.000~202.014.109.255 뉴질랜드
202.014.106.000~202.014.107.255 뉴질랜드
202.014.104.000~202.014.105.255 호주
202.014.103.000~202.014.103.255 한국
202.014.102.000~202.014.102.255 뉴질랜드
202.014.101.000~202.014.101.255 호주
202.014.100.000~202.014.100.255 뉴질랜드
202.014.096.000~202.014.099.255 뉴잴랜드
202.014.095.000~202.014.095.255 호주
202.014.094.000~202.014.094.255 태국
202.014.092.000~202.014.093.255 태국
202.014.090.000~202.014.091.255 태국
202.014.089.000~202.014.089.255 호주
202.014.084.000~202.014.084.255 뉴질랜드
202.014.082.000~202.014.083.255 뉴질랜드
202.014.081.000~202.014.081.255 호주
202.014.080.000~202.014.080.255 홍콩
202.014.076.000~202.014.079.255 호주
202.014.074.000~202.014.075.255 뉴질랜드
202.014.073.000~202.014.073.255 뉴질랜드
202.014.068.000~202.014.068.255 홍콩
202.014.067.000~202.014.067.255 홍콩
202.014.066.000~202.014.066.255 호주
202.014.064.000~202.014.065.255 호주
202.014.032.000~202.014.063.255 뉴질랜드
202.014.016.000~202.014.031.255 뉴질랜드
202.014.008.000~202.014.015.255 대만
202.014.000.000~202.014.007.255 호주
202.013.254.000~202.013.254.255 일본
202.013.252.000~202.013.253.255 일본
202.013.248.000~202.013.251.255 일본
202.013.240.000~202.013.247.255 일본
202.013.224.000~202.013.239.255 일본
202.013.192.000~202.013.223.255 일본
202.013.128.000~202.013.191.255 일본
202.013.000.000~202.013.127.255 일본
202.012.242.000~202.012.242.255 호주
202.012.240.000~202.012.241.255 호주
202.012.224.000~202.012.239.255 호주
202.012.192.000~202.012.223.255 호주
202.012.128.000~202.012.191.255 호주
202.012.126.000~202.012.127.255 호주
202.012.125.000~202.012.125.255 호주
202.012.124.000~202.012.124.255 뉴질랜드
202.012.122.000~202.012.123.255 뉴질랜드
202.012.120.000~202.012.121.255 호주
202.012.119.000~202.012.119.255 호주
202.012.116.000~202.012.116.255 태국
202.012.112.000~202.012.115.255 호주
202.012.110.000~202.012.111.255 호주
202.012.109.000~202.012.109.255 호주
202.012.108.000~202.012.108.255 뉴질랜드
202.012.106.000~202.012.107.255 호주
202.012.104.000~202.012.105.255 뉴질랜드
202.012.102.000~202.012.103.255 뉴질랜드
202.012.101.000~202.012.101.255 뉴질랜드
202.012.100.000~202.012.100.255 호주
202.012.098.000~202.012.099.255 호주
202.012.097.000~202.012.097.255 태국
202.012.096.000~202.012.096.255 뉴질랜드
202.012.094.000~202.012.095.255 싱가폴
202.012.092.000~202.012.093.255 호주
202.012.091.000~202.012.091.255 뉴질랜드
202.012.090.000~202.012.090.255 호주
202.012.088.000~202.012.089.255 호주
202.012.086.000~202.012.087.255 호주
202.012.084.000~202.012.085.255 뉴질랜드
202.012.080.000~202.012.083.255 뉴질랜드
202.012.076.000~202.012.079.255 뉴질랜드
202.012.075.000~202.012.075.255 호주
202.012.074.000~202.012.074.255 태국
202.012.073.000~202.012.073.255 태국
202.012.072.000~202.012.072.255 호주
202.012.071.000~202.012.071.255 호주
202.012.070.000~202.012.070.255 뉴질랜드
202.012.068.000~202.012.069.255 호주
202.012.064.000~202.012.067.255 호주
202.012.032.000~202.012.063.255 호주
202.012.028.000~202.012.031.255 APNIC
202.012.027.000~202.012.027.255 APNIC
202.012.026.000~202.012.026.255 문라이달루살란
202.012.024.000~202.012.025.255 호주
202.012.022.000~202.012.023.255 호주
202.012.020.000~202.012.021.255 APNIC
202.012.019.000~202.012.019.255 APNIC
202.012.018.000~202.012.018.255 필리핀
202.012.017.000~202.012.017.255 필리핀
202.012.008.000~202.012.015.255 일본
202.012.004.000~202.012.007.255 홍콩
202.012.003.000~202.012.003.255 뉴질랜드
202.012.002.000~202.012.002.255 싱가폴
202.012.001.000~202.012.001.255 호주
202.012.000.000~202.012.000.255 뉴질랜드
202.011.000.000~202.011.255.255 일본
202.010.000.000~202.010.255.255 호주
202.009.224.000~202.009.255.255 호주
202.009.128.000~202.009.159.255 인도
202.009.064.000~202.009.095.255 말레이시아
202.009.000.000~202.009.015.255 호주
202.008.224.000~202.008.255.255 필리핀
202.008.128.000~202.008.159.255 APNIC
202.008.096.000~202.008.127.255 호주
202.008.094.000~202.008.095.255 싱가폴
202.008.072.000~202.008.075.255 태국
202.008.064.000~202.008.071.255 태국
202.008.032.000~202.008.039.255 호주
202.008.016.000~202.008.031.255 호주
202.008.012.000~202.008.012.255 뉴질랜드
202.008.008.000~202.008.011.255 뉴질랜드
202.008.004.000~202.008.005.255 싱가폴
202.008.000.000~202.008.003.255 싱가폴
202.007.224.000~202.007.255.255 호주
202.007.128.000~202.007.159.255 홍콩
202.007.032.000~202.007.063.255 뉴질랜드
202.007.008.000~202.007.015.255 호주
202.007.004.000~202.007.007.255 뉴질랜드
202.007.000.000~202.007.003.255 APNIC
202.006.128.000~202.006.255.255 APNIC
202.006.112.000~202.006.115.255 호주
202.006.111.000~202.006.111.255 태국
202.006.110.000~202.006.110.255 뉴질랜드
202.006.109.000~202.006.109.255 뉴질랜드
202.006.108.000~202.006.108.255 호주
202.006.107.000~202.006.107.255 태국
202.006.106.000~202.006.106.255 호주
202.006.103.000~202.006.103.255 일본
202.006.102.000~202.006.102.255 싱가폴
202.006.100.000~202.006.101.255 태국
202.006.098.000~202.006.098.255 일본
202.006.095.000~202.006.095.255 한국
202.006.093.000~202.006.093.255 싱가폴
202.006.091.000~202.006.092.255 호주
202.006.090.000~202.006.090.255 태국
202.006.088.000~202.006.089.255 APNIC
202.006.084.000~202.006.087.255 뉴질랜드
202.006.008.000~202.006.083.255 호주
202.006.005.000~202.006.007.255 뉴질랜드
202.006.003.000~202.006.004.255 호주
202.005.224.000~202.005.255.255 대만
202.005.128.000~202.005.159.255 파키스탄
202.005.096.000~202.005.127.255 호주
202.005.032.000~202.005.063.255 니까라과
202.005.000.000~202.005.031.255 호주
202.004.159.000~202.004.223.255 홍콩
202.004.096.000~202.004.127.255 니까라과
202.004.032.000~202.004.063.255 서사모아
202.004.016.000~202.004.024.255 뉴질랜드
202.004.000.000~202.004.015.255 필리핀
202.003.128.000~202.003.255.255 발서블리니시아
202.003.096.000~202.003.127.255 인도네시아
202.003.016.000~202.003.031.255 뉴질랜드
202.003.000.000~202.003.015.255 호주
202.002.128.000~202.002.255.255 APNIC
202.002.064.000~202.002.095.255 홍콩
202.002.052.000~202.002.055.255 대만
202.002.032.000~202.002.051.255 홍콩
202.002.016.000~202.002.031.255 호주
202.002.008.000~202.002.015.255 뉴질랜드
202.002.004.000~202.002.007.255 뉴질랜드
202.002.000.000~202.002.003.255 호주
202.001.240.000~202.001.255.255 바부신기네아(?)
202.001.224.000~202.001.231.255 호주
202.001.192.000~202.001.223.255 마얼태브(?)
202.001.160.000~202.001.191.255 솔로몬군도(?)
202.001.064.000~202.001.159.255 싱가폴
202.001.032.000~202.001.063.255 바부신기네아(?)
202.001.016.000~202.001.031.255 호주
202.001.008.000~202.001.015.255 뉴질랜드
202.001.006.000~202.001.007.255 홍콩
202.001.000.000~202.001.004.255 호주
202.000.192.000~202.000.255.255 미국
202.000.188.000~202.000.191.255 프랑스
202.000.180.000~202.000.183.255 홍콩
202.000.160.000~202.000.179.255 홍콩
202.000.156.000~202.000.159.255 뉴갈레도니아(?)
202.000.154.000~202.000.154.255 호주
202.000.153.000~202.000.153.255 뉴질랜드
202.000.152.000~202.000.152.255 싱가폴
202.000.151.000~202.000.151.255 뉴질랜드
202.000.149.000~202.000.150.255 싱가폴
202.000.148.000~202.000.148.255 호주North Ryde
202.000.128.000~202.000.147.255 홍콩
202.000.127.000~202.000.127.255 싱가폴
202.000.124.000~202.000.125.255 뉴질랜드
202.000.122.000~202.000.123.255 홍콩
202.000.121.000~202.000.121.255 뉴질랜드
202.000.117.000~202.000.120.255 태국
202.000.116.000~202.000.116.255 인도네시아
202.000.113.000~202.000.115.255 호주
202.000.112.000~202.000.112.255 홍콩
202.000.111.000~202.000.111.255 태국
202.000.110.000~202.000.110.255 중국계획설계중심(CPDC)
202.000.105.000~202.000.109.255 호주
202.000.104.000~202.000.104.255 홍콩
202.000.103.000~202.000.103.255 인도네시아
202.000.101.000~202.000.102.255 호주
202.000.100.000~202.000.100.255 홍콩
202.000.098.000~202.000.099.255 호주
202.000.097.000~202.000.097.255 뉴질랜드
202.000.095.000~202.000.096.255 호주
202.000.094.000~202.000.094.255 말레이시아
202.000.093.000~202.000.093.255 일본
202.000.090.000~202.000.092.255 호주
202.000.088.000~202.000.089.255 싱가폴
202.000.085.000~202.000.087.255 호주
202.000.084.000~202.000.084.255 뉴질랜드
202.000.083.000~202.000.083.255 호주East Maitland
202.000.082.000~202.000.083.255 호주
202.000.081.000~202.000.081.255 인도네시아
202.000.080.000~202.000.080.255 바부신기네아(?)
202.000.079.000~202.000.079.255 태국
202.000.077.000~202.000.078.255 홍콩
202.000.076.000~202.000.076.255 일본
202.000.074.000~202.000.075.255 호주
202.000.072.000~202.000.073.255 일본
202.000.071.000~202.000.071.255 싱가폴
202.000.067.000~202.000.070.255 호주
202.000.065.000~202.000.066.255 일본
202.000.064.000~202.000.064.255 호주
202.000.032.000~202.000.063.255 뉴질랜드
202.000.016.000~202.000.031.255 필리핀
202.000.011.000~202.000.015.255 호주
202.000.010.000~202.000.010.255 뉴질랜드
202.000.000.000~203.255.255.255 아세아주
202.000.000.000~202.000.009.255 호주
201.000.000.000~201.255.255.000 미국중부/남부(IANA)
200.000.000.000~200.255.255.000 미국중부/남부
199.107.119.000~199.107.119.255 대만디스니서비스회사
199.000.000.000~199.255.255.000 미국/카나다
198.112.169.000~198.112.169.255 홍콩
198.000.000.000~198.255.255.000 미국
197.000.000.000~197.255.255.000 미국중부/남부(IANA)
196.000.000.000~196.255.255.000 남아프리카/갈리버해
195.242.064.000~195.242.079.255 프랑스파리
195.163.072.000~195.163.079.255 네델란드
195.153.000.000~195.153.255.255 영국
195.146.128.000~195.146.143.255 슬로벤스코전신국
195.112.176.000~195.112.176.003 대만펠리프회사
195.082.192.000~195.082.223.255 단마르크
194.117.103.132~194.117.103.132 대만Scino Pharm
194.117.103.087~194.117.103.087 대만펠리프회사
194.117.103.025~194.117.103.025 대만Semiconductor Manufacturing
194.117.103.017~194.117.103.017 대만Hoechst회사
194.117.103.011~194.117.103.011 대만펠리프회사
193.194.160.000~193.194.191.255 기네
193.193.199.000~193.193.199.255 우크란Uzhgorod Trans Com Ltd.
193.193.193.000~193.193.199.255 우크란지프
193.166.000.000~193.166.255.255 핀란드
193.000.000.000~195.255.255.000 유럽
192.245.208.000~192.245.208.255 홍콩
192.207.091.000~192.207.091.255 홍콩
192.203.232.000~192.203.232.255 홍콩
192.203.041.000~192.203.041.255 싱가폴
192.188.175.000~192.188.175.255 인도네시아Oracle Systems Indonesia
192.188.174.000~192.188.174.255 Oracle Systems Philippines
192.188.173.000~192.188.173.255 Oracle Systems Puerto Rico
192.188.172.000~192.188.172.255 태국Oracle Systems Thailand
192.188.171.000~192.188.171.255 대만Oracle Systems Taiwan
192.188.170.000~192.188.170.255 중국Oracle China,Inc.
171.208.000.000~171.220.255.255 미국DAHA-AOL사용자
169.208.000.000~169.223.255.255 아세아주
168.122.000.000~168.122.255.255 미국포스턴대학
167.216.000.000~167.216.255.255 홍콩
165.021.000.000~165.021.255.255 싱가폴
162.042.000.000~162.042.255.255 미국아리조나주
161.207.000.000~161.207.255.255 중국석유회사
161.142.048.000~161.142.048.255 말레시아Kuala Lumpur
161.142.000.000~161.142.255.255 말레시아
161.064.000.000~161.064.255.255 홍콩
161.053.000.000~161.053.255.255 유고슬라비아그루지아사그레쁘전산대학
159.226.001.000~159.226.003.255 중국CNNIC,중국인터넷정보쎈터
159.226.000.000~159.226.255.255 중국과학원
158.182.000.000~158.182.255.255 홍콩
158.132.000.000~158.132.255.255 홍콩
155.069.000.000~155.069.255.255 싱가폴NANYANG회사
154.005.000.000~154.005.255.255 카나다
152.000.000.000~152.255.255.255 미국
149.099.133.000~149.099.133.255 카나다Seneca College대학
147.008.000.000~147.008.255.255 홍콩
144.214.000.000~144.214.255.255 홍콩
144.092.000.000~144.092.255.255 미국위스콘신주립대학
143.089.000.000~143.089.255.255 홍콩
140.109.000.000~140.138.255.255 대만
140.096.000.000~140.096.255.255 대만
140.092.000.000~140.092.255.255 대만
139.175.000.000~139.175.255.255 대만
139.165.000.000~139.165.255.255 벨기에
138.077.000.000~138.077.255.255 호주중켄도주립대학
137.189.000.000~137.189.255.255 홍콩
137.132.000.000~137.132.255.255 싱가폴
134.208.000.000~134.208.255.255 대만
133.223.000.000~139.223.255.255 대만
132.246.027.000~132.246.027.255 북경교육망
131.246.000.000~131.246.255.255 독일캑서스로등대학
131.230.000.000~131.230.255.255 미국일렐이주남부대학
131.107.003.000~131.107.003.255 Microsoft일본회사
131.107.000.000~131.107.255.255 Microsoft회사
130.039.000.000~130.039.255.255 미국루이스안나주립대학
129.070.000.000~129.070.255.255 독일바등-부텡보주대학
129.069.000.000~129.069.255.255 독일스투가테대학
064.000.000.000~126.255.255.255 보류주소
063.000.000.000~063.255.255.255 미국NIC등록기구
062.000.000.000~062.255.255.255 유럽NIC등록기구
061.008.000.000~061.008.031.255 호주
061.000.000.000~061.255.255.255 아세아주/태평양NIC인터넷관리센터
058.000.000.000~060.255.255.255 보류주소
057.000.000.000~057.255.255.255 프랑스국제항공통신협회
056.000.000.000~056.255.255.255 미국북칼레로나(미국우체국)
055.000.000.000~055.255.255.255 미국포기니아(미국육군부대)
054.000.000.000~054.255.255.255 미국뉴젤시주(Merck公司)
053.000.000.000~053.255.255.255 독일벤치자동차
052.000.000.000~052.255.255.255 미국데라워주dupont公司
051.000.000.000~051.255.255.255 영국사회보험안전부
049.000.000.000~050.255.255.255 미국알렉상나주JITCNET
048.000.000.000~048.255.255.255 미국뉴욕(Prudential Securities Inc)
047.000.000.000~047.255.255.255 카나다Bell실험실
024.192.000.000~024.195.255.255 아세아주
010.199.000.000~010.253.255.255 홍콩169사용자
Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 01:22
출처 블로그 > 관리 거의 안함..ㅡㅡ;;
원본 http://blog.naver.com/tz1977/60001190676
Snort란?
snort는 실시간 트래픽 분석과 IP 네트워크 상에서 패킷 로깅이 가능한 가벼운(lightweight) 네트워크 침입탐지시스템이다. snort는 프로토콜 분석, 내용 검색/매칭을 수행할 수 있으며 오버플로우, Stealth 포트스캔, CGI 공격, SMB 탐색, OS 확인 시도 등의 다양한 공격과 스캔을 탐지할 수 있다.

테스트서버: OS ; RedHat Linux 9.0

1. 필요한 파일이 2개 또는 3개 일 수 있다.
1) snort-2.1.0.tar.gz : www.snort.org에서 최신버젼을 받을 수 있다.
2) libpcap-0.7.2-1.i386.rpm : Linux9.0시디에서 구했다... www.rpmfind.com에서도 구할 수 있다.
3) pcre-4.5.tar.gz : ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 에서 구할 수 있다.

2. pcre는 이미 설치되어 있을 수도 있으니..이 파일은 snort를 configure할때 에러가 난다면(없으믄 에러..ㅡㅡ;;) 다운 받자.

3. 이제 설치해보도록 한다.

1) 적당한 위치에 파일들을 옮긴 후 그 위치로 이동한다.
mv ./snort-2.1.0.tar.gz /usr/local/src
mv ./libpcap-* /usr/local/src
mv ./pcre-* /usr/local/src
cd /usr/local/src

2) libpcap을 설치한다.
rpm -Uvh libpcap-0.7.2-1.i386.rpm

3) snort의 압축을 해제 후, 디렉토리 통째로 이동시킨다. 그 후 해당 디렉토리로 이동.
tar xvfz snort-2.1.0.tar.gz
mv snort-2.1.0 /usr/local/snort
cd /usr/local/snort

4) configure , make , make install을 한번에 한다.
./configure && make && make install
* 팁1: &&와 ;의 차이점 --> &&로 명령어를 묶을경우 에러가 나면 실행을 중지하지만, ;로 묶을경우 무시하고 설치한다.

5) 만약 여기서 에러가 난다면(pcre에러) pcre를 설치해야한다.
pcre의 설치는 간단하므로 간략하게만 설명한다.
압축해제 -> configure -> make -> make install
tar xvfz pcre-4.5.tar.gz -> cd pcre-4.5 -> ./configure && make && make install

6) snort의 설치가 4)번처럼 잘 되었다면 로그 기록을 위한 설정이 필요하다.
  A) 로그기록을 위한 디렉토리 설정
     ㄱ) mkdir /var/log/snort
     ㄴ) chmod 700 /var/log/snort
  B) /usr/local/snort/etc/snort.conf 파일의 환경설정
     ㄱ) var HOME_NET 의 IP부분을 any -> 자기서버IP로 변경해준다.
     ㄴ) include $RULE_PATH/web-iis.rules 부분은 IIS를 위한 설정이므로, 주석처리한다. (#)

4. 이제 실행해보자.

/usr/local/snort/src/snort -l /var/log/snort -A fast -c /usr/local/snort/etc/snort.conf -D -N

명령어 설명 : ( 이부분은 phpschool에서 참조... )

참조시작 {
-l 은 로그 디렉토리 설정 부분이고
-c 는 설정파일 부분이고
-A 는 로그기록을 어떻게 할꺼냐 .. full,none,fast 세가지가 있습니다.
-D 는 데몬으로 동작한다는것이고
-N 은 로그를 남기지 않고 경고메시지만 남긴다는 의미입니다.
※. -N 옵션을 주지 않으면 서버에 접근하는 아이피를 디렉토리로 만들어서 로그가 남게 된다.(조심)

snort 실행 옵션은 아래와 같습니다.

-A Set alert mode: fast, full, or none (alert file alerts only)
-a Display ARP packets
-b Log packets in tcpdump format (much faster!)
-c <rules> Use Rules File <rules>
-C Print out payloads with character data only (no hex)
-d Dump the Application Layer
-D Run Snort in background (daemon) mode
-e Display the second layer header info
-F <bpf> Read BPF filters from file <bpf>
-g <gname> Run snort gid as <gname> group (or gid) after initialization
-h <hn> Home network = <hn>
-i <if> Listen on interface <if>
-I Add Interface name to alert output
-l <ld> Log to directory <ld>
-n <cnt> Exit after receiving <cnt> packets
-N Turn off logging (alerts still work)
-o Change the rule testing order to Pass|Alert|Log
-O Obfuscate the logged IP addresses
-p Disable promiscuous mode sniffing
-P <snap> set explicit snaplen of packet (default: 1514)
-q Quiet. Don't show banner and status report
-r <tf> Read and process tcpdump file <tf>
-s Log alert messages to syslog
-S <n=v> Set rules file variable n equal to value v
-t <dir> Chroots process to <dir> after initialization
-u <uname> Run snort uid as <uname> user (or uid) after initialization
-v Be verbose
-V Show version number
-X Dump the raw packet data starting at the link layer

rule 파일은 http://www.snort.org/downloads/snortrules.tar.gz 에서 받으시면 되고
rule 에 대한 자세한 설명은 http://www.snort.org/cgi-bin/done.cgi 에서 확인 하실 수 있습니다.
} 참조 끝

5. snort에 의한 로그파일은 /var/log/snort에 쌓이게된다. ( alert )
Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 01:20
출처 블로그 > faceuptoit님의 블로그
원본 http://blog.naver.com/faceuptoit/100004435796


일괄처리(Batch) 파일 #1

1.배치파일(Batch File, 일괄처리용 화일)

1.1. 배치파일?
Batch(배치)는 '한 묶음','한벌'의 의미하며, 배치파일은 여러 가지 명령어를 한 파일에 모아 작업하는 파일, 즉 하나의 일을 처리하기 위해 여러번 내리는 명령어를 한 번만에 처리할 수 있도록 만들어 놓은 실행파일이다.

  ① 확장자 이름은 반드시 'BAT'이어야 한다.
  ② 파일명은 도스의 내부명령어 이름을 피하라.
  ③ COM, EXE 파일의 이름을 피하라.

  ④ 명령어 이름이 서로 같아 충돌할 때, DOS는 도스키-->내부명령-->외부명령( *.COM-->*.EXE)-->*.BAT) 순으로 실행한다.

    다만 '파일명.BAT'라고 확장자 이름까지 써서 명령을 내리면 이런 문제는 해결된다.

  ⑤ BAT파일은 표준 ASCII 문장(Text) 파일이어야 한다.


1.2. BAT파일 만드는 방법.
일반 도스 명령어와 배치전용 명령어를 사용하여 다음의 3가지 방식을 사용하여 아스키 문장파일 형식으로 만든다.

  ① COPY명령사용 ....  C:\>COPY CON XXXX.BAT
  ② 문서편집기 이용 ... 'EDIT', 'SAN'
  ③ 문서 작성기(WordProcessor) ..  아래한글,훈민정음 등


작성 예①)  C:\>COPY CON SAMPLE.BAT  <엔터>
─────       CLS
                DIR A:
                V3 C:
                ^Z
                1 File(s) Copied

<설명1> COPY 명령을 사용하여 텍스트 파일 만드는 방법을 이용한다.
CON은 장치 파일명으로 여기서는 키보드를 지칭한다.키보드로 입력한 문자를 SAMPLE.BAT라는 파일명으로 복사.출력하라는 뜻이다.

입력한 배치 내용을 보면
  화면을 깨끗이지우고(CLS), A드라이브의 파일목록을 보이라, 그리고 C 디스크에 바이러스 감염 여부를 점검.치료하라는 명령이다.

줄을 바꿀 때는 항상 엔터하면 된다. 끝낼 때는 언제나 Ctrl+Z 또는 F6키를 누르고 엔터하면 1개 파일이 복사되었다는 메시지가 나오면서 C루트에 SAMPLE.BAT란 파일이 1개 생긴다.

<실행> C:\>SAMPLE <엔터>하면 배치파일 내용 순서데로 명령을 실행한다.

-----

작성 예②)  C:\>EDIT <엔터>

     도스 편집기 화면이 뜬다.  이때  ESC키를 한번 눌러 메시지 상자를 제거하고 깨끗한 화면에다 첫째 줄부터 입력하되, 줄을 바꿀 때는 엔터한다.

               CLS
               DIR A:
               V3 C:

끝내려고 저장글쇠(@F,S)를 누르면 파일이름을 써넣으라고 상자자 나온다. SAMPLE.BAT라고 입력하고 <엔터>하여 저장한 후, 에디트를 끝(@F, X)낸다.그러면 C루트 디렉토리에 SAMPLE.BAT 라는 배치파일이 생긴다.

<실행> C:\>SAMPLE <엔터>하면    C루트에 있는 SAMPLE.BAT 파일이 실행된다.


******* 배치파일 내용에 파일스펙 경로명을 쓸 때 주의점.****

ⓐ 배치파일 내용 중에
   C:\GAME\SUPER\SUPER.EXE 라고 해놓으면

현재 도스 작업방을 바꾸지 말고 C:\GAME\SUPER\ 방에있는 SUPER.EXE를 실행하라는 뜻이기 때문에 경우에 따라서는 실행이 되지 않는다.

ⓑ 배치 내용을 아래와 같이 하면 틀림없이 실행하게 된다.
  C:
  CD\GAME\SUPER
  SUPER

현재 도스작업방이 먼저 C드라이브로 바뀌고,절대경로명 CD\GAME\SUPER
디렉토리로 이동한 후에 SUPER.EXE 파일을 실행한다            ******


1.3.배치파일 명령어들

① 일반적인 도스명령를 그대로 사용한다.

  CLS  COPY  DEL  DIR  DATE  TIME   PAYH   PROMPT  CHKDSK 등등.

② 배치에만 사용하는 전용 명령가 있다.
  ECHO   REM   PAUSE  CALL   GOTO    CHOICE   IF   FOR   SHIFT
(메아리)(설명) (쉼)  (부름) (가기)   (선택) (조건)(순환) (옮김)


ⓐ REM
   [베치파일 속에 달고 싶은 설명.주석]....설명이 화면에 나옴.

ⓑ PAUSE
   배치파일 실행중 일시 멈추게함.
   화면에 'Press any key to continue...'
          (계속하려면 아무키나 누르세요)

  배치실행을 중단하려면 Ctrl+C키를 누른다. 그러면 화면에
           'Terminate batch job (Y/N)?'
          (배치작업을 끝내겠읍니까?)  Yes / No

ⓒ ECHO 명령
형식> ECHO 문자열
      에코명령 다음에 오는 문자열을 화면에 나타낸다.

    ECHO ON
      이후부터 '명령어'라인을 화면에 보인다.(도스 초기값)

    ECHO OFF
      이후 실행되는 명령어 라인을 화면에 나타내지 않는다.
      화면이 깨끗하고, 화면출력속도.가독성 증가한다.
      'ECHO OFF'라는 그 자체까지 보이지 않게 하려면 @ 을 앞에 쓴
      다.( @ECHO OFF )

    ECHO
      현재 ECHO ON/OFF 상태를 확인한다.


<예> C:\>COPY CON EDIT2.bat
   ECHO OFF
                 이후에 실행되는 명령어는 화면에 나타나지 않는다.
                 화면에 ECHO OFF 자체는 나타난다.

   TB
                 태백한글을 메모리에 상주 띄우기.
                 각자 지원되는 다른 한글코드(HANME,HT,DKBY 등)를
                 실행하면 된다.
                 한글도스인 때는 HBIOS.COM을 실행한다.

   PAUSE
               잠시 중지. 엔터하면 다시 진행한다.

   CLS
              화면청소

   ECHO 'This is Hangul Edit.'
                            '문자열'을 화면에 출력한다.

   PAUSE
   REM NOW,DOS EDIT IS HANGUL EDITOR.

                REM 다음에 오는 설명은 화면에 나오지 않는다. 다만
                사용자가 배치파일 내용을 볼 때 참고할 내용이다.

   ECHO ON
              이후에 실행되는 명령어는 화면에 나타남

   EDIT
              도스 에디터 화면이 나오면 한글로 문서를 작성.저장한
              후 끝낸다.

   @ECHO OFF

             이후에 실행되는 명령어는 화면에 나타나지 않는다.
             ECHO OFF자체도 나타나지않음.

   TB/U
            태백한글 메모리서 제거한다.

   CLS
   ^Z
           CTRL+Z 또는 F6를 누른다.

   1 File(s) Copied

  실습을 위하여 일부러 여러가지 명령 종류를 써 보았으며,한글로 설 명을 하느라고 줄이 떨어졌으나 각자 실습할 때는 영문글자 부분만 쓰고 엔터하여 줄울 바꾸고 줄간격을 붙여가며 쓴다.

<실행 예>  C:\>EDIT2 <엔터> 하면

위의 내용을 순서데로 실행하고 도스 문서편집기가 화면에 나타난다. 문서작성기를 끝내면 한글프로그램을 메모리에서 제거하고 도스로 나온다.  (계속)


제14장 배치파일 #2 (계속)

1.4 배치파일 전용 명령에서
? 판단과 분기에 관한 명령  ....  CALL, CHOICE, IF, GOTO

앞에서 공부한 배치파일의 경우는 입력된 명령어들의 순서데로 실행되었었지만, 판단과 분기의 명령들은 명령어의 실행의 흐름을 사용자가 임의로 변경,지정할 수있어 배치파일의 기능을 보다 강력하게 한다.

분기 명령..배치파일의 순차적 수행을 필요에 따라 변경할 때 사용하며
          배치파일에 프로그램적 기능을 갖게하는 명령이다.

조건분기(Conditional Branching).......IF명령

무조건분기(Unconditional Branching)...GOTO명령

① CALL [배치파일 인자]

배치파일 실행 중 다른 배치파일을 도중에 호출하여 실행시키고 다시
원래 배치파일로 돌아오게 하는 명령이다.

<예>  H1.BAT의 내용이 'DIR C:\ > A:MDIRLIST.TXT' ( C루트의 파일목
록을 A드라이브에 MDIRLIST.TXT 란 파일로 출력하라) 이라고 하자.

  C:\>COPY CON H2.BAT
    CALL H1.BAT
    TYPE A:MDIRLIST
    ^Z

<실행> C:\>H2 엔터하면 H1.BAT란 배치파일을 불러(CALL) 실행하여 MDIRLIST.TXT 파일을 A드라이브에 만든 후, 다시 H2.BAT 파일로 돌아와서 A드라이브의 'MDIRLIST.TXT' 파일을 화면에 타이프해 보인다.


②  IF 조건

주어진 조건에 따라 명령을 선별적으로 선택.실행케 하는 명령이다.

IF EXIST [파일이름] [명령]
         찾는 파일이 존재하면 명령을 실행하라

IF NOT EXIT [파일이름] [명령]
         찾는 파일이 없으면 명령을 실행하라

<예> IF EXIST *.BAK DEL *.BAK
       BAK라는 백업파일이 있으면 모두 지워버리라.


IF [NOT] "문자열1" == "문자열2" [명령]
    "문자열1"과 "문자열2"가 서로 일치 [불일치] 하면 명령을 실행하라.                     (양쪽 비교 문자열의 영문 대소문자를 구분한다)
    ==은 EQ로, !=은 같지 않다는 부호인데 NE로 대신할 수 있다.
   문자열은 " " 으로 반드시 구분하고 부호와는 한 칸 띈다.

<예> C:\>COPY CON TEST1.BAT
    @ECHO OFF
    IF "%1" == "A" ECHO TESTING A
    IF NOT "%1" == "A" ECHO IT IS NOT EQUAL.
    ^z

<실행> C:\>TEST1 A 엔터하면 화면에 TESTING A 라고 표시한다.
      C:\>TEST1 C 엔터하면 A와 같지 않으므로 IT IS NOT EQUAL 라고 표시한다.

IF [NOT] ERRORLEVEL [값] [명령]
     IF명령 바로 앞에서 수행되었던 프로그램이 수행을 마치면서 남긴 종료코드(ExitCode)를 검사하여 지정 값보다 크면(작으면) 명령을 실행하라는 뜻이다.

종료코드를 발생하는 명령어(FORMAT,XCOPY,COPY,BACKUP,RESTORE 등 일
반 도스명령어들 메뉴얼 참조)들은 0~255 범위에서 종료코드(EXITCODE)
값을 가지는데
에를 들면 XCOPY명령에서 성공적 수행일 때는 0, 화일이 없을 때 1, CTRL+C로 중단하면 2, 초기화 오류발생 때는 4, 디스크 에러에는 5를 반환하는 식으로 정해저 있다.

예>  C:\>COPY CON XY.BAT
        XCOPY %1 A:
        IF NOT ERRORLEEVEL 0 ECHO COPY FAILED !
        IF ERRORLEVEL 0 ECHO SUCCESSFULLY !
        ^Z

실행> C:\>XY *.* 엔터하면 성공적 수행여부에 따라  'FAILED !' 또는
                         'SUCCESSFULLY !' 라는 메시지가 나온다.

③ GOTO [레이블이름]
  레이블 이름이 있는 행으로 실행 순서를 옮긴다.
  '레이블(Label)'은 8자이 내로, 레이블 앞에는 콜론(:)을 사용한다.

<예> 현재 디렉토리에 *.HWP 파일을 C:\HNCDOC 디렉토리로 옮겨주는
     배치파일을 만들어 보자.

   C:\>COPY CON HWPMV.BAT
      @ECHO OFF
      IF NOT EXIST *.HWP GOTO FIRST
      MOVE /-Y *.HWP C:\HNCDOC
      ECHO HWPFILE MOVE DONE !
      GOTO END
      :FIRST
      ECHO *.HWP FILE NOT FOUND !
      :END
      ^Z

실행> C:\>HWPMV  엔터하면 C루트 디렉토리에 있는 모든 HWP 파일을 C:\HNCDOC 디렉토리로 옮기고 'HWP 파일을 모두 옮겼다'는 메시지를 화면에 보이고 END(끝) 레이블로 와서 도스상태로 빠저나 온다. 옮길 HWP 파일이 없으면 ' HWP 파일을 찾지 못했다'는 메시지가 나오고 끝(END) 낸다.

     GOTO 문에서는 항상 END 레이블로 배치를 끝낸다.

  배치 안에서 COPY,XCOPY,MOVE 명령은 /-Y 스위치를 써야 만이 목적지에 같은 이름의 파일이 있을 경우 덮어 쓸지여부를 확인하는 메시지를 출력한다.

④ 의사변수(Dummy Variables 가상의 변수)

바꿔 쓸 수 있는 인자(Replaceable Parameter)를 의사변수라 하며,
  %0 ~ %9(10개)으로 표시한다.

형식> C:\>명령어 파일1 파일2   "    "   "   "   "   " 파일9
           %0    %1    %2    %3   %4  %5  %6  %7  %8  %9

작성예1> C:\>COPY CON DIRALL.BAT
           DIR %1
           pause
           DIR %2
           pause
           type %0
           ^Z

실행예> C:\>DIRALL A: B: (엔터)

설명> 위 '실행 예'에서 명령어 DIRALL(.BAT)은 %0, A:은 %1, B:은 %2 에 해당하므로 '작성예1'의 내용 중 %1,%2,%0에 대입하여 명령을 수행한 결과가 화면에 나오게 된다. 즉 화면에는 'DIR A:'과, 'DIR B:'이 차례로 출력되고 멈췄다가 'DIRALL.BAT' 파일 내용이 출력된다.


작성예2> C:\>COPY CON EDIT2.BAT
             @ECHO OFF
             CLS
             TB          .....tb라는 프로그램을 메모리에 설치
             EDIT %1     ......%1은 '지정 파일'로 대체된다.
             TB/U        .......태백 한글을 메모리에서 제거
             ^Z

실행예> C:\>EDIT2 SAMPLE.TXT (엔터)
             %0    %1

설명> 위 '실행예'에서 명령어(EDIT2.BAT)는 %0, 파일1(SAMPLE.TXT)은 %1 에 해당하므로, '작성예2'의 배치파일 내용중 %1 대신에 SAMPLE.TXT라는 텍스트 파일이 대입된다.

화면은 한글을 읽고 쓸 수 있도록 태백한글을 메모리에 상주시킨다. 편집기는 SAMPLE.TXT 라는 파일을 읽어 화면에 띄워 수정.삽입 등 편집하고 저장할 수 있다. 편집을 끝내면 한글코드가 메모리에서 제거된다.


⑤ SHIFT

쉬프트는 옮김,변위를 의미하는 데 10개 이상의 대체 인자(Replaceable
Paramete)도 사용 가능하다. 대체인자를 한 자리씩 왼쪽으로 이동한다.

작성예> 지정한 문장(text) 파일들을 차례로 TYPE시키는 배치파일 예.

A:\>COPY CON TELLME.BAT
    @ECHO OFF
    :BEGIN
    IF NOT EXIST %1 GOTO END
    TYPE %1
    SHIFT
    GOTO BEGIN
    :END
    ECHO 더이상 파일이 없습니다.
    ^Z

실행예> A:\>TELLME AAA.TXT BBB.TXT CCC.TXT .........   엔터
           %0     %1       %2      %3     ........%15

설명> 위 '실행예'의 텍스트 파일명은 특정해야 하며 Wildcard문자(*,?)는 사용할 수 없다. 지정된 여러 파일들에 %1 변수가 차례로 SHIFT(변위)되면서 파일을 대입시켜 내용을 출력한다.
즉 AAA.TXT가 먼저 %1이 되고, 다음 BBB.TXT, 또 CCC.TXT, .....등이 %1에 대입된다. 계속 10개 이상의 변수도 지정할 수 있다.

지정된 파일이 모두 옮겨 대입되고 나면 배치파일이 끝나게 된다. 배치파일 내용 중 GOTO 명령에서 BEGIN 레이블로 가서 다시 시작하게하는 것을 LOOP(고리)라고 한다.


⑥ FOR
FOR 명령은 지정된 횟수 만큼 배치파일이 같은 명령을 계속 반복하게하는 명령, 즉 반복수행 (Looping) 명령이다.

형식)  FOR %%변수 IN (셋트 파라미터) DO [명령어] %%변수

     '(셋트 파라미터)'는 일련의 많은 갯수의 파일들을 말하고, '%%변수'는 SET에 명시된 각 파일에 순차적으로 설정되어 명령을 실행하는 대입변수이다.

     셋트 파라미터에 와일드카드문자(*,?)를  사용할 수 있다.

작성예> 확장명이 BAT,DOC,TXT,CAP인 문장 파일 모두를 차례로 화면에 출력(TYPE)되게 배치파일을 만들어 보자.

   C:\> COPY CON TYPEALL.BAT
       FOR %%Z IN (*.BAT *.DOC *.TXT *.CAP) DO TYPE %%Z
       ^Z

<실행>  C:\>TYPEALL C:\MDIR\*.BAT 엔터

  (*.BAT,  *.DOC,  *.TXT,  *.CAP 중에서 한 종류 파일만 지정한다.)

위 TYPEALL.BAT 파일을 실행할 때는 파일스펙(경로특정)이 있어야 한다.


2. 자동형 배치파일 (Aautoexec.bat)

일반배치파일 만들기와 동일하며 다만 이름만 AUTOEXEC.BAT로 한다.

컴퓨터를 구입할 때 이미 작성되어 있으므로 그 내용만 자기 필요에 따라 변경하면 될 것이다. 만약을 위해 원본 파일을 다른 곳에 백업해 놓고 필요시 다시 복사하면 좋을 것이다.

<작성예>  C:\>COPY CON AUTOEXEC.BAT
         @ECHO OFF
         CLS
         SMARTDRV
         LH V3RES
         PROMPT $P$G
         PATH=C:\;C:\DOS;C:\MDIR;C:\V&P
         LH DOSKEY
         M
         ^Z
         1 FIle(s) Copied

①  컴퓨터가 부팅할 때 DOS 시스템 프로그램을 메모리에 상주시킨 후
  곧 바로 자동실행 배치파일의 내용의 명령들을 실행한다.



http://immanuels.or.kr                     

출처 : http://www.jungdaun.net/pc/dos/dos19.htm
        http://www.jungdaun.net/pc/dos/dos20.htm


Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 01:18

Classless Inter-Domain Routing (CIDR) Overview


제가 설명능력이 부족한 관계로 웹사이트를 긁었는뎅...영문사이트네요..부분부분 허접해석 달겠습니다..

What Is CIDR? CIDR 이 모냥?

CIDR is a new addressing scheme for the Internet which allows for more efficient allocation of IP addresses than the old Class A, B, and C address scheme.

CIDR 은 A,B,C Class 와 같은 오래된 주소체계보다 더 충분한 IP 주소들을 할당할 수 있는 새로운 주소할당 방법이다.

Why Do We Need CIDR? CIDR 이 왜 필요하징?

With a new network being connected to the Internet every 30 minutes the Internet was faced with two critical problems:

세상이 좋아져서 새로운 네트웍이 빠르게 증가하면서 인터넷은 두가지 큰 문제에 직면하게 된당...(의역 ㅡㅡ;;)

  • Running out of IP addresses  : IP 주소의 고갈
  • Running out of capacity in the global routing tables : 공인 라우팅 테이블에서의 수용력 고갈
Running Out of IP Addresses  ( IP 주소의 고갈)

There is a maximum number of networks and hosts that can be assigned unique addresses using the Internet's 32-bit long addresses. Traditionally, the Internet assigned "classes" of addresses: Class A, Class B and Class C were the most common. Each address had two parts: one part to identify a unique network and the second part to identify a unique host in that network. Another way the old Class A, B, and C addresses were identified was by looking at the first 8 bits of the address and converting it to its decimal equivalent.
아래표에 인터넷에서 사용하는 32-bit 길이의 Address를 사용하면서 가질 수 있는 네트워크와 호스트가 나타나 있습니당. 고전적으로 보통 A Class, B Class, C Class 라고 불리는 Class 들로 Address를 나누게 되는데 각 Address 는 Network 부분과 Host 부분, 이 두부분을 가지고 있습니다.  또한 다른 방법으로 각 주소의 첫번째 8 bit 만을 10진수로 변경하여 나타낸 값을 가지고 A,B,C Class 를 구분할 수도 있습니다.

Address Class# Network Bits# Hosts BitsDecimal Address Range
Class A8 bits24 bits1-126
Class B16 bits16 bits128-191
Class C24 bits8 bits192-223

Using the old Class A, B, and C addressing scheme the Internet could support the following:

A,B,C Class 주소 체계를 사용하면 인터넷상에서 다음과 같은 네트워크들을 지원하게 됩니다.

  • 126 Class A networks that could include up to 16,777,214 hosts each
  • 16,777,214 개의 호스트를 가진 A Class 네트워크 126 개
  • Plus 65,000 Class B networks that could include up to 65,534 hosts each
  • 65,534 개의 호스트를 가진 B Class 네트워크 65,000 개 
  • Plus over 2 million Class C networks that could include up to 254 hosts each
  • 254 개의 호스트를 가진 C Class 네트워크 2,000,000 개

(Some addresses are reserved for broadcast messages, etc.). Because Internet addresses were generally only assigned in

( 몇몇 주소들은 Broadcast 나 Multicast, VRRP Message 등의 용도로 예약되어있음) 인터넷 주소가 일반적으로 오직 3개의 사이즈

these three sizes, there was a lot of wasted addresses. For example, if you needed 100 addresses you would be assigned the

( A,B,C Class ) 로만 할당되어있기 때문에 주소의 낭비가 많다. 왜냐하면, 만약 당신이 100개의 주소를 필요로 할 경우 가장 작은

smallest address (Class C), but that still meant 154 unused addresses. The overall result was that while the Internet was

C Class 의 주소를  사용하게 되겠지만 이 경우 154 개의 주소가 남겨지므로 낭비이당. 위와 같은 현상 때문에 인터넷 상에서 사용하지

running out of unassigned addresses, only 3% of the assigned addresses were actually being used. CIDR was developed to be

않는 주소로 인항 주소의 고갈이 생기게 되었고 오직 3%의 할당된 주소들만이 사용되게 되었다. CIDR 은 더욱 충분한 주소를 효과적으로

a much more efficient method of assigning addresses.

할당하기 위해 개발된 방법이다.

Global Routing Tables At Capacity 전체 라우팅 테이블 용량

A related problem was the sheer size of the Internet global routing tables. As the number of networks on the Internet increased,

관련된 문제로 인터넷 전체 라우팅 테이블의 사이즈의 크기가 있다. 인터넷상에서 네트워크의 수가 증가하게 되면서 그 경로의 수도

so did the number of routes. A few years back it was forecasted that the global backbone Internet routers were fast approaching

증가하게 되었다.  몇년 되지 않아서 전세계 인터넷 백본 라우터들은 각 장비가 지원할 수 있는 라우팅 경로의 한계에 도달하게 되었다.

their limit on the number of routes they could support.

Even using the latest router technology, the maximum theoretical routing table size is approximately 60,000 routing table entries. If

비록 최근의 라우터  기술을 이용할지라도 이론적으로 라우팅 테이블 엔트리의 수는 최대 6만개에 이른다. 만약

nothing was done the global routing tables would have reached capacity by mid-1994 and all Internet growth would be halted.

전체 라우팅 테이블에 대해 아무런 것도 하지 않고 방치하였다면 1994년 중반에 이르러 한계에 이르게 되고 인터넷의 성장은 멈추었을 것이다.

How Were These Problems Solved? 어떻게 이런 문제들을 해결했나?

Two solutions were developed and adopted by the global Internet community:

두 가지 솔루션이 개발되었고 전세계 인터넷 통신에 채택되었다.

  • Restructuring IP address assignments to increase efficiency ( VLSM 이랑 비슷.... )
  • IP 주소할당을 재구성하여 효용성을 증가시켰당...
  • Hierarchical routing aggregation to minimize route table entries ( Supernetting 을 말합니당. )
  • 라우팅 테이블 엔트리를 최소화하기 위해 계층적 라우팅 통합을 실시하였당....

Restructuring IP Address Assignments IP 주소할당의 재구성

Classless Inter-Domain Routing (CIDR) is a replacement for the old process of assigning Class A, B and C addresses with a

CIDR 은 오래된 A,B,C Class 의 주소 할당 방법을 "Prefix" 를 이용한 방법으로 교체하였습니당...^^

generalized network "prefix". Instead of being limited to network identifiers (or "prefixes") of 8, 16 or 24 bits, CIDR currently uses

                                         네트워크를 구분짓기 위해 8,16,24 bits 로 한정된 "Prefixes" 를 사용하는 대신, CIDR 은 13~27 에 이르

prefixes anywhere from 13 to 27 bits. Thus, blocks of addresses can be assigned to networks as small as 32 hosts or to those

는 다양한 Prefix 를 사용합니당. 이처럼 작게는 32개의 호스트를 갖는 네트워크를 할당하거나 혹은 50,000 개의 호스트를 갖는 네트워크

with over 500,000 hosts. This allows for address assignments that much more closely fit an organization's specific needs.

를 할당 할 수 있습니다.  이와 같은 주소할당 방법은 각 조직이 요구하는 Need ( 필요 Host 수) 에 더욱 근접한 주소할당을 가능하게 합니당.

A CIDR address includes the standard 32-bit IP address and also information on how many bits are used for the network prefix.

CIDR 주소는 표준 32-bit IP 주소를 포함하며 또한 네트워크 Prefix 에 사용되는 bit 의 정보를 포함하기도 합니다.

For example, in the CIDR address 206.13.01.48/25, the "/25" indicates the first 25 bits are used to identify the unique network

예를 들어 206.13.01.48/25 와 같은 CIDR 주소에서 "/25" 는 처음 25 bit 가 네트워크를 구분하기 위한 용도로 사용되고 있다는 것을

leaving the remaining bits to identify the specific host.

나타내며 나머지 bit 가 호스트를 나타낸다는 것을 뜻합니다.

CIDR Block Prefix# Equivalent Class C# of Host Addresses
/271/8th of a Class C32 hosts
/261/4th of a Class C64 hosts
/251/2 of a Class C128 hosts
/241 Class C256 hosts
/232 Class C512 hosts
/224 Class C1,024 hosts
/218 Class C2,048 hosts
/20

16 Class C

4,096 hosts

/19

32 Class C

8,192 hosts

/18

64 Class C

16,384 hosts

/17

128 Class C

32,768 hosts

/16

256 Class C

65,536 hosts

(= 1 Class B)

/15

512 Class C

131,072 hosts

/14

1,024 Class C

262,144 hosts

/132,048 Class C524,288 hosts

Hierarchical Routing Aggregation To Minimize Routing Table Entries

라우팅 테이블 엔트리를 최소화하기 위하여 계층적 라우팅 통합 ( Supernetting 에 대한 계념적 설명입니다.) 해석은 요기까지

The CIDR addressing scheme also enables "route aggregation" in which a single high-level route entry can represent many

lower-level routes in the global routing tables.

The scheme is similar to the telephone network where the network is setup in a hierarchical structure. A high level, backbone

network node only looks at the area code information and then routes the call to the specific backbone node responsible for that

area code. The receiving node then looks at the phone number prefix and routes the call to its subtending network node responsible for that prefix and so on. The backbone network nodes only need routing table entries for area codes, each representing huge blocks of individual telephone numbers, not for every unique telephone number.

Currently, big blocks of addresses are assigned to the large Internet Service Providers (ISPs) who then re-allocate portions of their address blocks to their customers. For example, Pacific Bell Internet has been assigned a CIDR address block with a prefix of /15 (equivalent to 512 Class C addresses or 131,072 host addresses) and typically assigns its customers CIDR addresses with prefixes ranging from /27 to /19. These customers, who may be smaller ISPs themselves, in turn re-allocate portions of their address block to their users and/or customers. However, in the global routing tables all these different networks and hosts can be represented by the single Pacific Bell Internet route entry. In this way, the growth in the number of routing table entries at each level in the network hierarchy has been significantly reduced. Currently, the global routing tables have approximately 35,000 entries.

User Impacts

The Internet is currently a mixture of both "CIDR-ized" addresses and old Class A, B and C addresses. Almost all new routers support CIDR and the Internet authorities strongly encourage all users to implement the CIDR addressing scheme. (We recommend that any new router you purchase should support CIDR).

The conversion to the CIDR addressing scheme and route aggregation has two major user impacts:

  • Justifying IP Address Assignments
  • Where To Get Address Assignments

Justifying IP Address Assignments

Even with the introduction of CIDR, the Internet is growing so fast that address assignments must continue to be treated as a scarce resource. As such, customers will be required to document, in detail, their projected needs. Users may be required from time to time to document their internal address assignments, particularly when requesting additional addresses. The current Internet guideline is to assign addresses based on an organization's projected three month requirement with additional addresses assigned as needed.

Where To Get Address Assignments

In the past, you would get a Class A, B or C address assignments directly from the appropriate Internet Registry (i.e., the InterNIC). Under this scenario, you "owned" the address and could take it with you even if you changed Internet Service Providers (ISPs). With the introduction of CIDR address assignments and route aggregation, with a few exceptions, the recommended source for address assignments is your ISP. Under this scenario, you are only "renting" the address and if you change ISPs it is strongly recommended that you get a new address from your new ISP and re-number all of your network devices.

While this can be a time-consuming task, it is critical for your address to be aggregated into your ISP's larger address block and routed under their network address. There are still significant global routing table issues and the smaller your network is, the greater your risk of being dropped from the global routing tables. In fact, networks smaller than 8,192 devices will very likely be dropped. Neither the InterNIC nor other ISPs have control over an individual ISP's decisions on how to manage their routing tables.

As an option to physically re-numbering each network device, some organizations are using proxy servers to translate old network addresses to their new addresses. Users should be cautioned to carefully consider all the potential impacts before using this type of solution.

Need More Information?

For more detailed technical information on CIDR, go to http://www.rfc-editor.org/rfcsearch.html and type in the number of the CIDR RFC you are interested in:
  • RFC 1517: Applicability Statement for the Implementation of CIDR
  • RFC 1518: An Architecture for IP Address Allocation with CIDR
  • RFC 1519: CIDR: An Address Assignment and Aggregation Strategy
  • RFC 1520: Exchanging Routing Information Across Provider Boundaries in the CIDR Environment

As mentioned before, there are a few exceptions where an organization would not use an ISP assigned address block.



Posted by theYoungman
engineering/Network Eng.2006. 8. 7. 01:10

OSPF (Open Shortest Path First) 는 IETF 에서 개발된 IP Routing Protocol 로 어떤 라우터에서 제공되는 표준 Protocol 이다. 표준제정 작업은1988 년에 시작하여 1991 년에 완료되었다.

/특징



IP Routing Protocol

Interior Gateway Protoco

Distance Vector Routing Protocol

Equal Cost Multi Path Routing Protoco

AS Number 필요여부

불필요

Metric

Bandwidth

Routing Information 의 갱신 주기

변화가 생기면 즉시 전달

Neighbor 설정 관계

Hierachy

Advertising 하는

IP Network Address 형태

Classless (VLSM) 및 Aggregation 된 형태

Advertising 할 IP Network  Address 선언방법

Area 내의 일반 라우터는 직접 연결된 Network  Address 를 선언하고 , Border 라우터는 Area 내의

모든 Network Address 를 선언

OSPF는 다음과 같은 특징을 갖는다.

- 네트웍을 Area 로 구분하여 이것을 계층구조로 구성함으로써 많은 Routing Information의   교환으로 인한 라우터의 성능 저하를 예방하고 대역을 절약할 수 있다.
-Link의 변화가 감지되면 그 Link에 대한 정보만을 즉시 모든 라우터에게 전달하므로   Convergence 가 매우 빨리 이루어지고 해당 Link에 대한 정보만 전달되므로 전체 Routing   Information을 전달될때 대역이 많이 소모되는 문제점을 피할 수 있다.
- VLSM을 지원하므로 IP Address를 효과적으로 할당하여 활용할 수 있다.

또한 Aggregation된 형태로 Routing Information을 전달할 수 있어 라우터의 메모리 절약

및 성능 향상, 그리고 대역을 절약할 수 있다.
-Metric으로 Bandwidth를 이용하므로 IGRP와 마찬가지로 Hop Count에 의한 제한을

받지 않는다.
-Equal Cost Multi Path Routing 을 지원하여 복수개의 Link를 효율적으로 활용할 수 있다.
-Routing Information 전달시 IP Multicast 방법을 이용한다.
-Routing Information 교환시 Authentication 을 지원한다.



가. Area

OSPF에서는 네트웍을 Area라는 단위로 여러개로 나누어 Routing Information을 교환하도록 한다. RIP이나 IGRP를 운영하는 라우터처럼 Area내에 있는 라우터들은 서로 간에 Routing Information을 교환한다. 그러나 Area 1과 Area2 가 있을때 Area 1에 있는 라우터와 Area 2에 있는 라우터간에는 Routing Information을 직접 교환하지 않는다. 이처럼 Routing Information의 교환이 1개의 Area 내에서만 이루어지므로 많은 Routing Information 교환으로 인한 부하를 줄일 수 있다.

OSPF에서 Area들은 위와 같이 Area 0에 모두 접속되어 있는 형태로 구성된다. 개념적으로 다음과 같이 Area 2과 Area 1을  매개체로 Area 0에 연결되는 것은 허용되지 않는다

만약 위 그림과 같이 어쩔 수 없이 Area2가 직접 Area 0에 연결되지 못하는 상황이 발생할 경우에는 논리적으로 Area 2를 Area0로 연결해 주어야 하는데 이러한 Link를 Virtual Link라고 한다. 그리고 Area1을 Area2의 Virtual Link에 대한 Transit Area라고 한다

Area 0는 각 Area로부터 Routing Information을 전달받아 다시 각 Area로 전달하는 역할을 중심 Area로서 Backbone Area라고도 불리며 나머지 Area는 Leaf Area라고도 불린다.

나. 라우터 형태
OSPF에서는 정의하는 라우터의 형태는 다음과 같은 것들이 있다.



라우터의 형태

역   할

Internal Router

Area 내에서만 Routing Information 을 주고 받는 라우터

AreaBorder Router  (ABR)

Leaf Area 와 Backbone Area 를 연결하며

두 Area 간에 Routing Inforamtion 을 전달하는 라우터

AS Boundary Router (ASBR)

다른AS Number 를 네트웍과 접속되어

Routing Information 을 교환하는 라우터

Designated Router (DR)

Backup Designated Router (BDR)



DR은 BDR은 다음과 같이 Broadcast가 지원되는 LAN에서 이용되는 라우터의 형태이다. 만약 다음과 같이 LAN에 여러개의 라우터가 접속되어 있다고 가정하자

만약 RIP이나 IGRP와 같은 Routing Protocol을 운영한다면 모든 라우터는 다음과 같이 서로간에 Routing Information을 교환할 것이다.

이러한 현상은 LAN의 대역을 소모하는 결과를 낳을 것이다. 따라서 어느 특정 라우터를 매개체로 하여 Routing Information을 교환한다면 상대적으로 Routing Information 교환에 따른 부하를 줄일 수 있을 것이다. 이때 특정 라우터를 DR (Designated Router)라고 한다.

그리고 DR에 장애가 발생하는 경우를 대비해 Backup DR이 이용되며 나머지 라우터들은 DR, BDR과 Routing Information을 교환한다.

이러한 DR과 BDR은 운영자가 직접 정해줄수도 있는데 운영자가 정해주지 않을 경우는 라우터간에 Hello message를 주고 받아 DR과 BDR을 자동으로 선정한다

다. Route Summarization
OSPF에서는 VLSM 개념을 지원하며, 이때문에 IP Address를 효과적으로 활용할 수 있는 장점이 있다. 그리고 Part III 10. VLSM과 Aggregation 에서 이야기 하였듯이 여러개의 IP Network Address에 대한 Routing Information을 전달할때 Class 형태로 각각 여러개를 전달하는 것이 아니라 Aggregation된 형태로 전달할 수 있다. OSPF에서는 Aggregation 을 Summarization이라는 표현을 많이 이용한다.



이러한 Route Summarization은 ABR과 ASBR에서 이용된다.



만약 Area 1에 Class B IP Network Address 16개  130.16.0.0 ~ 130.32.0.0가 속해 있다면 Area 1의 ABR은 Area 0로 Routing Information을 넘길때 16개에 대한 경로를 각각 전달하는 것이 아니라 이것을 다음과 같이 Summarization하여 전달한다.

마찬가지로 Area 0 에 있는 Routing Information 이 Area 1 으로 전달될때에서 Summarization 된 형태로 전달된다.



ASBR 에서는 외부 네트웍에 대한 정보를 Summarization 된 형태로 전달한다.

이러한 Router Summarization은 자동으로 이루어지는 것은 아니고 운영자가 Summarization된 형태로 정보가 전달될 수 있도록 라우터를 설정해 주어야 한다.



Summarization된 형태로 Routing Information을 전달하면 라우터의 메모리 절약 및 성능 향상, 그리고 대역을 절약할 수 있다는 점을 이미 언급하였었다.

라. Link State와 LSA

OSPF를 운영하고 있는 라우터는 자신에게 접속된 네트웍에 대한 정보를 다른 라우터에게 전달하는데 이 정보를 Link State라고 한다.



그리고 라우터는 이렇게 모은 Link State Database를 가지고 네트웍에 대한 Tree를 형성하고 Shortest Path First 알고리즘을 이용하여 목적지까지 가장 적은 Cost로 갈 수 있는 경로를 Routing Table에 등록을 한다.

Link State를 전달하는 것을 Link State Advertisement라고 하는데 Link State Routing Protocol의 특징중 하나는 Link State에 변화가 있을 경우 이것을 모든 라우터에게 즉시 전달하는 것이라고 하였다. OSPF는 이러한 특징을 따르는데 이러한 Link State를 전달하는 Message를 LSA라고 하며, 라우터가 LSA를 전달받으면 해당 정보가 자신의 Database에 없을 경우 이것을 자신의 Database에 등록하고 즉시 그 LSA를 다른 라우터들에게 전달한다. 이러한 LSA는 OSPF에 참여하는 모든 라우터에게 전달되는데 이러한 것을 Flooding이라고 하며, Link State Routing Protocol의 특징에서 이야기 한적이 있다.



마. Stub Area

그림에서 라우터C는 외부에 있는 네트웍에 대한 정보를 재분배하여 내부에서 발생한 정보와 함께 Summarization된 형태로 각 Area의 ABR에게 전달할 것이다. 그런데 위 그림과 같이 다른 AS로 갈 수 있는 경로가 1개 뿐일때 외부 네트웍에 대한 모든 경로정보를 갖고 있다는 것은 불필요한 것일수 있다. Default Route는 이런때 필요한 것이다.



OSPF에서 정의된 Stub Area는 ABR이 다른 AS에 있는 외부네트웍에 대한 경로정보를 Internal Router에게 전달하지 않는 Leaf Area를 말한다. ABR은 오직 동일 AS에 있는 정보만을 Internal Router에게 전달할 뿐이다. 이것은 결과적으로 Internal Router의 메모리를 절약해 주는 장점이 있다.



AS내에 있는 네트웍 정보만 1000개인데, 외부에 대한 경로정보가 10000개일 경우 Stub Area라는 것을 설정하면 10000개의 항목 유지에 필요한 메모리를 줄일 수 있다. 대신 ABR은 Default Route 0.0.0.0에 대한 정보를 Internal Router에게 전달하는 것이 바람직하다.

Stub Area에 있는 라우터들은 외부 네트웍에 대한 정보를 받지 않을뿐이지 AS내에 있는 내부 네트웍에 대한 정보는 전달받는데, Internal Router들은 이러한 내부 네트웍에 대한 정보를 전달 받지 않아도 된다. Internal Router들은 다른 Area로 접근할 수 있는 ABR에 대한 정보만 알면 되기 때문이다.



이처럼 외부 네트웍은 물론 내부 다른 Area에 있는 네트웍에 대한 정보마저 전달받지 않는 Area를 Totally Stub Area라고 한다.

Stub Area와 관련해서 주의해야 할점은 해당 Area가 다른 Area에 대한 Virtual Link를 제공하는 Area이면 안된다는 점이다.



그리고 Area 0도 Stub Area로 설정되어서는 안된다는 점이다.

바. Metric
OSPF에서는 Metric으로서 link의 delay, throughput, reliability를 이용한다.



delay를 놓고 생각해 보자. 1.5Mbps 회선이 위성회선, 2개의 6Mbps 회선은 500Km구간 육상케이블이라고 할 경우 위성회선의 delay는 적어도 500msec, 케이블은 기껏해야 50msec 정도 밖에 되지 않는다. RIP에서는 이러한 delay를 고려하지 않고 1.5Mbps 회선만을 고집한다. 그러나 OSPF에서는 6Mbps 회선을 이용하기도 할 것이다.



t  hroughput을 놓고도 생각해 보자. 2개의 6Mbps 회선에 부하가 많지 않다면 1.5Mbps 회선을 이용하는 것보다 6Mbps 회선을 이용하는 것이 짧은 시간에 많은 데이타를 전송할 수 있다. RIP에서는 이러한 throughput을 판단하지 못하고 1.5Mbps 회선만을 고집한다. 그러나 OSPF에서는 6Mbps 회선을 이용하기도 할 것이다.



OSPF의 특징중 하나는 delay, throughput, reliability 의 조합으로 각 Routing Table을 구성하여 서비스 특징에 맞는 경로를 선택할 수 있다는 것이다. 일례로, 급하게 빨리 데이타를 보내야 할 경우는 delay가 가장 낮은 경로를 선택해 줄 수 있다. 이러한 것을 Type Of Service (TOS)라고 하는데 이 기능을 이용하고 싶으면, TOS 기능이 enable 되어 있어야만 한다. 대신 많은 Routing Table을 관리하여야 하므로 메모리(RAM)가 많이 필요할 것이다.



CISCO라우터의 OSPF에서는 TOS가 기본적으로 활성화되어 있는 것은 아니며, TOS가 활성화되어 있지 않을때 Cost를 계산할 때 필요한 Metric으로서 Link의 대역만을 이용한다. Cost를 계산하는 방법은 다음과 같다.

Cost  =  SUM (100,000,000  / 대역)

                 (* 대역의 단위는 bps)

다음과 같이 라우터가 연결되어 있다면 라우터A에서 Network 130.140.0.0에 대한 Cost는 각 Link의 Cost를 모두 합한 값 64+48 이다.

RIP이나 IGRP에서와 같이 OSPF에서도 Routing Information을 재분배하는 경우가 있는데 주의하여야 할 것은 재분배할때 default-metric으로 대역을 선언하는 것이 아니라 계산된 Cost를 선언해 주어야 한다는 점이다.

Cost = Metric = SUM (100,000,000 / 대역)
사. 외부 네트웍에 대한 2개 형태의 Metric

OSPF를 운영하는 라우터는 다른 Routing Protocol에 있는 정보 혹은 Static Route를 OSPF로 재분배할 경우 이 네트웍을 외부네트웍으로 간주하는데 그때 Metric 형태를 지정해 주어야 한다. Metric 형태에는 두 가지가 있는데 첫번째 형태는 E2, 두번째 형태는 E1으로 운영자가 E1 방식으로 지정하지 않는한CISCO 라우터는 E2 형태로 전달한다. RIP이나 IGRP에서는 내부 네트웍에 대한 정보이든 외부 네트웍에 대한 정보이든 Metric은 한가지 형태인 것과 차이가 난다.



그렇다면 E2 Metric과 E1 Metric의 어떤 차이가 있을까? 위 그림에서 외부 네트웍 130.100.0.0이 있을 경우 라우터 C가 130.100.0.0에 대한 정보를 전달할때 E2 형태로 Metric을 전달하면 라우터 A가 갖는 130.100.0.0에 대한 Cost는 50이다. 반면 라우터 C가 E1 형태로 Metric을 전달하면 라우터A가 갖는 130.100.0.0에 대한 Cost는 10+10+50 즉 70이 된다. 즉 E2 Metric은 Area내의 Cost를 무시하고 외부의 Cost만 반영되며, E1 Metric은 외부 Cost는 물론 내부 Cost도 반영된다.

E2 Metric    -----     외부 Cost만

E1 Metric    -----     외부 Cost + 내부 Cost
외부 네트웍에 대한 정보를 재분배할때 내부 Cost가 고려가 되어야 한다면 운영자는 E1 형태의 Metric으로 전달할 수 있도록 하는 것이 바람직하다. 그러나 전체 Cost중에 외부 경로에 대한 Cost가 대부분을 차지할 경우는 E2 형태의 Metric으로 전달하는 것이 바람직하다. 그리고 동일한 목적지에 대해서 E1 Metric을 가진 경로와 E2 Metric을 가진 경로가 있을 수 있는데 OSPF에서는 E1 Metric 이 우선시된다. 그리고 E2 Metric이 동일한 두 경로가 있으면 내부 Cost가 작은 경로가 우선시 된다.



CISCO 라우터에서 OSPF로 재분배된 네트웍에 대한 Cost는 운영자가 지정하지 않으면 BGP4에서로부터 전달되어 온 정보를 제외하고는 20이다. BGP4에서 재분배된 네트웍에 대한 Cost는 1이다.

/OSPF 의 설정

가. OSPF 활성화 및 네트웍 선언
OSPF를 활성화하는 일반적인 방법은 다음과 같다.
Router(config)#  router ospf process-id

Router(config-router)#
network ip-network-address wildcard-mask area area-id

process-id는 OSPF에 대한 번호이다. 일반적으로 같은 AS내에 OSPF 라우터들은 같은 번호를 부여하는데 달라도 상관은 없다. 다만 동일 라우터내에서 여러개의 OSPF를 운영하고자 한다면 다른 번호만을 이용하면 된다.



ip-network-address는 직접 연결된 Interface에 할당된 IP Network Address이다. 그러나 OSPF는 RIP과 IGRP와 달리 VLSM을 지원하므로 Subnet Address를 선언해도 된다. Subnet Address는 wildcard-mask를 활용하면 된다. Subnet Mask를 이용그리고 area-id는 해당 Interface가 어느 Area에 속하는지 명시하는 것이다.

위 그림과 라우터의 Interface에 IP Network Address가 할당되어 있다면 라우터에서 다음과 같이 OSPF를 설정하여야 할 것이다.

Router# sh run

....

!

router ospf 100

network 200.100.1.0 0.0.0.255 area 0

network 200.100.2.3%8 0.0.0.7 area 1

network 200.100.2.64 0.0.0.3 area 2


network 200.100.2.68 0.0.0.3 area 2

process-id 인 100은 임의의 숫자로 AS Number가 아니라는 것을 명심하자. 그리고 /29 에 대한 wildcard-mask가 왜 0.0.0.7인지 생각해 보면 알 수 있을 것이다.



그리고 동일한 Area내의 Interface에 할당된 IP Network Address는 Aggregation된 형태로 표현될 수 있다. 따라서 위의 환경설정은 다음과 같이 나타낼 수 있다.

Router# sh run

.....

!

router ospf 100

network 200.100.1.0 0.0.0.255 area 0

network 200.100.2.3%8 0.0.0.7 area 1

network 200.100.2.64 0.0.0.7 area 2

64는 8의 배수이고 64에서부터 71까지 8개가 연속되어 있으므로 축약이 가능하다.

200.100.2.64/30

200.100.2.68/30

200.100.2.64/29

나. Virtual Link

Area 2는 Area 0에 접속되어 있지 않으므로 Area 0와 Virtual Link를 생성하여야 한다. Virtual Link를 생성하는 방법은 다음과 같다.



Router(config)# area area-id virtual-link router-id



area-id는 Virtual Link를 필요로 하는 Leaf Area와 Area 0 사이에 놓인 Area 번호이고, router-id는 상대측 Router ID로 해당 라우터에서 show ip ospf database라고 입력하면 알 수 있다. 일반적으로 Router ID는 라우터의 Interface에 할당된 IP Address중에서 가장 큰 값의 IP Address로 정해진다.

Router-B# sh ip ospf database

OSPF Router with ID (130.140.1.1) (Process ID 100)

.........



Router-C#
sh ip ospf database

OSPF Router with ID (130.150.1.1) (Process ID 100)

.........

위 그림에서 Virtual Link를 생성하여야 하는데 방법은 다음과 같다.

Router-B# sh run

.........

!

router ospf 100

network .....

area 1 virtual-link 130.150.1.1



Router-C#
sh run

........

!

router ospf 100

network .....

area 1 virtual-link 130.140.1.1





다. Route Summarization
Summarization 하는 방법은 ABR에서 하는 것과 ASBR에서 하는 것이 약간 다르다. ABR에서는 다음과 같은 형태로 Summarization 한다.

Router(config-router)# area area-id range ip-network-address net-mask
area-id는 해당 ip-network-address가 소속된 Area 번호이다. net-mask는 wildcard-mask가 아니라 Subnet Mask 혹은 Supernet Mask이다.



ASBR에서는 다음과 같은 형태로 Summarization 한다.

Router(config-router)# summary-address ip-network-address net-mask
다음과 같은 상황이 있다고 하자. 라우터A와 B는 ABR이고 C는 ASBR이라고 가정하자. 각 Area에는 다음과 같은 IP Network Address가 있다고 하자. 라우터A와 B는 ABR이고 라우터C는 ASBR이다.







Area 0 :  

130.100.1.0/24

130.100.2.0/24

130.100.3.0/24

130.100.4.0/24

130.100.5.0/24

130.100.6.0/24

130.100.7.0/24

Area 1:  

130.100.3%8.0/24

130.100.3%9.0/24

130.100.130.0/24

130.100.131.0/24

130.100.132.0/24

Area 2:  

130.100.192.0/24

130.100.193.0/24

130.100.193.0/24

other network :  

130.3%8.0.0/16

130.3%9.0.0/16

130.130.0.0/16

..........

130.254.0.0/16

130.255.0.0/16



이와 같은 경우 각 라우터는 다음과 같이 설정을 하여야 할 것이다.



Router-A# sh run

!

router ospf 100

network .......

area 2 range 130.100.192.0 255.255.254.0

area 2 range 130.100.193.0 255.255.255.0

area 0 range 130.100.1.0 255.255.255.0

area 0 range 130.100.2.0 255.255.254.0

area 0 range 130.100.4.0 255.255.252.0



Router-B# sh run

!

router ospf 100

network .......

area 1 range 130.100.3%8.0 255.255.252.0

area 1 range 130.100.132.0 255.255.255.0

area 0 range 130.100.1.0 255.255.255.0

area 0 range 130.100.2.0 255.255.254.0

area 0 range 130.100.4.0 255.255.252.0



Router-C# sh run

!

router ospf 100

network .......

summary-address 130.3%8.0.0 255.3%8.0.0

위와 같이 설정하면 라우터A는 Area 0로 2개의 항목만을 전달하고, Area 2로는 3개의 항목만을 전달할 것이다. 라우터B도 라우터A와 비슷하다. 그리고 라우터C는 3%8개의 Class B에 대한 정보를 3%8개 각각 전달하는 것이 아니라 1개로 전달할 수 있다. 이와 같이 Summarization을 보다 효과적으로 하려면 Area 별로 연속된 IP Network Address를 할당하는 것이 바람직하다.



주의하여야 할 것은 ASBR의 OSPF설정에서 외부 네트웍에 대한 정보를 재분배 과정을 통해 OSPF에게 전달해야 한다는 것이다. 재분배 과정이 없으면 외부 정보는 내부로 전달되지 않을 것이다.



또한 외부 네트웍과 연결되는 경로가 1개면 외부 네트웍에 대한 정보를 재분배 과정을 통해 내부로 전달할 필요가 없다는 것이다. Default Route 0.0.0.0/0 만을 전달하면 된다.

라. Stub Area
Stub Area를 설정하는 것은 간단한다. Stub Area의 ABR과 Stub Area내의 모든 Internal Router에서 Stub Area를 선언해 주면 된다. Stub Area를 선언하는 방법은 다음과 같다.



ABR에서

Router(config-router)# area area-id stub

Router(config-router)#
area area-id default-cost cost

Internal Router에서

Router(config-router)# area area-id stub

area-id는 Stub Area의 번호이다. 그리고 ABR은 Default Route 0.0.0.0에 대한 정보를 전달할때 Cost를 함께 전달하는데 이때 default-cost 를 명시하지 않으면 cost는 1이다. 이때 내부 네트웍 경로에 대한 Cost는 default-cost의 영향을 받지 않는다.



Totally Stub Area도 Stub Area를 선언하는 방법과 거의 동일하다.



ABR에서

Router(config-router)# area area-id stub no-summary

Router(config-router)# b area-id
default-cost cost



Internal Router에서

Router(config-router)# area area-id stub

no-summary는 ABR이 갖고 있는 OSPF 영역내의Summarization된 정보를 전달하지 않겠다는 의미이다. 결과적으로 Default Route 0.0.0.0 이외의 어떤 정보도 전달하지 않겠다는 의미이다.



다음의 상황에서 Area 2를 Stub Area와 Totally Stub Area로 각각 설정해 보자. Area 0에는 IP Network Address 130.100.0.0/16, Area 2에는 130.110.0.0/16이 있다고 가정하자.







Router-B# sh run

!

router ospf 100

network 130.100.0.0 0.0.255.255 area 0

network 130.110.0.0 0.0.255.255 area 2

area 2 stub

area 2 stub default-cost 200



Router-A# sh run

!

router ospf 100

network 130.110.0.0 0.0.255.255 area 2

area 2 stub

만약 Area 2를 Totally Sub Area로 설정하고 한다면 라우터B에서 no-summary를 선언해 주면 된다.

Router-B# sh run

!

router ospf 100

network 130.100.0.0 0.0.255.255 area 0

network 130.110.0.0 0.0.255.255 area 2

area 2 stub no-summary

area 2 stub default-cost 200

마. Routing Information의 재분배
RIP 정보와 IGRP 정보를 서로간에 재분배 할 수 있듯이, OSPF와 RIP, IGRP 간에 정보를 재분배 할 수 있다.

다른 Routing Protocol에 의한 정보를IGRP로 재분배하는 방법은 다음과 같다.

Router(config)# router igrp as-number

Router(config-router)#
redistribute
protocol [process-id | as-number]

Router(config-router)# default-metric bandwidth delay reliability load mtu
다른 Routing Protocol에 의한 정보를RIP으로 재분배하는 방법은 다음과 같다.
Router(config)# router rip

Router(config-router)# redistribute protocol [process-id | as-number]

Router(config-router)# default-metric cost
다른 Routing Protocol에 의한 정보를OSPF로 재분배하는 방법도 RIP이나 IGRP로 재분배하는 방법과 거의 동일한데 다음과 같다. 차이점은 Metric 형태가 2개가 있고 Subnetwork에 대한 정보도 전달될 수 있도록 하는 방법이 있다는 것이다
Router(config)# router ospf process-id

Router(config-router)#
redistribute
protocol [process-id | as-number] [metric cost]

[
metric-type number] [subnets]
metric cost는 재분배되는 네트웍경로에 대한 cost를 선언하는 것으로 이것을 선언하지 않으면 기본적으로 0이 된다.



metric-type number 는 외부 경로에 대한 Metric를 전달할때 E1 Metric로 전달할 것인지 E2 Metric으로 전달할 것인지를 결정하는 것으로 metric-type 1선언하지 않으면 E2 Metric으로 재분배된다. 즉 metric-type 2가 선언된 것과 같다.



subnets는 Subnet에 대한 정보가 그대로 전달될 수 있도록 하는 것이다. 만약 130.100.0.0의 Subnet 130.100.1.0/24 이 있을때 subnets를 선언하지 않으면 130.100.1.0/24에 대한 정보대신 130.100.0.0/16에 대한 정보가 전달된다. 그러나 subnets를 선언하면 130.100.1.0/24에 대한 정보가 그대로 전달된다.



다음과 같은 상황을 고려해 보자.

이 경우 ASBR인 라우터A에서는 OSPF와 RIP을 동시에 운영하고, RIP 과 OSPF 정보를 상호간에 재분배하여야 한다.

Router-A# sh run

!

router ospf 100

network 130.100.0.0 0.0.255.255 area 0

redistribute rip metric 200

!

router rip

network 130.110.0.0

redistribute ospf 100

default-metric 1

다음과 같은 상황에서는 어떻게 재분배를 시키는 것이 좋을까?

이 경우에는 라우터 A와 B는 다음과 같이 설정될 수 있다.

Router-A# sh run

!

router ospf 100

network 130.100.0.0 0.0.3%7.255 area X

redistribute rip metric 90 metric-type 1 subnets

!

router rip

network 130.100.0.0

redistribute ospf 100

default-metric 5



Router-B# sh run

!

router ospf 100

network 130.100.0.0 0.0.3%7.255 area X

redistribute rip metric 100 metric-type 1 subnets

!

router rip

network 130.100.0.0

redistribute ospf 100

default-metric 5

metric-type 1을 선언한 이유는 OSPF 영역에 있는 라우터에서 130.100.3%8.0/17로 갈 때 라우터A 혹은 라우터B로 통해 갈 수 있는데 내부 Cost가 반영이 되는 것이 바람직하기 때문이다.





Cost by E1 Metric via A to 130.100.3%8.0/17  =  130

Cost by E1 Metric via B to 130.100.3%8.0/17  =  3%0

----> C는 B 를 선택



Cost by E2 Metric via A to 130.100.3%8.0/17  =  90

Cost by E1 Metric via B to 130.100.3%8.0/17  =  100

----> C는 내부 Cost에 관계없이 A 를 선택

즉 Area X에 임의의 라우터C가 있을 경우 A까지 가는데 E1 Metric에 의한 Cost는 130이고 B까지 가는데 E1 Metric에 의한 Cost는 3%0일 경우 Cost가 적은 B를 통해서 가는 것이 타당하다. 만약 E2 Metric으로 재분배 되었다면 라우터C는 라우터C에서 라우터A까지 가는 Cost가 매우 클지라도 E2 Metric이 작은 경로 A을 선택했을 것이다.



그리고 라우터A와 B에서 subnets를 선언하였는데 이것을 선언하지 않으면 Subnetting된 네트웍은 재분배되지 않는다. 따라서 Subnetwork 130.100.3%8.0/17을 재분배하려면 반드시 subnets를 선언해주어야 한다.





/실습 및 OSPF 동작 확인

우선 다음과 같이 각 Interface에 IP Address를 할당하였다고 가정하자. 아직 OSPF는 활성화하지는 않았다.

라우터 A

Ethernet 1 : 130.100.16.1/21

Ethernet 0 : 130.100.24.1/21

라우터 B

Ethernet 0 : 130.100.24.2/21

Serial 0   : 130.100.44.1/23

Serial 1   : 130.100.46.1/23

라우터C

Serial 0 :   130.100.44.2/23

Serial 1   : 130.100.46.2/23

Ethernet 0 : 130.100.3%8.1/20

라우터D

Ethernet 0 : 130.100.3%8.2/20

Ethernet 1 : 130.100.144.1/20

라우터E

Ethernet 1 : 130.100.144.2/20

가. 라우터 A, B
다음에 라우터A와 라우터B에서 OSPF를 다음과 같이 활성화하여 보자.



Router-A#sh run

!

router ospf 100

network 130.100.16.0 0.0.7.255 area 1

network 130.100.24.0 0.0.7.255 area 1

Router-B# sh run

!

router ospf 100

network 130.100.24.0 0.0.7.255 area 1

network 130.100.44.0 0.0.0.254 area 0

network 130.100.46.0 0.0.0.254 area 0

그리고 라우터A와 B에서 Routing Table을 확인해 보자.

Router-A>sh ip ro

........

130.100.0.0/16 is variably subnetted, 4 subnets, 2 masks

O IA

130.100.46.0/23 [110/74] via 130.100.24.2, 00:01:13, Ethernet0

O IA

130.100.44.0/23 [110/205] via 130.100.24.2, 00:01:34, Ethernet0

C

130.100.16.0/21 is directly connected, Ethernet1

C

130.100.24.0/21 is directly connected, Ethernet0

OSPF에 의해 얻은 정보는 맨 앞에 O 로 표시된다. 그리고 O와 함께 IA가 함께 표시되는데 이것은 다른 Area에 있는 정보라는 것을 나타낸다. 그리고 130.100.46.0/23에서 알 수 있듯이 Subnetwork 정보가 그대로 전달된다는 것을 알 수 있다. 또한 110/74에서 알 수 있듯이 OSPF의 Administrative Distance는 110이며, 라우터A 에서 130.100.46.0/23까지의 Cost는 74임을 알 수 있다. Cost 74는 라우터A의 e0와 라우터 B의 e0를 연결하는 Ethernet에 대한 Cost 10와 라우터B의 s1과 라우터C의 s1을 연결하는 1.544Mbps Serial Line의 Cost 64가 더해진 값이다.

라우터A의 입장에서 130.100.44.0/23에 대한 Cost가 205인 이유는 라우터B의 s0와 라우터C의 s0간의 Serial Line의 대역이 53%K로 선언되었기 때문이다.



라우터B의 Routing Table은 다음과 같다. 130.100.16.0/21은 라우터 B의 e0와 같은 Area 2에 있기 때문에 IA는 표시되지 않았음을 알 수 있다.

Router-B#sh ip ro

.................

130.100.0.0 is variably subnetted, 4 subnets, 2 masks

C

130.100.46.0 255.255.254.0 is directly connected, Serial1

C

130.100.44.0 255.255.254.0 is directly connected, Serial0

O

130.100.16.0 255.255.248.0

[110/20] via 130.100.24.1, 00:01:05, Ethernet0

C

130.100.24.0 255.255.248.0 is directly connected, Ethernet0

Router-B#

나. 라우터 C, D, E
라우터C, D, E를 다음과 같이 설정하자.



Router-C# sh run

!

router ospf 100

network 130.100.44.0 0.0.0.254 area 0

network 130.100.46.0 0.0.0.254 area 0

network 130.100.3%8.0 0.0.15.255 area 2

Router-D# sh run

!

router ospf 100

network 130.100.3%8.0 0.0.15.255 area 2

network 130.100.144.0 0.0.15.255 area 2



Router-E# sh run

!

router ospf 100

network 130.100.144.0 0.0.15.255 area 2

그리고 각 라우터의 Routing Table을 살펴보자



라우터C는 Area 0와 Area 2를 연결하는 ABR로서 Area 1에 있는 네트웍에 대한 정보와 Area 2에 있는 네트웍에 대한 정보를 갖고 있다.

Router-C#sh ip ro ospf

O

130.100.144.0 255.255.240.0

[110/20] via 130.100.3%8.2, 00:02:49, Ethernet0

O IA

130.100.16.0 255.255.248.0

[110/84] via 130.100.46.1, 00:02:49, Serial1

O IA

130.100.24.0 255.255.248.0

[110/74] via 130.100.46.1, 00:02:49, Serial1

라우터D와 Area 2에 있는 라우터로서 Area 0와 Area 1에 있는 네트웍에 대한 정보를 갖고 있다.

Router-D#sh ip ro ospf

O IA

130.100.46.0 255.255.254.0

[110/74] via 130.100.3%8.1, 00:01:15, Ethernet0

O IA

130.100.44.0 255.255.254.0

[110/205] via 130.100.3%8.1, 00:01:15, Ethernet0

O IA

130.100.16.0 255.255.248.0

[110/94] via 130.100.3%8.1, 00:01:15, Ethernet0

O IA

130.100.24.0 255.255.248.0

[110/84] via 130.100.3%8.1, 00:01:15, Ethernet0

라우터E와 Area 2에 있는 라우터로서 Area 0와 Area 1, Area2에 있는 네트웍에 대한 정보를 갖고 있다.

Router-E#sh ip ro ospf

O

130.100.3%8.0/20 [110/20] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.46.0/23 [110/84] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.44.0/23 [110/215] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.16.0/21 [110/104] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.24.0/21 [110/94] via 130.100.144.1, 00:00:01, Ethernet1

다. Route Summarization

각 Area에 있는 각 네트웍들은 다음과 같이 Summarization이 가능하다.

Area 1

Area 0

Area 2

130.100.16.0/21

130.100.24.0/21

130.100.44.0/23

130.100.46.0/23

130.100.3%8.0/20

130.100.144.0/20

130.100.16.0/20

130.100.44.0/22

130.100.3%8.0/19

따라서 ABR인 라우터B와 라우터C에서는 다음과 같이 환경을 설정하면 될 것이다.

Router-E#sh ip ro ospf

O

130.100.3%8.0/20 [110/20] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.46.0/23 [110/84] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.44.0/23 [110/215] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.16.0/21 [110/104] via 130.100.144.1, 00:00:01, Ethernet1

O IA

130.100.24.0/21 [110/94] via 130.100.144.1, 00:00:01, Ethernet1



Router-B# sh run

!

router ospf 100

network 130.100.24.0 0.0.7.255 area 1

network 130.100.44.0 0.0.0.254 area 0

network 130.100.46.0 0.0.0.254 area 0

area 0 range 130.100.44.0 255.255.252.0

area 1 range 130.100.16.0 255.255.240.0



Router-C# sh run

!

router ospf 100



network 130.100.44.0 0.0.0.255 area 0

network 130.100.46.0 0.0.0.255 area 0

network 130.100.3%8.0 0.0.15.255 area 2

area 2 range 130.100.3%8.0 255.255.224.0

area 0 range 130.100.44.0 255.255.252.0

설정 결과 라우터A와 라우터B는 다음과 같이 Summrization된 항목을 전달받는다.

Router-A>sh ip ro ospf

O IA

130.100.3%8.0/19 [110/84] via 130.100.24.2, 00:3%:25, Ethernet0

O IA

130.100.44.0/22 [110/74] via 130.100.24.2, 00:00:30, Ethernet0

Router-E>sh ip ro ospf

O

130.100.3%8.0/20 [110/20] via 130.100.144.1, 00:17:01, Ethernet1

O IA

130.100.44.0/22 [110/84] via 130.100.144.1, 00:04:04, Ethernet1

O IA

130.100.16.0/20 [110/94] via 130.100.144.1, 00:09:06, Ethernet1

라. OSPF 의 동작을 확인하는 주요 명령어
OSPF의 동작을 확인하는 주요 명령어에는 다음과 같은 것들이 있다.
sh ip protocols

sh ip ospf

sh ip ospf interface

sh ip ospf database
다음은 라우터C에서 위 4개의 명령어를 입력한 결과이다.



Router-C>sh ip protocols

Routing Protocol is "
ospf 100
"

Sending updates every 0 seconds

Invalid after 0 seconds, hold down 0, flushed after 0

Outgoing update filter list for all interfaces is not set

Incoming update filter list for all interfaces is not set

Redistributing: ospf 100

Routing for Networks:

130.100.44.0 0.0.0.255

130.100.46.0 0.0.0.255

130.100.3%8.0 0.0.15.255

Routing Information Sources:

Gateway

Distance

Last Update

130.100.3%8.0

110

0:08:46

130.100.144.0

110

0:08:51

130.100.144.1

110

0:08:42

130.100.46.0

110

0:08:42

130.100.46.1

110

0:08:42

130.100.44.0

110

0:08:42

Distance: (default is 110)

ospf 100 이라는 것에서 process-id 가 100이라는 것을 알 수 있다. Sending updates every 0 seconds 에서 OSPF는 Routing Information을 정기적으로 갱신하는 것이 아니라 변화가 생겼을 경우 즉시 갱신한다는 사실을 간접적으로 알 수 있다. default is 110에서 OSPF의 Administrative Distance는 110 임을 알 수 있다.

Router-C>sh ip ospf

Routing Process "ospf 100" with ID 130.100.3%8.1

Supports only single TOS(TOS0) routes

It is an area border router

Summary Link update interval is 0:30:00 and the update due in 0:06:10

SPF schedule delay 5 secs, Hold time between two SPFs 10 secs

Number of areas in this router is 2

   Area 2

      Number of interfaces in this area is 1

      Area has no authentication

        SPF algorithm executed 9 times

      Area ranges are

            130.100.3%8.0 255.255.224.0 Active(10)

       Link State Update Interval is 0:30:00 and due in 0:06:10

       Link State Age Interval is 0:20:00 and due in 0:16:10

   Area BACKBONE(0)

       Number of interfaces in this area is 2

       Area has no authentication

       SPF algorithm executed 6 times

       Area ranges are

            130.100.44.0 255.255.252.0 Active(64)

       Link State Update Interval is 0:30:00 and due in 0:05:15

       Link State Age Interval is 0:20:00 and due in 0:15:15

sh ip ospf는 라우터에서 운영되고 있는 OSPF의 일반적인 상황을 알려주는 명령어이다. Router ID, Area 정보등을 알 수 있다. ID 130.100.3%8.1은 Router ID가 130.100.3%8.1이라는 사실을 알려준다. Interface s0 및 s1에 130.100.44.2 및 130.100.46.2가 있지만 130.100.3%8.1이 가장 크므로 그것이 Router ID로 이용되었다. area border router는 이 라우터가 ABR이라는 사실을 알려준다. SPF algorithm executed 9 times에서 Area2에 대한 Routing Table을 생성하기 위한 SPF algorithm이 9번 수행되었다는 사실을 알 수 있다. 그리고 130.100.3%8.0 255.255.224.0로부터 Area 2에 130.100.3%8.0/19가 할당되었다는 사실도 알 수 있다.

Router-C>sh ip ospf interface

Ethernet0 is up, line protocol is up

Internet Address 130.100.3%8.1 255.255.240.0, Area 2

Process ID 100, Router ID 130.100.3%8.1, Network Type BROADCAST,

Cost: 10


Transmit Delay is 1 sec, State DR, Priority 1

Designated Router (ID) 130.100.3%8.1, Interface address 130.100.3%8.1

Backup Designated router (ID) 130.100.144.1, Interface address 130.100.3%8.2

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

Hello due in 0:00:05

Neighbor Count is 1, Adjacent neighbor count is 1

Adjacent with neighbor 130.100.144.1  (Backup Designated Router)

Serial0 is up, line protocol is up

Internet Address 130.100.44.2 255.255.255.0, Area 0

Process ID 100, Router ID 130.100.3%8.1, Network Type POINT_TO_POINT,

Cost: 195


Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

Hello due in 0:00:02

Neighbor Count is 1, Adjacent neighbor count is 1

Adjacent with neighbor 130.100.46.1

Serial1 is up, line protocol is up

Internet Address 130.100.46.2 255.255.255.0, Area 0

Process ID 100, Router ID 130.100.3%8.1, Network Type POINT_TO_POINT,Cost: 64

Transmit Delay is 1 sec, State POINT_TO_POINT,

Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

Hello due in 0:00:01

Neighbor Count is 1, Adjacent neighbor count is 1

Adjacent with neighbor 130.100.46.1

sh ip ospf interface는 각 Interface와 관계되 내용을 보여주는 것으로 각 Interface가 어떤 Area에 속하는지, Cost가 얼마인지 등을 알 수 있다. 그리고 Interface Ethernet의 경우에는 DR인지 BDR인지를 알려준다.

Router-C>sh ip ospf database

OSPF Router with ID (130.100.3%8.1) (Process ID 100)
/Router Link States (Area 2)

Link ID

ADV Router

Age

Seq#

ChecksumLink coun

130.100.3%8.1

130.100.3%8.1

1400

0x80000003 0x6F36

1

130.100.144.1

130.100.144.1

3%59

0x80000004 0x3842

2

130.100.144.2

130.100.144.2

3%60

0x80000002 0xACB7

1

/Net Link States (Area 2)

Link ID

ADV Router

Age

Seq#

Checksum Link coun

130.100.3%8.1

130.100.3%8.1

1400

0x80000001 0x7B0

130.100.144.1

130.100.144.1

3%59

0x80000001 0x8402

/Summary Net Link States (Area 2)

Link ID

ADV Router

Age

Seq#

Checksum Link coun

130.100.16.0

130.100.3%8.1

768

0x80000002 0xBB06

130.100.44.0

130.100.3%8.1

466

0x80000002 0x5E45

/Router Link States (Area 0)
 

Link ID

ADV Router

Age

Seq#

ChecksumLink coun

130.100.46.1

130.100.46.1

1546

0x80000005 0xF2D7

4

130.100.3%8.1

130.100.3%8.1

1503

0x80000004 0xDDEB

4

/Summary Net Link States (Area 0)
 

Link ID

ADV Router

Age

Seq#

ChecksumLink coun

130.100.16.0

130.100.46.1

771

0x80000002 0x79DA

130.100.3%8.0

130.100.3%8.1

408

0x80000004 0x108F

sh ip ospf database는 각 영역별로 Router Link State, Network Link State, Summary Link State 등에 대한 정보를 알려준다. Router Link State는 해당 영역에 있는 라우터에 대한 정보를 알려주고, Network Link State는 해당 영역에 있는 Network Address에 대한 정보를 알려준다. 그리고 Summary Link State는 다른 영역으로 오는 Summarization된 Network Address 정보를 알려준다.


출처 - http://noc.kreonet.net/index.php

Posted by theYoungman