본문 바로가기

Ryu's Tech

LAB 2 - RIPv1 and RIPv2


LAB2에서는 Dynamic protorol 중 하나인 RIP(Routing Information Protocol)를 살펴 보도록 하겠다.


■ Introduce RIP

  • Hop-Count를 Metric으로 사용한다.
    • Metric의 개념을 설명하자면 각각의 라우팅 프로토콜마다 경로에 대한 점수를 계산하게 되는데, 이 값을 Metric이라 하고, 라우팅시에 먼저 AD 값이 낮은 값을 참조 하고 AD값이 같으면 Metric값을 참조하게 된다.
    • Hop-Count는 라우터의 개수를 센다고 생각하면 싶다.
  • 최대 Hop-Count는 15이다. 즉, Hop-count가 16가 넘어가면  Unreachable
  • 최대 여섯개의 경로에 대해 로드 밸런싱을 할 수 있다. (기본적으로 4개)
  • 자신의 라이팅 테이블을 이웃에게 전송하며, 업데이트는 30초 단위로 보내진다.
    • Split-Horizon : 라우팅 테이블에 대한 업데이트를 수신한 인터페이스로는 다시 업데이트를 내보내지 않는 것으로 Looping을 방지 하기 위한 기법이다.

    • 즉, 위의 그림에서 Split-Horizon을 설명하자면 R2와 R1이 RIP 돌고 있을때 R1은 172.16.1.0/30 네트워크를 R2로 광고할 것이고,  R1은 Fa0/0을 통해 업데이트를 수신하고 이에 대한 정보를 Fa0/0으로 광고하지 않는 것이다.


■ RIPv1 and RIPv2 비교


 RIP v1  RIP v2
 Classful routing protocol  Classless routing protocol
 VLSM 지원 안함  VLSM 지원
 No authentication support  Plain text or MD5 인증 지원
 Broadcasts를 사용하여 광고  Multicasts를 사용하여 광고

  • 간단하게 정의하면 10.0.0.0 /24 의 네트워크를 광고할때
    • RIP v1 은 10.0.0.0 /8 으로 광고한다. Classful Routing Protocol 이기 때문에 Class A 처럼 광고한다.
    • RIP v2 는 이를 지원하기 때문에 제대로 광고한다.
  • RIP v1은 인증방법을 지원하지 않는다.
    • RIP v2는 plain text(평문) 이나 MD5 인증을 지원한다.


■ LAB2의 Topology 소개



  • LAB 1과의 차이는 Loopback 인터페이스가 추가된 것이다.
    • Loopback Interface
      • 이는 가상의 인터페이스로 절대 down되지 않는다.
      • 연결상태를 확인하기 매우 편하다.
      • 어려운 IP가 아닌 아주 쉬운 IP를 이용할 수 있다.
      • 차후에 구성 후 Loopback을 사용하여 Test를 할 것이다.
  • 여기서 눈여겨 봐야할 것은 Rip v1는 Classful 라우팅 프로토콜이지만 위의 Topology는 Classless 네트워크로 구성되었다. 그래서 RIPv1 과 RIPv2를 혼합하여 구성할 것이다.
  • 또한 RIP v2 구간에는 Authentication을 추가하여 구성할 것이다.



  • 결론적으로 위와 같은 LAB을 구성할 것이며, 이에 대한 PKT 파일은 아래에 첨부한다.





■ RIP configuration 구문

