본문 바로가기

Switch

[Config] STP 네트워크 보호 기술

 

실습을 위한 테스트 네트워크 구성

 

 

 

BPDU Guard

특정 포트를 통해 BPDU 수신했을 , 해당 포트를 자동으로 shutdown 시키는 기능이다.

스위치가 아닌 장비들이 BPDU 보낼일이 없기 때문에, 일반적으로 PC 서버와 같은 종단 장치가 접속된 포트에 설정한다.

종단장치가 접속된 포트가 BPDU를 수신한다는 것은 일반 사용자들이 무단으로 스위치에 개인의 스위치나 허브를 접속했거나, STP 관련 해킹 공격을 받고 있음을 의미하는 경우가 많다.

 

Configuration

@ Global configuration Mode

Switch(config)# spanning-tree portfast bpduguard default

 

@ Interface configuration Mode

Switch(config)# interface F0/13

Switch(config-if)# spanning-tree bpduguard enable

 

 

BPDU Guard 설정 실습

DP BPDU Guard 설정해보기

SW2(config)# interface f0/13

SW2(config-if)# spanning-tree bpduguard enable

SW2 f0/13 DP이기 때문에 BPDU 송신만 하고 수신은 하지 않는다. 변화가 없는 것을 확인하고 제거한다.

 

BPDU 수신하는 포트에 BPDU Guard 설정해보기

SW3(config)# interface f0/13

SW3(config-if)# spanning-tree bpduguard enable

 

에러가 발생된 인터페이스와 원인 확인하기

SW3# show interface f0/13

  FastEhternet0/13 is down, line protocol ids down (err-disabled)

SW3# show errdisable detect

  다양한 원인으로 인해 에러가 발생했을 경우 확인하는 명령어

SW3# show interface status err-disabled

  에러가 발생한 포트와 상태 원인을 있다.

 

에러난 포트 복구하기

인터페이스를 다운시켰다 활성화 시켜서 복구한다

SW3#(config)# interface f0/13

SW3#(config-if)# shutdown (and no shutdown)

 

Recovery 시간을 설정하여 자동으로 복구하도록 설정한다

SW3(config)# errdisable recovery cause bpduguard

SW3(config)# errdisable recovery interval 120 (Sec)

 

 

 

BPDU Filter

특정 포트로 BPDU 보내거나 받지 않게 하는 기능이다. 기능을 통해 BPDU 송신하지 않음으로써 스위치 포트에 접속된 종단 장치에 불필요한 부하가 걸리는 것을 방지할 있다.

 

전역 설정모드에서 설정하면 포트패스트가 설정된 포트에만 BPDU 필터 기능이 적용되며, 인터페이스에서 BPDU 송신되는 것을 차단시키는 역할을 한다. 만약 BPDU 송신이 차단된 인터페이스에서 BPDU 수신하게 되면 BPDU 필터링 기능이 해제되면서 수신한 BPDU 따라 적절한 STP 포트상태로 변한다.

 

인터페이스 설정모드에서 설정하면 해당 인터페이스에서 BPDU 송수신 모두 필터링 시킨다. 수신도 차단하기 때문에 기능을 잘못 설정하게 되면 STP 차단포트가 사라지면서 루프가 발생될 있다.

 

Configuration

@ Global configuration Mode

Switch(config)# spanning-tree portfast bpdufilter default

 

@ Interface configuration Mode

Switch(config)# interface F0/13

Switch(config-if)# spanning-tree bpdufilter enable

 

 

BPDU Filter 설정 실습

전역설정모드에서 BPDU Filter 설정해보기

SW3(config)# spanning-tree portfast bpdufilter default

BPDU 필터링이 설정된 인터페이스로 BPDU 수신하면 필터링 기능이 없어지면서 정상적으로 동작한다.

 

인터페이스 설정모드에서 BPDU Filter 설정해보기

SW3(config)# interface f0/8

SW3(config-if)# spanning-tree bpdufilter enable

인터페이스에서 설정하면 BPDU 송수신이 모두 안되기 때문에 STP 동작되지 않는 것과 같아서 주의해야한다.

 

차단포트에 BPDU Filter 설정해보기

SW3(config)# interface f0/13

SW3(config-if)# spanning-tree bpdufilter enable

BPDU 수신하지 못한 SW3 f0/13 DP라고 여겨 전송상태로 변경한다. 결과적으로 루프가 발생한다.

 

 

 

Root Guard

Root Guard 특정 포트에 접속된 네트워크에 있는 스위치들은 루트 스위치가 없도록 하는 기능이다.

루트 가드가 설정된 포트에서 현재 Root Bridge B-ID보다 낮은 값의 B-ID 담은 BPDU 수신하면 해당 포트를 다운시켜서 루트선출에 참여하지 못하도록 막아서 Root Bridge 보호하는 기술이다.

 

Configuration

@ Interface configuration Mode

Switch(config)# interface F0/8

Switch(config-if)# spanning-tree guard root

 

 

 

Loop Guard

Loop Guard 차단포트가 BPDU 받지 못해도 전송상태로 변경되지 않도록 해주는 기능이다.

