[KEDUIT] 클라우드 컴퓨팅과 보안솔루션을 활용한 DC 엔지니어 양성교육 - Day26
1. 서론
오늘은 동적 라우팅 프로토콜의 종류와 RIP 구성에 대하여 배워보았다.
2. 본론
1. Cisco IOS
1. Dynamic Routing Protocol
Dynamic Routing Protocol은 크게 중거리용인 IGP(Interior Gateway Protocol)와 대륙과 대륙 또는 나라와 나라간에 사용하는 중장거리용인 EGP(Exterior Gateway Protocol)로 나뉘어진다. 그리고 그 종류는 아래와 같다.
//IGP
1. Distance Vector (거리와 방향만 고려하는 방식)
- RIP(Routing Information Protocol)
- IGRP(Interior Gateway Routing Protocol)
- EIGRP(Enhanced IGRP)
2. Link-State
- OSPF(Open Shortest Path First) (LG에서 사용중)
- IS-IS(Intermediate System to Intermediate System) (kT에서 사용중)
//EGP
- BGPv4(Border Gateway Protocol)
2. RIP
오늘은 IGP 중 하나인 RIP(Routing Information Protocol)에 대하여 배워보고 설정해 보았다. 우선 RIP의 특징으로는 아래와 같은 것들이 있다.
1. Classful
2. Distance Vector
3. Metric - Hop count 사용
4. Based on the Bellman-Ford algorithm
5. ver1 -> 255.255.255.255 (Broadcast) 사용
ver2 -> 224.0.0.9 (Multicast) 사용
6. Auto-summary (by class)
7. Split-horizon
8. udp 520번 사용
9. route poison (Max 15 Router) / poison reverse //split horizon enable 여부와 상관없이 전달됨. 예를들어 R1의 loopback에 문제가 생겼을 때 metric 16으로 정보를 전달함.
10. hello -> 30s //EIGRP, OSPF, IS-IS 는 Triggered Update
invalid -> 180s
holdtime -> 180s
flush time -> 270s
//R1-4
# conf t
# no ip domain lookup
# line c 0
# logging sync
# exec-t 0
# exit
# int s1/0
# no sh
# enc frame-relay
# no fram inverse
# clock rate 64000
//R1
# int lo0
# ip add 14.14.1.1 255.255.255.0
# exit
# int s1/0
# ip add 14.14.12.1 255.255.255.0
# fram map ip 14.14.12.2 102 br
# end
# copy r s
//R2
# int lo0
# ip add 14.14.2.2 255.255.255.0
# exit
# int s1/0.12 m
# ip add 14.14.12.2 255.255.255.0
# fram map ip 14.14.12.1 201 br
# exit
# int s1/0.23 m
# ip add 14.14.23.2 255.255.255.0
# fram map ip 14.14.23.2 203 br
# end
# copy r s
//R3
# int lo0
# ip add 14.14.3.3 255.255.255.0
# exit
# int s1/0.23 m
# ip add 14.14.23.3 255.255.255.0
# fram map ip 14.14.23.2 302 br
# exit
# int s1/0.34 p
# ip add 14.14.34.3 255.255.255.0
# fram inter 304
# end
# copy r s
//R4
# int lo0
# ip add 14.14.4.4 255.255.255.0
# exit
# int s1/0.34 p
# ip add 14.14.34.4 255.255.255.0
# fram inter 403
# end
# copy r s
//R1
# router rip
# network 14.14.1.0 //Auto-Summary를 관찰하기 위한 설정
# network 14.14.12.0
//R2-4
# router rip
# network 14.0.0.0
//R2
# int lo5
# ip add 5.5.0.1 255.255.255.0
# ip add 5.5.1.1 255.255.255.0 sec
# ip add 5.5.2.1 255.255.255.0 sec
# ip add 5.5.3.1 255.255.255.0 sec
# exit
# router rip
# network 5.0.0.0
//R3
# show ip route //verify. 출구 Interface의 Class를 고려한 Network가 일치하지 않으면 Auto Summary됨.
//확인 후 lo0을 제외하고 모두 삭제
//R1
# debug ip rip //broadcast로 통신하는것(s1/0, lo0에서 sending)과 Split Horizon이 안된것(다른 라우터로부터 라우팅 정보를 hop count를 더하여 부정확하고 불필요하게 다시 전달)을 확인 가능
# un all
# conf t
# router rip
# passive-interface lo0 //lo0에서 sending하는것 방지
# end
# debug ip rip //verify
# un all
# show ip int s1/0 //Split horizon이 꺼져있는것 확인가능.
# int s1/0
# ip split-horizon //split-horizon on. 주인터페이스에서만 disable이므로 R2-4는 설정 필요 x
# end
# debug ip rip //verify
# un all
//R2 - 4
# conf t
# router rip
# passive-interface lo0
//인접한 두 라우터간 Auto Summary 문제점
//R2
# int lo100
# ip add 5.5.0.1 255.255.255.0
# ip add 5.5.1.1 255.255.255.0 sec
# ip add 5.5.2.1 255.255.255.0 sec
# ip add 5.5.3.1 255.255.255.0 sec
# exit
# router rip
# network 5.0.0.0
//R3
# int lo100
# ip add 5.5.4.1 255.255.255.0
# ip add 5.5.5.1 255.255.255.0 sec
# ip add 5.5.6.1 255.255.255.0 sec
# ip add 5.5.7.1 255.255.255.0 sec
# exit
# router rip
# network 5.0.0.0
//위와 같은 경우 RIP를 구성했을 때, R2에서는 R3로 5.0.0.0/8의 라우팅 정보가 넘어가고 R3에서는 R2로 5.0.0.0/8의 라우팅 정보가 넘어간다. 하지만 R2, R3입장에서 5.0.0.0/8보다 상세한 라우팅 정보가 있으므로 Longest Match Rule에 따라 축약된 라우팅 정보가 주입되지 않는다. 따라서 결과적으로 R2의 lo100 네트워크와 R3의 lo100 네트워크의 통신이 불가능하다.
//해결방법
//R3
# show ip protocols //Send는 1, Recv는 1,2 인것을 확인가능
# conf t
# int s1/0.23
# ip rip send version 2
# exit
# router rip
# no auto-summary
# end
//R2
# conf t
# int s1/0.23
# ip rip send version 2
# exit
# router rip
# no auto-summary
# end
//하지만 위의 설정으로 인해 R2,R3 Routing Table의 크기가 커져 Routing이 늦어지는 문제가 생긴다. 이는 아래와 같은 방법으로 수동축약을 할 수 있다.
//R2
# conf t
# int s1/0.23
# ip summary-address rip 5.5.0.0 255.255.252.0
# end
# clear ip ro * //refresh routing table
//R3
# conf t
# int s1/0.23
# ip summary-address rip 5.5.4.0 255.255.252.0
# clear ip ro * //refresh routing table
//Loopback Network 정보를 주고받아야 하는 두 라우터(R2,R4) 사이에 다른 라우터(R3)가 껴있을 때
//초기화
//R2
# conf t
# int s1/0.23
# no ip summary-address rip 5.5.0.0 255.255.252.0
# exit
# router rip
# auto-summary
//R3
# conf t
# no int lo100
# int s1/0.23
# no ip summary-address rip 5.5.4.0 255.255.252.0
# exit
# router rip
# auto-summary
//재설정
//R2
# conf t
# router rip
# no auto
# exit
# int s1/0.23
# ip rip send version 2
//R4
# conf t
# lo100
# ip add 5.5.4.0 255.255.252.0
# ip add 5.5.5.0 255.255.252.0 sec
# ip add 5.5.6.0 255.255.252.0 sec
# ip add 5.5.7.0 255.255.252.0 sec
# exit
# router rip
# exit
//R3
# clear ip ro *
# show ip route //Longest Match rule에 의해 R2에서 넘어온 24bits 라우팅 테이블에 있는 목적지면 R2로 보내고 나머지는 R4로 보냄. 위와 같이 동작하기 위해 R2, R4의 설정을 반대로 해도 됨
3. Partial Mesh
//R1-4
# conf t
# no ip domain lookup
# line c 0
# logging sync
# exec-t 0
# exit
# int s1/0
# no sh
# encap frame
# no fram inverse
# clock rate 64000
//위 문제 설정상 R2는 Split Horizon을 disable시켜 R1, R3에서 받은 Routing 정보를 서로에게 전달해야 하고 R1, R3는 enable 시켜야 한다. 또한 주인터페이스는 기본적으로 disable 상태며, 서브인터페이스는 enable 상태라는 점을 유의해야 한다.
//R1
# int lo0
# ip add 14.14.1.1 255.255.255.0
# exit
# int s1/0
# ip add 14.14.123.1
# fram map ip 14.14.123.2 102 br
# fram map ip 14.14.123.3 102 br
# ip split-horizon //주인터페이스라 disable 상태
//R2
# int lo0
# ip add 14.14.2.2 255.255.255.0
# exit
# int s1/0.123 m
# ip add 14.14.123.2 255.255.255.0
# fram map ip 14.14.123.1 201 br
# fram map ip 14.14.123.3 203 br
//R3
# int lo0
# ip add 14.14.3.3 255.255.255.0
# exit
# int s1/0.123 m
# ip add 14.14.123.3 255.255.255.0
# fram map ip 14.14.123.1 302 br
# fram map ip 14.14.123.2 302 br
# exit
# int s1/0.34 p
# ip add 150.1.34.1 255.255.255.0
# fram inter 304
//R4
# int lo0
# ip add 150.1.4.4 255.255.255.0
# int s1/0.34 p
# ip add 150.1.34.254 255.255.255.0
# fram inter 403
//R1-3
# router rip
# version 2
# network 14.0.0.0
# no auto-summary
//R2
# conf t
# int s1/0.123
# no ip split-horizon //주인터페이스가 아니면 split-horizon이 기본적으로 enable 상태다. 따라서 R1과 R3에서 받은 Routing Table을 서로에게 전달하지 않으므로 disable 시켜줘야 한다.
//R1-2
# router rip
# passive interface lo0
//R4
# conf t
# ip route 0.0.0.0 0.0.0.0 s1/0.34 150.1.34.1
//R3
# conf t
# router rip
# passive interface default
# no passive interface s1/0.34 //R3 입장에서는 loopback 뿐만 아니라 R4 방향으로도 RIP 소통을 할필요가 없다. 두개의 인터페이스를 passive로 지정해도 되지만, interface가 많은 경우 위처럼 모두 passive로 설정한 다음 필요한 인터페이스만 no passive로 설정해도 된다.
# redistribute static metric 2//R3의 다음 라우터인 R2로부터 R4의 Network까지 hop이 2
# exit
# ip route 150.1.4.0 255.255.255.0 s1/0.34 150.1.34.254
위와 같은 구조에서는 상관 없지만, R1-2이 RIP, R3-4가 Static일 경우 static metric 값을 2로 고정해서 redistribute 해주면 R1의 Routing Table 상의 R3-4까지 hop수가 고정되어 틀리게 나타난다. 이를 해결하기 위해서는 Route-map과 Prefix-list가 사용되며 특징은 아래와 같다.
//Route-map
네트워크 경로 조정 및 차단, metric 값 설정 등의 용도로 사용되는 일종의 루트 조정 도구
//Prefix-list
Prefix 방식으로 마스크를 표현하는 네트워크 지정 도구
그리고 이를 적용하는 방법은 아래와 같다.
//R3
//hop수가 1 더 많은 150.1.5.0 네트워크가 있다고 가정
# conf t
# router rip
# no redistribute static metric 2
# exit
!
# ip prefix-list HOP1 permit 150.1.4.0/24
# ip prefix-list HOP2 permit 150.1.5.0/24
# router rip
!
# redistribute static route-map STATIC_NET
# route-map STATIC_NET 10
# match ip address prefix HOP1
# set metric 2
# exit
!
# route-map STATIC_NET 20
# match ip address prefix HOP2
# set metric 3
3. 결론
시간이 잘간다.
4. 참고자료
Ⅰ. 문웅호, 정보통신망
Ⅱ. 문웅호, 하드웨어
클라우드 엔지니어를 꿈꾸며 공부를 시작한 초보 엔지니어입니다. 틀린점 또는 조언해주실 부분이 있으시면 친절하게 댓글 부탁드립니다. 방문해 주셔서 감사합니다 :)
댓글남기기