명령어 설명
Router(config)# router rip RIP 라우팅 시작
Router(config-router)# network ip-address RIP를 통해 광고할 네트워크 설정
Router(config-router)# version 2 RIP v2 활성화
Router(config-router)# no auto-summary RIP v2에서 classless로 네트워크 광고를 가능하게 함
Router(config-if)# ip rip send version {1 | 2} 인터페이스를 통해 보낼 RIP 버전 설정
Router(config-if)# ip rip receive version {1 | 2} 인터페이스를 통해 받을 RIP 버전 설정
Router(config-if)# ip rip authentication mode {text | md5} RIP v2에서 사용할 인증방식 설정 (RIP v1은 불가)
Router(config)# key chain name 사용할 key chain 이름 설정
Router(config-keychain)# key number 인증에 사용할 key
Router(config-keychain-key)# key-string string 인증에 사용할 key의 비밀번호 설정


  • Key Chain은 번역하면 열쇠 고리라는 뜻이다. 즉, 열쇠를 담고 있다는 뜻인데, 라우터간에 key chain 은 달라도 상관이 없다.
  • 이해가 어렵다면 아래와 같이 생각하면 쉽다.
    • key chain - 열쇠고리
    • key - 열쇠
    • key-string 자물쇠
    • 자물쇠를 열기 위해서는 무엇이 같아야 할까? 열쇠와 자물쇠가 같아야 열 수 있다.
    • 열쇠고리는 어떤걸 사용하던 상관이 없는 것이다.

 




■ Configure RIPv1

자 이제 구성을 시작 해 보겠습니다.

R1으로 가서 자신과 연결된 인터페이스를 광고하겠습니다.
sh ip route 를 사용하면 자신과 연결된 인터페이스를 확인할 수 있다.


R1(config)#router rip
R1(config-router)#network 1.1.1.1
R1(config-router)#network 172.16.1.0
R1(config-router)#network 172.16.2.0
R1(config-router)#network 192.168.1.0
R1(config-router)#

자 설정을 했으니 이제 확인해 보자. 먼저 running-config를 확인해봅시다.


!
router rip
 network 1.0.0.0
 network 172.16.0.0
 network 192.168.1.0
!

보면 설정한 네트워크 주소와 다른것을 알 수 있습니다.
앞에서 말했듯이 RIP v1은 classful routing protocol 이기 때문에 classless로 입력하여도 클래스에 맞게 알아서 바꿔버립니다.
그럼 다음 routing table을 확인해 보겠습니다.


R1#sh ip rou
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
     172.16.0.0/30 is subnetted, 2 subnets
C       172.16.1.0 is directly connected, Serial0/0.1
C       172.16.2.0 is directly connected, Serial0/0.2
     192.168.1.0/30 is subnetted, 1 subnets
C       192.168.1.0 is directly connected, FastEthernet0/0
R1#



Routing table도 이제 볼 줄 아셔야 합니다. 아무런 경로도 올라와 있지 않은 것을 알 수 있습니다.
R1 라우터 혼자만 RIP를 돌리고 있으니 당연한겁니다.

자 그럼 R2로 넘어가보겠습니다.

R2(config)#router rip
R2(config-router)#network 2.0.0.0
R2(config-router)#network 10.0.0.0
R2(config-router)#network 192.168.1.0
R2(config-router)#

어차피 classless하게 입력해도 classful하게 들어가기 때문에 Classful하게 입력하겠습니다.


BB1(config-router)#router rip
BB1(config-router)#network 3.0.0.0
BB1(config-router)#network 10.0.0.0
BB1(config-router)#network 172.16.0.0
BB1(config-router)#


BB2(config)#router rip
BB2(config-router)#network 4.0.0.0
BB2(config-router)#network 10.0.0.0
BB2(config-router)#network 172.16.0.0
BB2(config-router)#

BB1과 BB2에도 알맞게 설정해 줍니다.


자 그럼 다시 R1으로 돌아가 보겠습니다.

R1#sh ip route
<생략>
     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
R    2.0.0.0/8 [120/1] via 192.168.1.2, 00:00:22, FastEthernet0/0
R    3.0.0.0/8 [120/1] via 172.16.1.2, 00:00:05, Serial0/0.1
R    4.0.0.0/8 [120/1] via 172.16.2.2, 00:00:20, Serial0/0.2
R    10.0.0.0/8 [120/1] via 192.168.1.2, 00:00:22, FastEthernet0/0
                [120/1] via 172.16.1.2, 00:00:05, Serial0/0.1
                [120/1] via 172.16.2.2, 00:00:20, Serial0/0.2
     172.16.0.0/30 is subnetted, 2 subnets
