νƒœκ·Έ 보관물: RIP

[Router] RIP

Routing Information Protocol
μ‚°μ—… ν‘œμ€€μœΌλ‘œ κ°œλ°œλ˜μ—ˆλ‹€κ°€ 이후 인터넷 ν‘œμ€€μœΌλ‘œ λ°œμ „λœ ν”„λ‘œν† μ½œ.
Xerox(제둝슀)의 PARC(νŒ”λ‘œμ•Œν†  μ—°κ΅¬μ†Œ)μ—μ„œ Ethernet μœ„μ— μ‚¬μš©ν•  더 높은 계측에 μ†ν•œ PUP(PARC Universal Protocol)을 κ°œλ°œν–ˆλ‹€.
그리고 PUP λΌμš°νŒ…μ— μ‚¬μš©ν•˜κΈ° μœ„ν•œ GWINFO(κ²Œμ΄νŠΈμ›¨μ΄ 정보 ν”„λ‘œν† μ½œ)을 λ§Œλ“€μ—ˆκ³ , 이게 RIPκ°€ λ˜μ—ˆλ‹€.
RIPλŠ” BSDμ—μ„œ μ‚¬μš©λ˜λ©΄μ„œ 널리 μ“°μ΄κ²Œ λ˜μ—ˆλ‹€. 1988λ…„ IETFμ—μ„œ RFC 1058 “Routing Information Protocol”을 정식 λͺ…μ‹œν•˜μ˜€λ‹€.

  1. RIP νŠΉμ§•
  2. RIP νŒ¨ν‚· 포맷
  3. RIP μ„€μ •
  4. RIP λ³΄μ•ˆ

1. RIP νŠΉμ§•

– RIPv1, RIPv2, IPv6용 RIPngκ°€ μžˆλ‹€.
– RIPv1, v2λŠ” UDP 520번, RIPngλŠ” UDP 521λ²ˆμ„ μ‚¬μš©ν•œλ‹€.
– ν•œ μž₯λΉ„λ‘œλ§Œ 전솑할 λ•ŒλŠ” Unicast 방식을 μ‚¬μš©ν•œλ‹€. μ—¬λŸ¬ μž₯λΉ„λ‘œ 전솑할 λ•Œ, RIPv1λŠ” Broadcast, RIPv2와 RIPngλŠ” Multicast 방식을 μ‚¬μš©ν•œλ‹€.
– λ©”νŠΈλ¦­μœΌλ‘œ Hop count λ₯Ό μ‚¬μš©ν•˜λ©°, 링크 속도λ₯Ό λ°˜μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€. λΌμš°ν„° 홉 μˆ˜κ°€ 16 이상일 λ•Œ, λ„달할 수 μ—†λŠ” λ„€νŠΈμ›Œν¬λΌκ³  νŒλ‹¨ν•œλ‹€.
– ν† ν΄λ‘œμ§€ 변화와 상관없이 30μ΄ˆλ§ˆλ‹€ λΌμš°νŒ… ν…Œμ΄λΈ” 전체λ₯Ό 인접 λΌμš°ν„°λ‘œ μ „μ†‘ν•˜κ³ , μ»¨λ²„μ „μŠ€ μ‹œκ°„μ΄ κΈΈλ‹€.

1-1. 메세지 μœ ν˜•

(1) RIP Request : 타 λΌμš°ν„°μ˜ λΌμš°νŒ… ν…Œμ΄λΈ” 일뢀/전체λ₯Ό μš”μ²­ν•œλ‹€. ex) λΌμš°ν„°κ°€ μΌœμ‘Œμ„ λ•Œ.
(2) RIP Respond : λΌμš°νŒ… ν…Œμ΄λΈ” 일뢀/전체λ₯Ό μ „μ†‘ν•œλ‹€. 30μ΄ˆλ§ˆλ‹€ μ „μ†‘ν•˜κ±°λ‚˜ Request 메세지에 λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ μ „μ†‘ν•œλ‹€.

1-2. Timer

