라우팅
라우팅은 패킷을 전송하기 위해 송신자측에서 목적지까지의 경로를 정하고 정해진 경로를 따라 패킷을 전송하는 일련의 과정이다.
라우터는 라우팅 기능을 수행하며 네트워크 계층 주소를 참조하여 가능한 여러 경로 중 최선의 경로를 결정하게 된다.
라우팅 알고리즘은 관리자가 직접 라우팅 테이블을 설정하는 정적 라우팅 알고리즘과 네트워크 환경 변화에 능동적으로 대처 가능한 동적 라우팅 알고리즘으로 구분된다.
라우팅 프로토콜
인터넷과 같이 규모가 큰 네트워크에서 패킷을 효율적으로 전달하기 위해서는 라우팅 테이블은 반드시 동적으로 갱신되어야 한다. 이와 같이 네트워크 정보를 생성, 교환 그리고 제어하는 프로토콜을 총칭하여 라우팅 프로토콜이라 한다.
AS(autonomous system, 자율시스템)는 하나의 관리 도메인에 속해 있는 라우터의 집합을 말한다. AS 내에 운영되는 라우팅 프로토콜을 IGP라 하며 AS 간에 라우팅 정보를 교환하기 위한 프로토콜을 EGP라고 한다.
라우팅 알고리즘
1) 거리벡터 라우팅(DV, distance-vector)
거리벡터 라우팅에서 제일 처음으로 각 노드가 만드는 것은 인접한 이웃들의 기초 정보를 이용하여 작성된 자신의 최소 비용 트리이다. 거리 벡터 라우팅에서 라우터는 자신의 모든 이웃에게 자신이 가지고 있는 인터넷에 대한 정보가 불완전하더라도 자신이 알고 있는 네트워크 정보를 끊임없이 알려준다.
거리 벡터는 최소 비용트리처럼 목적지까지의 경로를 제공하지 않는다. 거리 벡터는 단지 목적지까지의 최소비용만을 제공한다.
2) 링크 상태 라우팅
링크 상태 라우팅을 사용하여 최소비용 트리를 작성하기 위해 각 노드는 각 링크의 상태를 알아야 하기 때문에 완전한 map이 필요하다. 링크의 상태집합을 링크상태 데이터베이스(LSDB, link-state database)라 부른다.
각 노드가 모든 인터넷에 대한 정보가 포함된 이 LSDB는 플러딩이라는 과정을 통해 만들어진다.
3) 경로 벡터 라우팅(PV, path-vector)
경로 벡터 라우팅에서 소스부터 모든 목적지까지의 경로는 스패닝 트리에 의해 결정된다. 하지만 스패닝 트리는 최소비용 트리가 아니다. 만약 목적지까지 하나 이상의 경로가 있다면, 근원지는 가장 최선의 규칙을 사용하여 경로를 선택할 수 있다.
유니캐스트 라우팅 프로토콜
RIP(Routing Information Protocol)
라우팅 정보 프로토콜(RIP)은 가장 오래되고 널리 사용되는 내부 라우팅 프로토콜 중 하나이다. 각 라우터는 거리 벡터 알고리즘을 이용하며 라우팅 테이블에 자율 시스템 내의 다양한 네트워크에 도착하는 방법과 거리를 홉수로 저장한다.
RIP에는 IPv4에서 사용할 수 있는 RIP 버전 1, 버전 2와 IPv6에서 사용할 수 있는 RIPng가 있다.
- 홉 카운트
지연, 대역폭 등과 같은 링크와 라우터의 성능 요소에서 좀 더 간단하고 독립적으로 나타내기 위해 비용은 네트워크의 수를 의미하는 홉 수로 정의된다.
RIP에서 경로의 최대비용은 15이다. 16은 무한대(연결 없음)로 생각한다. 이러한 이유로 RIP는 AS에서 사용된다.
- 포워딩 테이블
RIP에서 포워딩 테이블은 3개의 열을 가지는 테이블이다.
첫 번째 열은 목적지 네트워크의 주소를 나타내며, 두 번째 열은 패킷이 전송되어야 할 다음 라우터의 주소를 나타낸다. 마지막 세 번째 열은 목적지 네트워크에 도달하기 위해 홉 수로 표현된 비용을 의미한다.
- RIP 구현
라우터의 RIP 소프트웨어는 RIP 메시지로 서로 통신한다. RIP 메시지는 UDP를 사용하여 RIP-1과 RIP-2는 UDP 520번 포트를, RIPng는 521번 포트를 사용한다.
RIP-2는 CIDR 등의 기능을 지원하도록 RIP-1을 수정함. RIPng는 IPv6와의 호환성을 위해 만들어졌다.
- 문제점
· 느린 수렴(convergence)
기본 RIP에서 사용하는 거리 벡터 알고리즘은 모든 라우터가 모든 라우팅 정보를 정기적으로 공유하도록 설계됬다. 이는 모든 라우터가 같은 정보를 갖게 되기까지 오랜 수렴시간이 들며, 특히 토폴로지 변화가 전파되는데 시간이 많이 걸린다.
· 라우팅 루프
네트워크에 변화가 생겼을 때 즉시 라우팅 경로에 반영하지 못하므로 특정 경로에 루프가 생길 수 있다.
· 무한세기
느린 수렴에 관련된 문제 중 하나는 도착할 수 없어진 네트워크를 도착할 수 있다고 착각한 라우터가 엉뚱한 RIP 메시지를 생성하여 라우터 사이에서 계속 주고받는 것이 무한 세기 문제이다.
· 작은 무한값
RIP는 느린 수렴 문제를 줄이기 위해 무한값으로 작은 값(16)을 사용한다. 따라서 네트워크 규모에 제한을 받는다.
매트릭을 홉수로 제한함에 따라 회선속도와 같은 다른 정보를 라우팅에 반영할 수 없기 때문에 최적 경로를 항상 선택할 수는 없다.
해결방안 | 내용 |
Triggered update | 홉 수가 변경되었을 때 이를 즉시 통보함으로써 복구시간을 줄인다. |
Hold down | 매트릭이 무한대인 경로에 대해서는 일정 시간 동안 경로를 갱신하지 않고, 전체 네트워크의 경로가 새로 갱신될 때까지 기다린다. |
Split horizon | 라우터 A가 B를 거쳐 C로 전송하는 경우에 B와 C 사이에 장애가 발생한다면 A와 B 사이에서 루프가 발생할 수 있다. 이를 해결하기 위해 B가 A에게 보낸 정보는 다시 B에게 보내지 않는다. |
Route Poisoning | 회선의 고장을 감지하면 즉시 해당 경로의 매트릭을 16으로 지정하여 전체 네트워크에 방송함으로써 도달 불가능을 신속하게 알린다. |
RIPv2
RIPv1의 예약필드를 사용하여 기능을 확장하였다. 기본적인 동작은 RIPv1과 동일하며 서브넷마스크 식별, 경로정보 인증, AS 구별, 브로드캐스트와 멀티캐스트 전송 등의 기능이 추가되었다.
하지만 최대 홉수는 여전히 15로 제한되어 확장성 문제는 해결하지 못했다.
IGRP(Interior Gateway Routing Protocol)
RIP는 홉 수 제한으로 대규모 네트워크에는 적용하기가 어려웠고, 매트릭으로 홉수만을 사용하기 때문에 네트워크 상태를 적절히 반영하기 어려웠다.
IGRP는 하나의 매트릭 값만을 사용하는 대신 다섯 가지의 네트워크 파라미터를 이용하여 거리벡터를 계산한다. 이는 네트워크 상황에 맞게 알고리즘을 적절히 변형할 수 있음을 의미한다.
- IGRP Metric 계산 요소
매트릭 요소 | 특징 |
Bandwidth | 회선속도를 의미하며 1200bps에서 10Gbps까지 나타낼 수 있다. |
Delay | 회선을 사용하여 전송하는데 걸리는 시간이며 매체 지연시간을 포함한다. |
Reliability | 라우터가 동적으로 측정하며 1~255까지 설정 가능하다. |
부하(Load) | 부하를 나타내는 단위로 1~255까지 설정 가능하다. 255는 100% 이용되는 것을 의미한다. |
MTU | 회선이 처리할 수 있는 최대 프레임 크기를 나타낸다. |
EIGRP(Enhanced IGRP)
IGRP는 CIDR이나 VLSM과 같은 네트워크 기술을 지원하지 못하기 때문에 IGRP 기능을 확장한 EIGRP를 개발하였다.
거리 벡터 프로토콜이지만 IGRP나 RIP보다 더 복잡하다. 링크 상태 라우팅 프로토콜에 더 가까운 특성을 지녔다.
수렴 속도가 빠르며 부분적인 갱신을 지원하기 때문에 적은 대역폭을 필요로 한다.
OSPF(Open Shortest Path First)
OSPF는 RIP와 같은 Intradomain 라우팅 프로토콜이다. 하지만 OSPF는 링크 상태 라우팅 프로토콜을 기반으로 한다.
네트워크에 변화가 생겼을 경우에만 전체 네트워크에 플러딩 과정을 수행함으로써 라우팅 정보를 신속하게 갱신하여 수렴시간과 라우팅 트래픽의 양을 줄인다.
최적경로 계산을 위해 Dijkstra's 알고리즘이라는 링크상태 알고리즘을 이용한다.
OSPF는 보안을 위해 인증을 지원하고 세 가지 IP 주소 형태인 클래스 단위, 서브넷 단위, CIDR을 지원한다.
- OSPF 계층 구조
큰 네트워크를 잘 제어하고 관리할 수 있도록 OSPF에서는 큰 AS가 계층 구조를 가질 수 있다. 이 계층 구조에서 연결된 라우터와 네트워크를 영역으로 묶고 영역은 논리적 백본을 사용하여 연결된다.
기관에서 큰 네트워크 트래픽을 관리하기 위해 AS를 관리하는 것처럼 영역 내에서 지역적인 제어가 가능하다.
라우터의 브로드캐스팅은 영역 내로 제한되어 있어 영역 외부로 라우팅 정보 패킷이 전달되지 않는다. 영역 간의 정보전달은 오직 영역 경계 라우터(ABR)를 통해서만 수행된다.
BGP4(Border Gateway Protocol version 4)
경계게이트웨이 프로토콜 버전 4(BGP4)는 현재 인터넷에서 사용하고 있는 유일한 인터도메인 라우팅 프로토콜이다.
BGP4는 경로 벡터 알고리즘을 기반으로 하고 있지만 인터넷에서 네트워크의 접근성에 대한 정보를 제공하기 알맞다.
AS 번호를 매트릭으로 사용한다.
라우터 보안
라우터 모드
· User 모드 : 테스트, 현재 상태를 볼 수 있다. (제한된 명령어만 사용 가능)
· Privileged 모드 : 모든 명령어를 사용할 수 있고 configuration file을 조정할 수 있다.
· Configuration 모드 : 라우터의 구성 파일을 변경하는 경우에 사용하는 모드이다.
· RXBOOT 모드 : 라우터의 패스워드를 모르는 경우나 라우터의 이미지 파일에 문제가 생긴 경우에 복구를 위해 사용하는 모드이다.
· Setup 모드 : 라우터를 처음 구매해서 전원을 켰거나 라우터에 구성 파일이 없는 경우에 라우터가 부팅하면서 자동으로 들어가는 모드이다.
모드 변경 방법
enable 명령어는 privileged 모드로 변경할 때, disable은 다시 user 모드로 변경할 때 사용한다.
위의 예시는 cisco packet tracer로 실습을 진행했는데 단축명령어를 지원하므로 enable 명령어 대신 en, disable 명령어 대신 disa 까지만 쳐도 된다.
configuration terminal 명령어를 축약하여 conf t만 입력하였다. 설정모드로 변경하는 명령어로 다른 모드로 들어가기 위해 반드시 거쳐야 하는 모드이다. Ctrl/Z 를 사용하거나 exit 명령어로 빠져나갈 수 있다.
명령어는 전부 입력할 필요 없이 tab키로 자동완성 시킬 수 있다. interface 명령어로 특정 인터페이스에 해당하는 명령어를 실행한다. 이외에도 subinterface(서브 인터페이스 명령 실행), controller(컨트롤 모드의 설정 실행), line(라인에 대한 명령 실행), router(라우팅 프로토콜에 관련된 설정 실행) 등이 있다.
기본 라우터 명령어
· hostname 변경
· banner 설정
배너를 설정하는 명령어다. 라우터에 접속하면 배너 문구를 확인할 수 있다.
· interface ip address 변경
라우터 암호 설정
· 콘솔 패스워드 설정
콘솔 접속자에게 패스워드를 물어본다.
· 터미널 패스워드 설정
원격 관리를 위한 로그인에 필요한 암호 설정
· enable 패스워드 및 enable secret 패스워드
privileged 모드로 접근할 때 비밀번호를 입력하게 하는 명령어이다. enable password 혹은 enable secret을 사용할 수 있는데 secret은 암호를 암호화하여 저장하고 password는 평문으로 저장한다.
라우터 자체 보안 설정
· 암호설정을 통한 접근통제
계정을 설정한 후 원격에서 텔넷을 이용해 라우터에 접속할 때 계정 및 패스워드로 로그인하도록 설정한다.
· IP 주소 필터링 → 후술할 액세스 리스트
· 사용자별 권한 수준 지정
Cisco 라우터는 권한이 0-15 단계까지 있음. 사용자별로 권한 수준을 지정하여 보안 강화가 가능하다.
액세스 리스트
- Standard 액세스 리스트
access-list ACL-No {permit|deny} {source [source-wildcard]}| any}
패킷의 소스 IP만으로 패킷을 허용하거나 차단한다.
· ACL-No : ACL 관리 번호
· permit | deny : 라우터에서의 접근통제 허용/거절 설정 여부
· {source [source-wildcard]}| any} : 특정 IP를 지정할 경우 host를 명시한다. IP 대역을 지정할 경우 host를 명시하지 않고 wildcard 마스크를 명시한다. 모든 주소를 의미할 때는 any 키워드 사용
- Extended 액세스 리스트
access-list ACL-No [permit|deny] [protocol] s_ip_addr s_net_mask d_ip_addr d_net_mask [eq|gt ..] port [established]
패킷의 소스 IP뿐만 아니라 목적지 IP, 포트, 프로토콜 등을 이용하여 좀 더 확장된 기능을 이용할 수 있다.
· permit | deny : 접근통제 허용/거절 설정
· protocol : TCP,UDP 등 응용프로그램이 사용하는 프로토콜 정의
· eq | gt : 패킷 내의 port 번호와 비교 연산 정의
· port : 제한하고자 하는 서비스 포트 번호를 정의
extended list의 예시이다. 172.16.0.1/24 대역에서 출발하고 목적지가 100.100.100.1이며 목적지 포트가 80이상인 TCP 패킷을 전부 차단하겠다는 의미이다.
- 액세스 리스트를 인터페이스에 적용
각 인터페이스에 내리는 명령이다. 액세스 리스트 명령을 인터페이스에 연결해 주는 기능을 한다.
in/out은 액세스 리스트를 인터페이스의 들어오는 쪽(in)에 부여할 것인가 나오는 쪽(out)에 부여할 것인가를 결정한다. out이 디폴트이다.
- 액세스 리스트의 주요 4가지 규칙
1. 액세스 리스트는 윗줄부터 하나씩 차례로 수행한다.
2. 액세스 리스트의 마지막 line에 permit any를 넣지 않을 경우 default로 어느 액세스 리스트와도 match되지 않은 나머지 address는 deny된다.
3. 액세스 리스트의 새로운 line은 항상 맨 마지막에 추가되므로 line의 선택적 추가나 제거가 불가능하다.
4. interface에 대한 액세스 리스트의 정의가 되어 있지 않은 경우 결과는 permit any가 된다.
라우터를 이용한 네트워크 보안 설정
- ingress 필터링 설정
ingress 필터링은 액세스 리스트를 활용하여 라우터 내부의 사내 네트워크로 유입되는 패킷의 소스 ip나 목적지 포트 등을 체크하여 허용하거나 거부하도록 필터링하는 것이다.
만약 외부에서 유입되는 IP주소가 내부의 IP 주소라면 공격자에게 악용된다고 판단하고 차단되어야 한다. 또, 예약된 IP 주소가 유입된다면 이 역시 차단하는 것이 권장된다.
- egress 필터링 설정
egress 필터링은 내부에서 라우터 외부로 나가는 패킷의 소스 ip를 체크하여 필터링하는 것이다.
만약 라우터 내부에서 220.1.2.0/24의 C 클래스 대역을 사용한다면 라우터를 통과하여 외부로 나가는 트래픽의 소스 ip는 반드시 이 대역이어야 정상이며 나머지는 모두 위조된 패킷일 것이다.
- Null routing 필터링(blackhole 필터링)
blackhole 필터링은 특정한 ip 또는 ip 대역에 대해서 Null이라는 가상의 쓰레기 인터페이스로 보내도록 함으로써 패킷의 통신이 되지 않도록 하는 것이다. DDoS 공격에 대한 대응 방법으로 네트워크 트래픽이 과도하게 발생할 때 해당 목적지 IP를 망내에서 통신할 수 없도록 차단하는 경우에도 사용할 수 있다.
- Unicast RPF 필터링
Unicast RPF의 원리는 인터페이스를 통해 들어오는 패킷의 소스 ip에 대해 라우터 테이블을 확인하여 들어온 인터페이스로 다시 나가는지 확인하는 것이다.
인터페이스로 유입되는 출발지 ip 주소를 라우팅 정보를 이용해 점검하고 내부로 유입되어 reverse path가 존재하면 패킷을 통과시키고 존재하지 않으면 그 ip 주소를 출발지 주소가 위조된 패킷으로 판단하고 차단한다.
라우팅 프로토콜 보안
· static 라우팅 : 가장 안전한 라우팅 방법으로 라우팅 프로토콜을 사용하지 않기에 공격자가 임의로 라우팅 정보를 변경하거나 조작할 수 없다.
· dynamic 라우팅 : 안전하게 사용하기 위해 라우팅 프로토콜에 인증기능을 적용한다.