C       172.16.1.0 is directly connected, Serial0/0.1
C       172.16.2.0 is directly connected, Serial0/0.2
     192.168.1.0/30 is subnetted, 1 subnets
C       192.168.1.0 is directly connected, FastEthernet0/0
R1#

표시된 부분에 집중을 해 보시길 바랍니다.
RIP로 돌아가는 10.0.0.0 부분을 보면 세가지 경로가 있는 것을 볼 수 있습니다.
R2의 랜 네트워크 구간은 10.1.2.X이고 Backbone 라우터 구간은 10.1.1.X 인데, 위의 라우팅 테이블을 보면 뭔가 잘못 된 구성임을 짐작할 수 있습니다.

그럼 이제 테스트를 해봅시다.

R1#ping 1.1.1.1
R1#ping 2.2.2.2
R1#ping 3.3.3.3
R1#ping 4.4.4.4

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 47/59/63 ms

R1#

각 루프백으로 ping을 사용해 보면 모두 정상적으로 동작하는 것처럼 보입니다.
이제 좀 더 디테일 한 부분으로 ping을 날려보겠습니다.


R1#ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
U!!.!
Success rate is 60 percent (3/5), round-trip min/avg/max = 32/78/78 ms

R1#ping 10.1.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.2.2, timeout is 2 seconds:
U!U.!
Success rate is 40 percent (2/5), round-trip min/avg/max = 32/87/62 ms

R1#



개판입니다.


참고로 !은 success, .은 not respond, U는 Unreachable이다.

■ Configure RIPv2

자 위에서 잘못 된 부분을 고쳐보겠습니다.


###R1
router rip
version 2
no auto-summary

###BB1
router rip
version 2
no auto-summary

##BB2
router rip
version 2
no auto-summary



     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
R    2.0.0.0/8 [120/1] via 192.168.1.2, 00:01:02, FastEthernet0/0
     3.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
R       3.0.0.0/8 [120/1] via 172.16.1.2, 00:01:02, Serial0/0.1
R       3.3.3.3/32 [120/1] via 172.16.1.2, 00:00:07, Serial0/0.1
     4.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
R       4.0.0.0/8 [120/1] via 172.16.2.2, 00:00:58, Serial0/0.2
R       4.4.4.4/32 [120/1] via 172.16.2.2, 00:00:02, Serial0/0.2
     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
R       10.0.0.0/8 [120/1] via 192.168.1.2, 00:01:02, FastEthernet0/0
                   [120/1] via 172.16.1.2, 00:01:02, Serial0/0.1
                   [120/1] via 172.16.2.2, 00:00:58, Serial0/0.2
R       10.1.1.0/30 [120/1] via 172.16.1.2, 00:00:07, Serial0/0.1
                    [120/1] via 172.16.2.2, 00:00:02, Serial0/0.2
     172.16.0.0/30 is subnetted, 2 subnets
C       172.16.1.0 is directly connected, Serial0/0.1
C       172.16.2.0 is directly connected, Serial0/0.2
     192.168.1.0/30 is subnetted, 1 subnets
C       192.168.1.0 is directly connected, FastEthernet0/0
R1#




10.1.1.0 에 대한 부분이 라우팅 테이블에 추가된 것을 볼 수 있습니다.
자 그럼 다시 확인을 해보겠습니다.


R1#ping 10.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 46/78/125 ms

R1#ping 10.1.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.2.2, timeout is 2 seconds:
UU!.U
Success rate is 20 percent (1/5), round-trip min/avg/max = 3/190/63 ms

R1#



10.1.1.1 로 가는 라우팅 경로는 이제 잘 동작하는 것을 볼 수 있지만
10.1.2.2 로 가는 라우팅 경로는 아직 제대로 잘 동작하지 않는 것을 볼 수 있습니다.