(1) νŠΉμ • 링크가 λ§Œλ£Œλ˜λŠ” 상황에 λŒ€λΉ„ν•˜κΈ° μœ„ν•΄ 180초의 Timeout Timerλ₯Ό κ°–λŠ”λ‹€. 180초 μ•ˆμ— ν•΄λ‹Ή λΌμš°νŒ… 정보λ₯Ό λ°›μœΌλ©΄ TimerλŠ” μ΄ˆκΈ°ν™” 되고, 그렇지 μ•ŠμœΌλ©΄ Metric을 16으둜 올린 ν›„ λ‹€μŒ λ‹¨κ³„λ‘œ λ„˜μ–΄κ°„λ‹€.
(2) Garbage-Collection Timerλ₯Ό λ™μž‘μ‹œμΌœ 120초 λ™μ•ˆ μ‚­μ œ λŒ€κΈ°λ₯Ό ν•œλ‹€. 이 λ•Œ, Respond 메세지λ₯Ό 보내더라도 μ‚­μ œ λŒ€κΈ° 쀑인 λΌμš°νŒ… 정보λ₯Ό ν¬ν•¨μ‹œμΌœ μ „μ†‘ν•œλ‹€. λ§Œμ•½ λ‹€λ₯Έ λΌμš°ν„°λ‘œ ν•΄λ‹Ή λΌμš°νŒ… 정보가 λ“€μ–΄μ˜€λ©΄, μœ νš¨ν•œ λΌμš°νŒ… μ •λ³΄λ‘œ κ°„μ£Όν•˜κ³  μ¦‰μ‹œ Timerλ₯Ό μ΄ˆκΈ°ν™” μ‹œν‚¨λ‹€.

*** λΌμš°νŒ… 정보λ₯Ό μ‚­μ œν•˜κΈ° μ „ Timeout Timer, Garbage-Collection Timerλ₯Ό κ±°μ³μ•Ό μ‚­μ œλœλ‹€.


2. RIP νŒ¨ν‚· 포맷

[ RIP 메세지 포맷 ]
– Command: RIP 메세지 μœ ν˜• 지정. 1 – RIP Request, 2 – RIP Respond
– Version: RIP 버전 지정
– 0: μ˜ˆμ•½λœ ν•„λ“œλ‘œ 0으둜 νŒ¨λ”©
– RTE: λΌμš°νŒ… 정보λ₯Ό κ°–κ³  μžˆλŠ” ν•„λ“œ. μ΅œμ†Œ 1개~ μ΅œλŒ€ 25개의 λΌμš°νŒ… 정보λ₯Ό κ°–κ³  μžˆλ‹€.

[ RTE 포맷 ]
– Address Family Identifier: μ£Όμ†Œ μœ ν˜• 지정. IPμ£Όμ†ŒλŠ” 2둜 지정
– Router Tag: κ²½λ‘œμ— λŒ€ν•œ μΆ”κ°€ 정보
– IP μ£Όμ†Œ, Subnet Mask, Next Hop, Metric

λ§Œμ•½, RIP 인증을 μ‚¬μš©ν•˜κ²Œλ˜λ©΄,  λΌμš°νŒ… 정보에 인증 정보 1κ°œκ°€ ν¬ν•¨λ˜κΈ° λ•Œλ¬Έμ— μ΅œλŒ€ 24κ°œκΉŒμ§€ 갖을 수 μžˆλ‹€.


3. RIP μ„€μ •

3-1. RIP κΈ°λ³Έ μ„€μ •

RIP μ„€μ • μ‹œ λΌμš°νŒ… 정보λ₯Ό μ „μ†‘ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λŠ” λ°˜λ“œμ‹œ 섀정에 포함.

Router(config)# router rip
Router(config-router)# version 2
Router(config-router)# network <NETWORK_ID>

3-2. RIP λ„€νŠΈμ›Œν¬ μΆ•μ•½

Default Route κ΄‘κ³ 
RIPκ°€ λ™μž‘ν•˜λŠ” 인접 λΌμš°ν„°λ‘œ Default Routeλ₯Ό κ΄‘κ³ ν•œλ‹€.

