728x90
  
JUNOS software Configuration
 



     [edit protocols]
     user@Cabernet# show
     rip {
         group neighbor-routers {
                 neighbor fe-0/0/0.0
                 neighbor fe-0/0/1.0;
                 }
          }
     각각의 라우터마다 요런 config를 설정 해주고  show rip neighbor  명령어로 네이버들을 확인 할 수가 있다.

     user@Cabernet> show rip neighbor 

                              Source    Destination  Send   Receive     In
     Neighbor   State  Address    Address    Mode    Mode      Met
     ---------- ---    ---------  ---------- ------  ---------  ---
     fe-0/0/0.0  Up     172.16.1.2  224.0.0.9    mcast    both        1
     fe-0/0/1.0  Up     172.16.2.1  224.0.0.9    mcast    both        1
 
     user@Cabernet> show route protocol rip
     inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
     + = Active Route, - = Last Active, * = Both
     
     show route  protocol rip  명령어로 확인한 결과 어떠한  RIP 정보를 확인 할 수가 없다.
     이런 현상이 나타나는 이유는 JUNOS의 default advertisement 설정이 어떤 라우터에게도 광고를 하지 않도록 되어
     있기 때문이다. 그래서 꼭 routing policy설정이 필요하다.

Applying Export Policy
  
  기본적으로 RIP은 자신의 라우팅 테이블 정보를 자신의 네이버들에 전송하지 않는다. 라우팅 정보를 전송하기 위해서
  export policy가 필요하다. 라우팅 정책이 하나도 match 가 되지 않으면 default policy 정책이 적용되고  어떠한
  라우터에게도 export하지 않는다. 

  그룹레벨에 export 정책을 설정해보자