차단 상태에 있던 포트가 상대 포트(DP)로부터 BPDU 받지 못하면, 상대 장비에 문제가 생긴 것으로 인식하여 자신의 포트를 DP 역할을 변경하고 전송상태로 전환시킨다. 하지만 필터링 설정을 잘못하여 BPDU 수신하지 못한 경우라면 차단포트가 전송상태로 변경되면서 루프가 발생될 수도 있다.

 

링크에 문제가 생긴 경우에 차단 상태가 변하지 않으면 어떻게 해야되는지 의아해할 수도 있겠지만, 루프 가드가 설정되어 있어도 네트워크에 문제가 생겨서 차단 포트가 전송 상태로 변경이 필요한 경우에는 정상적으로 동작된다.

 

Configuration

@ Global configuration Mode

Switch(config)# spanning-tree loopguard default

 

@ Interface configuration Mode

Switch(config)# interface F0/13

Switch(config-if)# spanning-tree guard loop

 

 

Loop Guard 설정 실습

Loop Guard 설정 상태에서 BPDU 받지 못한 경우

SW3(config)# spanning-tree loopguard default

SW2(config)# interface f0/13

SW2(config-if)# spanning-tree bpdufilter enable

SW3 Loop Guard 설정을 해두고 SW2에서 BPDU 송신하지 않도록 설정하였다.

 

SW3# debug spanning-tree events

10:25:41: %SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/13 on VLAN0001

SW3에서 디버깅을 해보면 차단포트에서 BPDU 수신하지 못하자 전송상태로 변경하지 않고 루프가드에 의해 차단상태로 유지한다. show spanning vlan 1 확인해보면 해당 포트가 Loop Inconsistent (일종의 차단상태) 되어있다.

SW2에서 필터링을 해제하면 포트상태가 정상적인 차단상태가 되는 것을 있다.

 

 

Loop Guard 설정 상태에서 실제로 네트워크 문제 발생된 경우

SW2(config)# interface f0/11

SW2(config-if)# shutdown

간접링크의 다운을 감지하는 후순위 BPDU 만들어내기 위해 SW2 인터페이스를 다운시켜본다.

 

SW3# debug spanning-tree events

10:44:28: STP: VLAN0001 heard root 4097-001a.2fd4.0f80 on Fa0/13

10:44:28: STP: VLAN0001 Fa0/13 -> listening

10:44:38: STP: VLAN0001 Fa0/13 -> learning

10:44:48: STP: VLAN0001 Fa0/13 -> forwarding

 

SW3(config)# interface f0/1

SW3(config-if)# shutdown

직접링크의 다운을 감지했을 때를 보기 위해 SW3 f0/1 인터페이스를 다운시켜본다.

 

SW3# debug spanning-tree events

10:48:29: %SPANTREE FAST-7-PORT FWD UPLlNK: VLAN0001 FastEthernet0/13 moved to Forwarding

 

 

 

UDLD (Unidirectional Link Detection)

UDLD 스위치간 단방향 링크가 생겼을 해당 포트를 셧다운 시키는 기능이다.

연결된 장비의 링크에 송신 또는 수신에 문제가 생겨서 트래픽을 못받는 경우, L2 Loop 발생하거나 쪽이 송신한 프레임이 사라지는 블랙홀이 발생할 있다.

 

UDLD는 기본적인 정상모드 (normal mode) 와 적극모드(aggressive mode) 라는 두 가지 동작모드가 있다.

정상모드는 광케이블의 결선오류로 인한 단방향 링크를 감지할 수 있다. 적극모드에서는 추가적으로 광케이블과 UTP의 단방향 트래픽으로 인한 단방향 링크까지도 감지할 수 있다.

       - 정상모드 : Fiberoptic Cable에서 쓸 때 

       - 적극모드 : Ethernet Cable에서 쓸 떄

 

Configuration

@ Global configuration Mode

Switch(Config)# udld enable (정상모드)

Switch(Config)# udld aggressive (적극모드)

 

@ Interface configuration Mode

Switch(Config-if)# udld port (정상모드)

Switch(Config-if)# udld port aggressive (적극모드)

 

 

UDLD 동작 과정

 

  • UDLD 설정되어 있지 않은 상태에서 그림과 같이 단방향 링크가 만들어지게 되면 BPDU 수신하지 못한 SW3 차단포트가 DP 설정되면서 전송상태로 변경되고 2계층 루프가 발생되게 된다.
  • UDLD 설정하게 되면 주기적으로 송신포트를 통하여 UDLD 패킷을 전송하고, 상대 장비에서는 다시 자신의 송신포트로 상대에게 재전달(echo)해줘서 양방향 링크가 동작중인 것을 확인한다.

'Switch' 카테고리의 다른 글

Switchport - Access  (1) 2018.06.17
Port-security 실습  (0) 2015.11.28
이중화 게이트웨이 프로토콜 (HSRP/VRRP)  (2) 2014.10.05
[Config] Inter VLAN Routing (with L3 Switch)  (0) 2014.09.29
[Config] Inter VLAN Routing (with Router)  (2) 2014.09.29