# 방법 1
Router(config)# ip route 0.0.0.0 0.0.0.0 <NEXT_HOP_IP>
Router(config)# router rip
Router(config-router)# default-information originate

# 방법 2
Router(config)# ip route 0.0.0.0 0.0.0.0 <NEXT_HOP_IP>
Router(config)# router rip
Router(config-router)# redistribute static

RIP μžλ™ μΆ•μ•½
좕약을 톡해 λ„€νŠΈμ›Œν¬μ˜ μ•ˆμ •μ„±κ³Ό μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€. μžλ™ 좕약은 기본으둜 μ„€μ •λ˜μ–΄ μžˆλ‹€.
172.30.1.0/24λ₯Ό μ‚¬μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό κ΄‘κ³ ν•  λ•Œ,  μžλ™ 좕약이 λ˜μ–΄μžˆλ‹€λ©΄ IP ν΄λž˜μŠ€μ— 맞게 172.30.0.0/16으둜 κ΄‘κ³ ν•œλ‹€.

# μžλ™ μΆ•μ•½ ν•΄μ œ
Router(config)# router rip
Router(config-router)# no auto-summary

RIP μˆ˜λ™ μΆ•μ•½
κ΄€λ¦¬μž μž„μ˜λ‘œ λ„€νŠΈμ›Œν¬λ₯Ό μΆ•μ•½ν•œλ‹€. μˆ˜λ™μœΌλ‘œ μΆ•μ•½ν•  λ•Œ, μ£Ό λ„€νŠΈμ›Œν¬ λ²”μœ„ λ‚΄μ—μ„œλ§Œ μΆ•μ•½ν•  수 μžˆλ‹€. RIPv2둜 μžλ™ μΆ•μ•½ ν•΄μ œλœ μƒνƒœμ—μ„œλ§Œ μ„€μ •ν•  수 μžˆλ‹€.
‘192.168.0.128/26’, ‘192.168.0.192/26’ 
—β†’ ‘192.168.0.128/25’ μΆ•μ•½ κ°€λŠ₯
‘192.168.0.0/24’, ‘192.168.1.0/24’
—β†’ ‘192.168.0.0/23’ μΆ•μ•½ λΆˆκ°€

Router(config)# int <INTERFACE>
Router(config-if)# ip summary-address rip <NETWORK_ID> <SUBNET>

3-3. Offset Listλ₯Ό μ΄μš©ν•œ λ©”νŠΈλ¦­ μ‘°μ •

Offset Listλž€, EIGRPλ‚˜ RIP와 같은 거리 벑터 λΌμš°νŒ… ν”„λ‘œν† μ½œμ—μ„œ μ‚¬μš©ν•˜λŠ” ‘솑.μˆ˜μ‹  λ©”νŠΈλ¦­μ„ μ¦κ°€μ‹œν‚€λŠ” λ©”μ»€λ‹ˆμ¦˜’이닀.

예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같은 ν† ν΄λ‘œμ§€κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž.

ν† ν΄λ‘œμ§€. OFFSET LIST

경둜 A(R1β†’R2β†’R3) 와 B(R1β†’R3)λ₯Ό λΆ€ν•˜ λΆ„μ‚° μ‹œν‚€κΈ° μœ„ν•΄μ„  Offset Listλ₯Ό μ‚¬μš©ν•œλ‹€. A의 λ©”νŠΈλ¦­μ€ 2, B의 λ©”νŠΈλ¦­μ€ 1μ΄λ―€λ‘œ B의 λ©”νŠΈλ¦­μ„ 1 μ˜¬λ €μ£Όμ–΄μ•Ό ν•œλ‹€.

R1(config)# ip access-list standard <ACL_NAME>
R1(config-std-nacl)# permit <NETWORK_ID> <WILDMASK>
R1(config-std-nacl)# exit
R1(config)# 
R1(config)# router rip
R1(config-router)# offset-list <ACL_NAME> in [0-16] <INTERFACE>
R1(config-router)# offset-list <ACL_NAME> out [0-16] <INTERFACE>

