Skip to content

Latest commit

 

History

History
96 lines (54 loc) · 7.13 KB

switch_act.md

File metadata and controls

96 lines (54 loc) · 7.13 KB

Switch in Action

스위치는 2계층 주소인 mac 주소를 기반으로 동작한다.

네트워크 중간에서 패킷을 받아 필요한 곳에만 보내주는 네트워크 중재자 역할을 한다.

스위치는 아무 설정 없이 네트워크에 연결해도 MAC 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있다.

그 외에도 아래와 같은 동작이 가능하다.

  • VLAN: 한 대의 장비에서 논리적 네트워크 분리
  • STP: 네트워크 루프 방지
  • 그 밖의 다양한 보안 기능과 모니터링

Switch Action

스위치가 없던 이더넷 네트워크에서는 패킷을 전송할 때 서로 경합해 네트워크 성능 저하가 컸다.

이런 경쟁을 없애고 패킷을 동시에 여러 장비로 서로 간섭 없이 통신하도록 하는 장치가 스위치다.

스위치를 이용하면 여러 단말이 한꺼번에 통신할 수 있어 통신하기 위해 기다리거나 충돌 때문에 대기하는 문제가 해결되고 통신 효율성이 향상된다.

스위치의 핵심 역할은 누가 어느 위치에서 있는지 파악하고 패킷을 알고 있는 위치로 정확하게 전송하는 것이다.

스위치는 MAC 주소 테이블을 가지고 있으며 해당 테이블은 mac 주소와 인터페이스 정보를 매핑한 것이다.

스위치는 패킷 헤더 안에있는 2계층 목적지 주솔르 확인하고 mac 테이블을 보고 해당 주소가 어느 포트에 있는지 확인해 그 포트로만 전송하게 한다.

만약 테이블에 목적지가 없는 패킷이 들어오면 스위치는 전체 포트로 패킷을 전송한다.

이런식으로 테이블 상태에 따라 다르게 동작하는 스위치의 동작을 크게 세 가지로 나뉘어 볼 수 있다.

  1. Flooding
  2. Address Learning
  3. Fowarding/Filtering

Flooding

부팅시 스위치는 부팅하면 네트워크 관련 정보가 아무것도 없다. 이때 스위치는 네트워크 통신 중재 역할을 하지 못하고 허브처럼 동작하게 된다. 즉 허브처럼 패킷이 들어온 포트를 제외하고 모든 포트로 패킷을 전달하는데 이처럼 스위치가 허브처럼 모든 패킷을 흘리는 동작 방식을 플러딩이라고 한다.

또 정보 부재(패킷 도착지 mac주소가 테이블에 없는경우) 테이블에 있는 모든 포트로 플러딩을 하는데, 스위치는 LAN에서 동작하므로 자신이 정보를 갖고 있지 않더라도 어딘가에 장비가 있을 수 있다고 가정하고 이런 작업을 수행하는 것이다. (ㅇㅎ)

이런 플러딩 동작은 정상적인 스위치의 동작이지만, 이런 동작이 많아지면 스위치가 제 역할을 못하게 됩니다 ㅠ
스위치는 패킷이 들어오면 패킷 정보의 MAC 주소를 보고 이를 학습해 MAC 주소 테이블을 만든 후 이를 통해 패킷을 전송합니다.

비정상적인 플러딩

이더넷-tcp/ip 네트워크 에서는 ARP 브로드캐스트를 미리 주고받은 후 데이터가 전달되므로 실제로 데이터를 보내고 받을 때는 스위치가 패킷을 플러딩하지 않습니다.

스위치를 사용하면 필요한 곳에만 패킷을 포워딩하므로 주변 통신을 악의적으로 가로채기는 힘들어 모든 패킷을 플러딩하는 허브에 비해 보안에 도움이 됩니다.

  • 아래 방식처럼 스위치 기능을 무력화해서 주변 통신을 모니터링하는 공격 기법이 사용됩니다.
    • 스위치에 엉뚱한 mac주소 학습시키기
    • 스위치에 mac 테이블을 꽉차게 만들어 스위치의 플러딩 유도