그럼 이제 R1으로 가는 경로를 아래와 같이 Static 으로 잡아주겠습니다.

R1(config)#ip route 10.1.2.0 255.255.255.0 192.168.1.2



S       10.1.2.0/24 [1/0] via 192.168.1.2

sh ip route로 확인을 하면 라우팅 테이블에 위와 같이 경로가 추가된 것을 알 수 있습니다.

그러고 이제 마지막 회심의 PING!!!!!!!



R1#ping 10.1.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/25/32 ms

R1#





원래는 중간에 ip rip send version 1 / ip rip send version 1 이라는 명령어가 있지만
Packet Tracer 5.3에서는 동작하지 않았습니다.

ip rip send version 1
ip rip receive version 1

이 두 명령어를 RIPv2로 설정할시에 R1의 interface fa0/0 에서 설정하면 되는 것이 었습니다.
그렇게 되면 R1에서 R2로 가는 업데이트와 R2에서 오는 업데이트를 RIP v1 방식으로 교환하게 되는 것이었습니다.
이러한 명령어가 있다는 것을 알아두면 될 것 같습니다.







■ Add authentication support for RIPv2

RIP v2 구간에 인증을 넣어보도록 하겠습니다.

먼저 R1으로 가서 아래와 같이 설정합니다.........................
패킷 트레이서에서 key chain 이 먹지 않습니다...............................................설명으로 대체 하겠습니다...............
패킷 트레이서에서는 RIP에 대한 인증이 지원하지 않나 봅니다.

R1(config)# key chain KEYCHAIN1
R1(config-keychain)# key 1
R1(config-keychain-key)# key-string CISCO



KEYCHAIN1 이라는 열쇠고리를 생성합니다.
그리고 1 이라는 열쇠를 생성하고
이에 대한 비밀번호를 CISCO 라고 설정하였습니다.

R1(config-subif)# int s0/0.1
R1(config-subif)# ip rip authentication mode md5
R1(config-subif)# ip rip authentication key-chain KEYCHAIN1

R1(config-subif)# int s0/0.2
R1(config-subif)# ip rip authentication mode md5
R1(config-subif)# ip rip authentication key-chain KEYCHAIN1
R1(config-subif)# end



이제 인터페이스로 가서 이에 대한 인증을 설정하는 것입니다.
인증 mode에는 text 와 md5 가 있는데, md5로 암호화 하는 방식으로 하도록 하겠습니다.
이러한 암호화가 어떤 효과가 있는지는 나중에 wireshark로 직접 패킷을 잡아서 확인해 보도록 하겠습니다.

R1# copy run star


저장을 필수입니다~


###BB1
key chain KEYCHAIN1
key 1
key-string CISCO

key chain KEYCHAIN2
key 1
key-string CISCO

int s0/0.1
ip rip authentication mode md5
ip rip authentication key-chain KEYCHAIN2

int s0/0.2
ip rip authentication mode md5
ip rip authentication key-chain KEYCHAIN1

wr

BB1에서도 같은 방식으로 하나
s0/0.1 인터페이스에는 KEYCHAIN2,
s0/0.2 인터페이스에는 KEYCHAIN1
으로 인증을 하겠습니다.
앞에서 말했듯이 key와 key-string만 같으면 key chain은 달라도 상관이 없다는 것을 보여주기 위한 것입니다.


##BB2
key chain KEYCHAIN1
key 1
key-string CISCO

key chain KEYCHAIN2
key 1
key-string CISCO

int s0/0.1
ip rip authentication mode md5
ip rip authentication key-chain KEYCHAIN2

int s0/0.2
ip rip authentication mode md5
ip rip authentication key-chain KEYCHAIN1

wr

BB1과 똑같이 설정하고, 저장하도록 하겠습니다.
wr은 간단한 저장 명령어 입니다.
시험에서는 wr이 동작하지 않는 다는 소문도 있으니 참고 하시기 바랍니다.





인증 전까지의 파일을 올려 드리겠습니다.