소개
이 문서에서는 Null 인터페이스에 대한 고정 경로가 라우팅 루프를 방지하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서의 정보는 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
배경 정보
Null 인터페이스는 일반적으로 라우팅 루프를 방지하는 데 사용됩니다. 예를 들어 EIGRP(Enhanced Interior Gateway Routing Protocol)는 경로 그룹을 요약할 때 항상 Null0 인터페이스에 경로를 생성합니다. 라우팅 프로토콜이 요약될 때마다 라우터가 해당 요약 내의 모든 IP 주소에 대한 트래픽을 수신할 수 있음을 의미합니다. 모든 IP 주소가 항상 사용 중인 것은 아니기 때문에 요약에 대한 트래픽을 수신하는 라우터에서 기본 경로가 사용되는 경우 패킷이 반복될 위험이 있습니다.
명령 구문
Null0에 대한 고정 경로는 일반 고정 경로입니다. 단, 가상 Cisco IOS 인터페이스인 Null0 인터페이스를 가리킵니다. ip route 명령에 대한 자세한 내용은 IP Routing Protocol-Independent Commands A~R 장의 ip route 섹션을 참조하십시오. 다음 섹션에서는 ip route 명령을 사용하여 Null0에 대한 고정 경로를 생성하는 방법의 예를 보여줍니다.
예
고정 경로를 Null0에 추가해야 하는 일반적인 시나리오는 많은 클라이언트가 다이얼하는 액세스 서버의 경우입니다. 이 시나리오에서는 호스트 경로가 액세스 서버 라우팅 테이블에 설치됩니다. 호스트 경로를 통해 전체 네트워크를 플러딩하지 않고 이러한 클라이언트에 연결할 수 있도록 네트워크의 다른 라우터에는 일반적으로 액세스 서버를 가리키는 요약 경로가 있습니다. 이 컨피그레이션 유형에서 액세스 서버에는 액세스 서버 Null0 인터페이스를 가리키는 동일한 요약 경로가 있어야 합니다. 그렇지 않은 경우, 외부 호스트가 현재 다이얼된 클라이언트에 할당되지 않았지만 요약 경로의 일부인 IP 주소에 연결하려고 시도할 때 라우팅 루프가 발생할 수 있습니다. 이는 액세스 서버에 대상에 대한 특정 호스트 경로가 없기 때문에 액세스 서버가 액세스 서버 기본 경로를 통해 패킷을 다시 코어 네트워크로 반송하기 때문입니다.
다음 예를 고려하십시오.
네트워크 토폴로지
소형 ISP(ISP-R1)는 사용자 중 한 명에게 192.168.0.0/16의 네트워크 블록을 제공합니다. 이 예에서 사용자는 /24 네트워크에서 192.168.0.0/16을 분할했으며 현재는 192.168.1.0/24 및 192.168.2.0/24만 사용합니다. 라우터 ISP-R1에서 ISP는 사용자 라우터(cust-R2)를 향하는 192.168.0.0/16에 대한 고정 경로를 구성합니다. 그런 다음 ISP는 라우터 BB-R3로 표시되는 백본 ISP에 연결합니다. 라우터 BB-R3는 ISP-R1에 기본 경로를 전송하고 ISP-R1에서 BGP를 통해 네트워크 192.168.0.0/16을 수신합니다.
이제 인터넷(백본 ISP 라우터 BB-R3)에서 사용자 라우터 cust-R2로의 연결이 보장됩니다. cust-R2에는 ISP-R1을 가리키도록 구성된 기본 경로가 있기 때문입니다. 그러나 패킷이 192.168.0.0/16 범위를 벗어나 사용되지 않는 네트워크 블록으로 향하는 경우 cust-R2 라우터는 ISP-R1에 대한 기본 경로를 사용하여 해당 패킷을 전달합니다. 그런 다음 TTL이 만료될 때까지 ISP-R1과 cust-R2 사이를 순환합니다. 이는 라우터 CPU 및 링크 사용률에 큰 영향을 미칠 수 있습니다. 사용되지 않는 IP 주소에 대한 이러한 트래픽이 발생할 수 있는 위치의 예로는 서비스 거부 공격, 취약한 호스트 찾기를 위한 IP 블록 검사 등이 있습니다.
관련 구성:
고객-R2 |
version 12.3
!
hostname cust-R2
!
ip subnet-zero
!
interface Loopback0
ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 192.168.1.1 255.255.255.0
!
interface Ethernet1/0
ip address 192.168.2.1 255.255.255.0
!
interface Serial2/0
ip address 10.0.0.2 255.255.255.252
!--- This interface leads to ISP-R1.
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.0.0.1
!--- Default route going to ISP-R1.
!
end |
ISP-R1 |
version 12.3
!
hostname ISP-R1
!
ip subnet-zero
!
interface Loopback0
ip address 10.1.1.1 255.255.255.255
!
interface Serial0/0
ip address 10.0.0.1 255.255.255.252
!--- Interface to cust-R2.
!
interface Serial1/0
ip unnumbered Loopback0
!--- Interface going to BB-R3.
!
router bgp 65501
no synchronization
network 192.168.0.0 mask 255.255.0.0
!--- ISP-R1 injects 192.168.0.0/16 into BGP to !--- advertise it to BB-R3.
neighbor 10.3.3.3 remote-as 65503
neighbor 10.3.3.3 ebgp-multihop 255
no auto-summary
!
ip classless
ip route 10.3.3.3 255.255.255.255 Serial1/0
ip route 192.168.0.0 255.255.0.0 Serial0/0
!--- The first route is necessary for the eBGP !--- session to BB-R3 to come up.
!--- The route to 192.168.0.0/16 points towards cust-R2.
!
!
end |
BB-R3 |
version 12.3
!
hostname BB-R3
!
ip subnet-zero
!
!
interface Loopback0
ip address 10.3.3.3 255.255.255.255
!
interface Serial2/0
ip unnumbered Loopback0
!--- This interface goes to ISP-R1.
!
router bgp 65503
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 65501
neighbor 10.1.1.1 ebgp-multihop 255
neighbor 10.1.1.1 default-originate
!--- BB-R3 injects a default route into BGP and !--- sends it to ISP-R1.
no auto-summary
!
ip classless
ip route 10.1.1.1 255.255.255.255 Serial2/0
!--- This route points to ISP-R1 and is !--- used to establish the eBGP peering.
!
end |
패킷 플로우
참고: 라우터에서 패킷 흐름을 더 잘 설명하기 위해 디버그 명령(예: debug ip packet 및 debug ip icmp)이 활성화되었습니다. 운영 환경에서 이러한 명령을 활성화하지 마십시오. 단, 그 결과를 완벽하게 파악해야 합니다.
BB-R3#ping ip 192.168.20.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
*Oct 6 09:36:45.355: IP: tableid=0, s=10.3.3.3 (local), d=192.168.20.1 (Serial2/0), routed via FIB
*Oct 6 09:36:45.355: IP: s=10.3.3.3 (local), d=192.168.20.1 (Serial2/0), len 100, sending.
Success rate is 0 percent (0/1)
BB-R3#
*Oct 6 09:36:50.943: ICMP: time exceeded rcvd from 10.0.0.1
BB-R3는 cust-R2에서 사용되지 않는 192.168.0.0/16 블록 내의 IP 주소로 단일 ICMP 요청을 전송합니다. BB-R3는 ISP-R1에서 ICMP 시간을 다시 초과합니다.
ISP-R1의 경우:
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial1/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial1/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
초기 패킷은 BB-R3에서 ISP-R1의 serial1/0에 수신되고, 예상대로 serial0/0의 cust-R2에 포워딩됩니다. 동일한 패킷이 serial0/0의 ISP-R1에 다시 도착하고 동일한 인터페이스, 즉 cust-R2로 즉시 전송됩니다. 이 경로는 다음과 같습니다.
ISP-R1#show ip route 192.168.20.1
Routing entry for 192.168.0.0/16, supernet
Known via "static", distance 1, metric 0 (connected)
Advertised by bgp 65501
Routing Descriptor Blocks:
* directly connected, via Serial0/0
Route metric is 0, traffic share count is 1
이 트래픽을 ISP-R1로 다시 전송하도록 하는 cust-R2에서는 어떻게 됩니까?
cust-R2에서:
*Oct 6 09:41:43.495: IP: s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), g=10.0.0.1, len 100, forward
*Oct 6 09:41:43.515: IP: tableid=0, s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), routed via RIB
*Oct 6 09:41:43.515: IP: s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), g=10.0.0.1, len 100, forward
*Oct 6 09:41:43.555: IP: tableid=0, s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), routed via RIB
다음 경로 때문에 cust-R2가 이러한 패킷을 ISP-R1로 다시 전송하는 것을 볼 수 있습니다.
cust-R2#show ip route 192.168.20.1 longer-prefixes
Codes: C - connected, S - static, 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
i - IS-IS, su - IS-IS summary, 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 10.0.0.1 to network 0.0.0.0
cust-R2#
이 네트워크는 사용자 네트워크에서 사용되고 있지 않으므로 라우터 cust-R2에는 192.168.20.1에 대한 경로가 없으므로 192.168.20.1에 대한 최상의 경로가 ISP-R1을 가리키는 기본 경로입니다.
그러면 TTL이 만료될 때까지 패킷이 ISP-R1과 cust-R2 간에 반복됩니다.
ICMP 요청이 사용 중인 네트워크 내의 IP 주소로 이동한 경우 이 결과가 발생하지 않습니다. 예를 들어, ICMP 요청이 cust-R2에 직접 연결된 192.168.1.x에 대한 것이었다면 루핑이 발생하지 않았을 것입니다.
cust-R2#show ip route 192.168.1.1
Routing entry for 192.168.1.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via Ethernet0/0
Route metric is 0, traffic share count is 1
이 문제의 해결 방법은 cust-R2에서 192.168.0.0/16에 대해 Null0에 대한 고정 경로를 구성하는 것입니다.
cust-R2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
cust-R2(config)#ip route 192.168.0.0 255.255.0.0 Null0
cust-R2(config)#end
cust-R2#
*Oct 6 09:53:18.015: %SYS-5-CONFIG_I: Configured from console by console
cust-R2#show ip route 192.168.20.1
Routing entry for 192.168.0.0/16, supernet
Known via "static", distance 1, metric 0 (connected)
Routing Descriptor Blocks:
* directly connected, via Null0
Route metric is 0, traffic share count is 1
이제 BB-R3에서 192.168.20.1로 ICMP 요청을 재전송하면 cust-R2는 이 트래픽을 Null0으로 전송하여 ICMP가 생성되지 않도록 트리거합니다.
BB-R3#ping ip 192.168.20.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
U
Success rate is 0 percent (0/1)
BB-R3#
*Oct 6 09:54:33.051: ICMP: dst (10.3.3.3) host unreachable rcv from 10.0.0.2
Null0에 대한 요약 고정 경로를 사용할 수 없는 경우가 있습니다. 예를 들어, 이전 예제에서
참고: 이 IP 주소 블록에 도달하려는 전송 중인 패킷 또는 애플리케이션이 앞에서 설명한 것과 동일한 라우팅 루프를 생성하게 됩니다.
참고: 이 라우팅 루프를 수정하려면 ip route 192.168.1.0 255.255.255.0 Null0 200 명령을 사용하여 192.168.1.0/24에 대해 Null0에 대한 유동 고정 경로를 구성해야 합니다. 명령의 200은 관리 거리입니다. 자세한 내용은 What Is Administrative Distance?를 참조하십시오.
참고: 라우팅 프로토콜보다 관리 거리가 더 높기 때문에 ISDN 링크를 통해 192.168.1.0/24에 대한 경로가 비활성화되면 cust-R2는 유동 고정 경로를 설치합니다. 그러면 ISDN 링크가 활성화될 때까지 패킷이 Null0으로 전송됩니다.
관련 정보