즉 아무 이유없이 스위치가 패킷을 플러딩한다면 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 것으로 의심해볼 수 있어야합니다.

이 외에도 arp 포이즈닝 기법을 이용해 모니터링할 ip, mac 주소가 공격자 자신인 것처럼 속여 원하는 통신을 받는 방법을 사용하기도 합니다.


Address Learning

스위치가 패킷의 도착지 MAC 주소를 확인해 원하는 포트로 포워딩하는 스위치의 동작을 정상적으로 수행하려면 mac 주소 테이블을 만들고 유지해야한다.

이런 MAC 주소 테이블을 만들고 유지하는 과정을 Address Learning 이라고 한다.

패킷의 출발지 mac 주소 정보를 이용해 패킷이 특정 포트에 들어오면 스위치는 해당 패킷의 출발 mac 주소와 포트번호를 table에 기록한다.

  1. mac 주소 기록:어드레스** 러닝은 출발지의 mac 주소를 통해 학습하므로 브로드캐스트, 멀티캐스트시에 사용되는 목적지 mac 주소를 학습할 수 있다. 이들의 mac 주소는 목적지 mac 주소 필드에만 사용되기 때문이다.
  2. 사전에 정의된 mac 주소 테이블: 스위치는 mac 어드레스 러닝 작업으로 주변 장비의 mac 주소를 학습하는 것 외에도 사전에 미리 정의된 mac주소 정보를 가질 수 있다. 여기서 기록된(사전의 정의된)주소는 패킷 처리를 위한 주소가 아닌 스위치간 통신을 위해 사용하는 주소다.

스위치에서 자체 처리되는 주소는 특정 포트로 내보내는 것이 아니라, 스위치에서 자체 처리하지 않으므로 인접 포트 정보가 없거나 cpu, 혹은 관리 모듈을 지칭하는 용어로 표기된다.

스위치에서 mac 주소 테이블을 보기위한 show mac address-table 명령어를 사용한다.


Forwarding, Filtering

스위치는 패킷이 들어온 경우 Mac 주소를 확인하고 자신의 테이블에 있으면 해당 포트로 패킷을 포워딩하고 이때 다른 포트로는 해당 패킷을 보내지 않도록 Filtering 한다.

스위치는 이런 포워딩, 필터링을 통해 목적지로만 패킷이 전달되도록 동작한다.

스위치에는 포워딩과 필터링 작업이 여러 포트에서 동시에 수행될 수 있다. 통신이 다른 포트에 영향을 미치지 않으므로 다른 포트에서 기존 통신 작업으로부터 독립적으로 동작할 수 있다.

스위치는 일반적으로 유니캐스트에서만 포워딩/필터링 작업을 수행한다.

BUN 트래픽이라고 부르는 브로드캐스트와 언노운 유니캐스트, 멀티캐스트는 조금 다르게 동작한다(플러딩)
브로드캐스트와 멀티캐스트 모두 필터링 작업을 하지 않고 플러딩 하는데, 또한 언노운 유니캐스트도 mac 주소 테이블에 없는 주소이므로 플러딩한다.

스위치에서는 유니캐스트를 플러딩하는 경우는 거의 없다.

패킷을 만들기전에 통신해야하는 단말의 mac 주소 파악을 위해 ARP 브로드캐스트를 쏘고이, mac 주소를 미리 습득해 테이블에 저장해둬 실제 유니캐스트 통신이 시작되면 이미 만들어진 mac 주소 테이블로 패킷을 포워딩 필터링한다.₩

ARP와 MAC 테이블은 일정시간동안 지워지지 않는데 이 시간을 에이징타임이라고 한다.

일반적으로 mac table aging time > arp aging time이라 이더넷 네트워크를 플러딩 없이 효율적으로 운영할 수 있다.