-----

R1(config)# ip access-list standard IP_LIST
R1(config-std-nacl)# permit 10.10.10.0 0.0.0.255
R1(config-std-nacl)# exit
R1(config)# 
R1(config)# router rip
R1(config-router)# offset-list IP_LIST in 1 fa0/1
R1(config-router)# offset-list IP_LIST out 1 fa0/1

1: ACL을 μ΄μš©ν•΄ λ©”νŠΈλ¦­μ„ μ‘°μ •ν•  λ„€νŠΈμ›Œν¬λ₯Ό μ§€μ •ν•œλ‹€.
6: in-λΌμš°νŒ… 정보 μˆ˜μ‹  μ‹œ λ©”νŠΈλ¦­ 증가, out-λΌμš°νŒ… 정보 솑신 μ‹œ λ©”νŠΈλ¦­ 증가, λ©”νŠΈλ¦­ 값은 0~16 값을 지정할 수 μžˆλ‹€.


4. RIP λ³΄μ•ˆ

4-1. λΌμš°νŒ… 정보 인증

λΌμš°νŒ… 정보λ₯Ό μˆ˜μ‹ ν•  λ•Œ, μ•”ν˜Έκ°€ μΌμΉ˜ν•  λ•Œλ§Œ λΌμš°νŒ… ν…Œμ΄λΈ”μ— μ €μž₯ν•œλ‹€. 직접 μ—°κ²°λœ μž₯λΉ„λΌλ¦¬λ§Œ μ„€μ •ν•˜λ©΄ λœλ‹€. μ–‘μͺ½ λΌμš°ν„° λͺ¨λ‘ μ„€μ •ν•œλ‹€.

μ„€μ •

Router(config)# key chain <CHAIN_NAME>
Router(config-keychain)# key [0-2147483647]
Router(config-keychain-key)# key-string <WORD>
Router(config-keychain-key)# exit
Router(config-keychain)# exit
Router(config)# 
Router(config)# int <INTERFACE>
Router(config-if)# ip rip authentication key-chain <CHAIN_NAME>
Router(config-if)# ip rip authentication mode [md5|text]

4-2. λΌμš°νŒ… 정보 차단

νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ‘œ μ˜€λŠ” λΌμš°νŒ… 정보λ₯Ό μ°¨λ‹¨ν•œλ‹€.

μ„€μ •

Router(config)# ip prefix-list <PREFIX_NAME> deny 0.0.0.0/0 le 32
Router(config)#
Router(config)# router rip
Router(config-router)# distribute-list prefix <PREFIX_NAME> in <INTERFACE>
Router(config-router)# distribute-list prefix <PREFIX_NAME> out <INTERFACE>

1: (1) λΌμš°νŒ… 정보λ₯Ό μ°¨λ‹¨ν•˜κΈ° μœ„ν•΄ Prefix Listλ₯Ό μ‚¬μš©ν•œλ‹€. Access Listλ₯Ό μ‚¬μš©ν•΄λ„ λœλ‹€. (2) 만일, νŠΉμ • κ΄‘κ³ λ§Œ λ°›μœΌλ €λ©΄ denyλŒ€μ‹  permit을 μ‚¬μš©ν•œλ‹€. ‘deny 0.0.0.0/0 le 32’λŠ” λͺ¨λ“  λ„€νŠΈμ›Œν¬λ₯Ό μ°¨λ‹¨ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€. Prefix List에 λŒ€ν•œ λ‚΄μš©μ€ μΆ”ν›„ λ‹€μ‹œ μžμ„Ένžˆ 확인해보도둝 ν•œλ‹€.
4,5: in은 ν•΄λ‹Ή μΈν„°νŽ˜μ΄μŠ€λ‘œ μˆ˜μ‹ ν•˜λŠ” 것에 λŒ€ν•œ λ‚΄μš©, out은 μ†‘μ‹ ν•˜λŠ” 것에 λŒ€ν•œ λ‚΄μš©μ„ μ˜λ―Έν•œλ‹€.