본문 바로가기

IT Tech/Network

Packet Drop을 위한 널 인터페이스(NULL Interface)

반응형




ip route 10.10.10.10 255.255.255.255 null0
ip route 10.10.20.0 255.255.255.0 null0

와 같은 방법으로 설정하면 특정 목적지의 주소를 바로 Drop 시킬 수 있다.
access-list는 패킷이 cpu까지 올라가야하므로 성능면에서 좋다.

실제로 null 인터페이스로 보내질때마다 패킷의 소스 IP로 icmp unreachable 에러메시지를 전송하는데 패킷이 많을경우 부하가 될 수 있으니 icmp 에러메시지에 대한 옵션을 꺼두는 것이 좋다.





[추가]
세노의 아이디를 쓰셨던 박병석이란 분이 게시판에 쓴 내용입니다. 쉽게 설명이 되어 있어서 첨부합니다.

.
.
.


제로님께서 요청하셨던 '어떻게 null interface 가 routing loop 을 방지하는가'에
대해 말씀드리고자 합니다.


null interface 는 제로님께서 비팬에 올리신 글에서 말씀하셨듯이 특정 주소를
목적지로 하는 트래픽을 discard 시키기 위해 사용하며, access-list 와는 달리
라우터의 CPU 를 적게 사용하기 때문에 효과적으로 라우터의 부하를 줄이는 방법
으로 사용됩니다.
그런데, 이러한 잇점과 아울러 null interface 는 routing loop 을 방지하는데
일조하기도 합니다.

일반적으로 EIGRP 나 BGP 에서 specific 한 어드레스를 summarization 하게 되면,
summarization 과 동시에 저절로 null interface 가 라우팅 테이블에 생성되는
것을 볼 수 있습니다. 바로 이것이 routing loop 을 방지하기 위해 생성되는 것
입니다.

이해를 돕기 위해 하나의 예를 들어보겠습니다.


192.168.4.0 / 24 ---I
192.168.5.0 / 24 ---I------ [Router A] ------ [Router B] ------ [Internet]
192.168.6.0 / 24 ---I BGP BGP
192.168.7.0 / 24 ---I

Router A 와 Router B 사이에는 BGP 가 동작한다고 가정합니다.
Router A 의 뒷단에는 위와 같이 네 개의 C class 네트웍이 존재합니다.
Router A 는 ISP 망에 존재하는 Router B 를 통해 외부 Internet 으로 나갑니다.
Router A 에서 Router B 쪽으로 default route 를 설정합니다.

이런 상황에서, flapping 으로 인한 네트웍 토폴로지의 변화를 localize 함으로써
네트웍을 안정적으로 유지하고, 라우팅 테이블의 엔트리의 숫자를 줄임으로써 라우팅
테이블의 크기를 줄여 결과적으로 효율적으로 bandwidth 를 사용하기 위해 Router A
뒷단에 있는 네 개의 C class 네트웍을 하나의 네트웍(192.168.4.0 / 22)으로
summarization 해서 (이 경우엔 CIDR 이겠지요?) Router B 로 advertise 했다고
가정해보죠. 여기서는 summary-only 키워드를 통해 summary 된 정보만 advertize
했다고 가정하겠습니다.

이 경우에 Router A 에는 다음과 같은 라우팅 테이블이 존재할 것입니다.

- Router A -

192.168.4.0 / 24
192.168.5.0 / 24
192.168.6.0 / 24
192.168.7.0 / 24
192.168.4.0 / 22 null 0
0.0.0.0 via Router B

여기서 null 0 는 summarization 과 동시에 자동으로 생성된 null interface 입니다.
물론, 이보다 specific 한 route 가 존재하기 때문에 longest match 에 입각하여 null
interface 로 인해 discard 되는 트래픽은 존재하지 않을 것입니다.

그리고 Router B 에는 다음과 같은 라우팅 테이블이 존재할 것입니다.
당연히 Router A 에서 summarization 한 결과를 넘겨줬기 때문에 Router B 의 라우팅
테이블에는 summary 된 결과만이 존재할 것입니다.

- Router B -

192.168.4.0 / 22 via Router A


자, 눈채 채셨습니까? 제로님.
일반적인 경우 아무런 문제없이 Router A 와 Router B 사이에 트래픽이 오고 갈 것
입니다. 물론 이 경우 저절로 생성된 null interface 는 유명무실하겠지요?
그런데!!!
Router A 의 뒷단에 있는 네트웍 가운데 하나, 예를 들어 192.168.7.0 네트웍으로
통하는 link 가 down 되었다고 가정해 봅시다. 어떤 일이 발생할까요?

먼저, Router B 의 라우팅 테이블은 변화가 없을 것입니다. flapping 이라고 보긴
어렵지만 - 아니, 조금 큰 규모의 flapping 이라고 보아야 할까요? - 어찌됐건
summary 된 모든 네트웍이 다 없어지지 않는 한 Router B 에는 Router A 로부터 건네
받은 summary 된 정보가 라우팅 테이블에 올라와 있을 것입니다.
그렇다면, 외부 Internet 에서 192.168.7.0 을 목적지로 하는 트래픽은 무리없이
Router A 로 전달되겠지요?

하지만 Router A 의 라우팅 테이블은 어떻게 변했을까요?
다음과 같이 192.168.7.0 / 24 엔트리는 사라지고 없을 것입니다.

192.168.4.0 / 24
192.168.5.0 / 24
192.168.6.0 / 24
192.168.4.0 / 22 null 0
0.0.0.0 via Router B

여기서 바로 null interface 의 진가가 나타나는 것이지요.
만약 null interface 가 없다면, Router B 로부터 전달받은 192.168.7.0 을 목적지로
하는 트래픽은 default route 를 통해서 다시 Router B 로 전달될 것입니다.
그리고 여기서 바로 routing loop 이 발생하는 것이지요.
하지만 null interface 가 존재하기 때문에 192.168.7.0 을 목적지로 하는 트래픽은
discard 되고 말 것입니다.


...







반응형