[edit policy-options]
user@Cabernet# show
policy-statement connected-routes {
  term advertise-routes {
     from protocol direct;
     then accept;
     }
}
policy-statement transit-rip-routes {
  term advertise-routes {
    from protocol rip;
    then accept;
    }
}
[edit protocols]
user@Cabernet# show
rip {
    group neighbor-routers {
      export [connected-routes transit-rip-routes];
      neighbor fe-0/0/0.0;
      neighbor fe-0/0/1.0;

이렇게 설정하면 Cabernet으로부터 오는 RIP라우터 정보를 Riesling 이 받을 수 있다.
user@Riesling> show route protocol rip
inet.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.2.0/24 *[RIP/100] 00:07:25, metric 2
> to 172.16.1.2 via fe-0/0/0.0
192.168.8.1/32 *[RIP/100] 00:07:25, metric 2
> to 172.16.1.2 via fe-0/0/0.0
192.168.24.1/32 *[RIP/100] 00:00:25, metric 3
> to 172.16.1.2 via fe-0/0/0.0


Applying Import Policy
 
  JUNOS는 인접해있는 네이버들로부터 받아오는 라우팅 정보를 필터링 할 수 있습니다. 임포트 정책을 사용하는
  경우는 원치않는 라우팅 정보를 차단하거나 받아오는 라우팅 정보의 Metric값 등을 수정할 때 사용합니다.  이렇게 
  들어오는 라우팅 정보를 가공하기 위해서는 반드시 rouing policy 를 선언해야 하며 선언된 라우팅 정책을  RIP
   configuration에 적용시켜야 됩니다. 만약 하나 이상의 라우팅 정책이 선언되면 첫번째 부터 마지막 정책 순서로 
   수행하고 처음으로 일치하는 라우팅 정책이 적용이 됩니다.  일치하는 라우팅 정책이 하나도 없다면 모든 RIP
   라우팅 정보를 받아들이게 됩니다.

[edit policy-options]
user@Cabernet# show
policy-statement filter-Riesling {
  term filter-routes {
     from {
       protocol rip;
       route-filter 192.168.0.0/16 orlonger;
       }
       then reject;
    }
 }

[edit protocols]
user@Cabernet# show
rip {
  group neighbor-routers {
    export [connected-routes transit-rip-routes];
    neighbor fe-0/0/0.0 {
        import filter-Riesling;
        }
    neighbor fe-0/0/1.0;
    }
}

이 설정에서 Cabernet은 Riesling 을 부터 오는 192.168.0.0/16 서브넷 정보를  reject 하고 neighbor절에
선언되어 있습니다.

Modifying the Incoming Metric

   라우팅 테이블의 메트릭값은 광고된 메트릭값 과 로컬 메트릭값을 더한 값 입니다. JUNOS의 로컬 메트릭값은
   기본으로 1로 설정되어 있고 metric-in 명령어를 사용하여 변경이 가능합니다.
  
  Cabernet으로 부터 받는 라우팅 정보의 메트릭 값을 5로  변경해 봅시다.

 [edit protocols]
user@Riesling# show
rip {
  group neighbor-routers {
    export [connected-routes];
    neighbor fe-0/0/0.0 {
      metric-in 5;
      }
   }
}
neighbor구문에 metric-in  명령어를  사용하여 metric 값을 5로 변경했습니다. 확인을 해봅시다~

user@Riesling> show route protocol rip
inet.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.2.0/24 *[RIP/100] 00:08:25, metric 6
> to 172.16.1.2 via fe-0/0/0.0
192.168.8.1/32 *[RIP/100] 00:08:25, metric 6
> to 172.16.1.2 via fe-0/0/0.0
192.168.24.1/32 *[RIP/100] 00:01:02, metric 7
> to 172.16.1.2 via fe-0/0/0.0

172.16.2.0 네트워크를 확인해 봅시다 기존에는 광고된 메트릭값 1 +  로컬 메트릭값 1 = 2 가 되었지만
로컬 메트릭값을 5 로 변경하였으므로 5+1 이 되어 6임을 확인 할 수 있습니다.

Modifying the Outgoing Metric
  
  metric-out 명령어를 사용하여 해당 라우터에서 나가는 모든 라우팅 정보 ( loop back 이나 직접연결된 서브넷 등)
  의 메트릭 값을 변결 할 수 있습니다. 

[edit protocols]
user@Shiraz# show
rip {
   group neighbor-routers {
      metric-out 3;
      export [connected-routes transit-rip-routes];
      neighbor fe-0/0/1.0;
      }
}
Shiraz에서 나가는 라우팅 정보의 메트릭 값을 3으로 변경.

user@Riesling> show route protocol rip
inet.0: 27 destinations, 27 routes (27 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.2.0/24 *[RIP/100] 00:19:33, metric 6
> to 172.16.1.2 via fe-0/0/0.0
192.168.8.1/32 *[RIP/100] 00:19:33, metric 6
> to 172.16.1.2 via fe-0/0/0.0
192.168.24.1/32 *[RIP/100] 00:06:04, metric 9
> to 172.16.1.2 via fe-0/0/0.0

Configuration Authentication

   JUNOS 에서 authentication 은 default 설정이 disable 되어 있습니다. 인증설정은 글로벌하게 또는 피어 - 피어 
   로 설정이 가능합니다. 인증 설정을 하게 되면 인증 설정된 RIP라우터들끼리만 response message를 주고 
   받습니다.
   인증 설정을 위해서는 authentication-type 과   authentication-key 설정이 필요합니다. type는 인증방식을
   의미하고, key 는 password를 의미합니다.  인증 방식에는 두가지가 있고 다음과 같습니다.

     Simple authentication
        단순한 패스워드를 사용한 방식입니다. 패킷에 포함되어 전송되어지고 수신받은 라우터는 패스워드 값을
        확인해서  이 패킷을 인증 합니다. 이 방법은 암호화 방식이 적용이 안되어 있기 때문에 패킷 분석툴을
        이용하면 패스워드값을 알 수 있습니다.
    MD5 authentication
        해쉬알고리즘으로 패스워드를 암호화 하는 방식입니다. 암호화 되어 있기 때문에 패킷분석툴을 이용해도 
        패스워드 확인이 불가능합니다.  패스워드가 틀리면 해당 패킷을 폐기합니다.

[edit protocols]
user@Cabernet# show
rip {
   authentication-type md5;
   authentication-key " $9$09-4OhrW87Vs4xN"; # SECRET-DATA
   group neighbor-routers {
      export [connected-routes transit-rip-routes];
      neighbor fe-0/0/0.0;
      neighbor fe-0/0/1.0;
      }
}
글로벌하게 MD5 암호화 방식을 사용한 config 예제입니다.
key값은 암호화 되어진 채로 보여집니다.

Controlling Route Preference
 
   JUNOS에서 라우팅 테이블의 default preference값은 100으로 설정되어 있습니다. 라우팅 테이블에서 preference값을
   사용하는 이유는 여러 라우팅 프로토콜이 사용될 때 최적의 경로를 찾기 위해 사용됩니다. 로컬라우터는 가장 낮은
   preference값을 찾아서 forwarding table 에 등록합니다. preference값의 범위는 0 ~ 4294967295 입니다.
  
   preference값을 수정하기 위해서는  그룹 레벨에서 preference명령어를 사용합니다.  아래 예제는 Shiraz의 preference
   값을 90을 변경하는 예제 입니다.

[edit protocols]
user@Shiraz# show
rip {
    group neighbor-routers {
        preference 90;
        export [connected-routes transit-rip-routes];
        neighbor fe-0/0/1.0;
        }
}
user@Shiraz> show route protocol rip
inet.0: 29 destinations, 30 routes (29 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
172.16.1.0/24 *[RIP/90] 00:21:48, metric 2
> to 172.16.2.1 via fe-0/0/1.0
192.168.8.1/32 *[RIP/90] 00:21:48, metric 2
> to 172.16.2.1 via fe-0/0/1.0
192.168.16.1/32 *[RIP/90] 00:21:48, metric 3
> to 172.16.2.1 via fe-0/0/1.0

show route protocol rip  명령어를 사용하여 preference값이 90으로 변경된 것을 확일 할 수 있습니다.


Configuring Update Messages
    
    기본적으로,   모든 RIP라우터들은 자신들의 모든 네이버들에게 RIPv2 message를 멀티케스트를 이용해서 보낸다. 또한
    RIPv1, RIPv2 message 를 다 받을 수 있다. 
    receive명령을 사용하여 inbound default  설정을 변경 할 수 있고 send명령을 사용하여 outbound default 설정을 변경 할
    수 있다. 이 두 명령어들은 모두 global 혹은 neighbor 레벨에서 사용 가능하다.
   
     receive 옵션값
        both - RIPv1, RIPv2 패킷을 모두 받는다.
        none - RIPv1, RIPv2 패킷 모두 받지 않는다.
        version-1 - RIPv1 패킷만 받는다.
        version-2 -  RIPv2 패킷만 받는다.
    send 옵션값
       broadcast - RIPv2 패킷을 브로드케스트로 보낸다 (RIPv1 호환가능)
       multicast - RIPv2 패킷을 멀티케스트로 보낸다. 
       version-1 - RIPv1 패킷을 브로드케스트로 보낸다.
       none - RIP update를 보내지 않는다.

  
  그림에서 Merlot은 오로지  RIPv1 패킷만 사용이 가능하다. 그래서 Shiraz에게 receive, send 명령어를 사용하여 
  Melot과 통신하게 만들어보자 


[edit protocols]
user@Shiraz# show
rip {
   group neighbor-routers {
      export [connected-routes transit-rip-routes];
      neighbor fe-0/0/1.0;
      neighbor fe-0/0/2.0 {
         send version-1;
         receive version-1;
         }
     }
}

이제 Shiraz은 Melot과 RIPv1을 사용하여, Cabernet 과 RIPv2를 사용하여 통신이 가능하게 되었다. Shiraz는 자신의
네이버들에게 적절한 RIP update를 사용하여 통신을 하게된다.

Configuring the Number of Route Entries in an Update Message

   RIP update message 에는 기본적으로 25개의 라우팅 엔트리가 포함될 수 있다. 라우팅 엔트리 갯수는 각각의 update 
   message  마다 255개 까지 설정이 가능하다.
   message-size명령을 사용해서 Riesling라우터에게 update message 마다 100 개 의 라우팅 엔트리를 보낼 수 있게
   설정해보자.
 
   [edit protocols]
user@Riesling# show
rip {
   message-size 100;
   group neighbor-routers {
      export [connected-routes];
      neighbor fe-0/0/0.0 {
         metric-in 5;
         }
     }
  }
Accepting Packets Whose Reserved Fields Are Nonzero

  RIPv1과 RIPv2는 아주 흡사하다. 다른점이 있다면 RIPv1은 많은 필드들이 예약되어있다.  반면에 RIPv2는 RIPv1에서
  예약되어 있던 공간에 subnetmask, next-hop 등의 값들이 들어있다. RIPv1에서는 예약된 공간에 모두 0으로 채워놓고
  0이 아닌 값들이 들어오면 모두 폐기시켜버린다. RIPv2 라우터 또한 0으로 채워져야 할 필드에 다른 값들이 들어오면 
  해당 필드의 값을 폐기시킨다. JUNOS에서는 이러한 처리과정을 변경 할 수 있다. 왜나면 이러한 처리과정은 RFC1058,
  RFC2453에 어긋나기 때문이다. no-check-zero명령어를 사용하여 RFC에 규약에 어긋나지 않도록 설정이 가능하다.


user@Shiraz# show
rip {
   no-check-zero;
   group neighbor-routers {
      export [connected-routes transit-rip-routes];
      neighbor fe-0/0/1.0;
      neighbor so-1/0/0.0;
      }
}
  Shiraz가 인터페이스 so-1/0/0.0로 다른 네트워크와 연결되어 있다고 가정해보자 Shiraz는 표준을 지키지 않는다.
  (JUNOS default 설정때문에)  그래서  가능한 모든  RIP패킷을 수신하기 위해 ( RFC에 나와있는 표준)  no-check-zero
  명령어를 사용한다.


- 참고 : Juniper JNCIA studyguide 

+ Recent posts