[네트워크] ARP

공부중인 개발자·2021년 9월 16일
0

네트워크

목록 보기
3/10
post-thumbnail
초보개발자입니다. 틀린내용이 있다면 언제든지 알려주시면 감사합니다!

지난 번 MAC 주소에서 IP 주소만 알고 MAC 주소를 모를 때 MAC 주소를 알 수 있게 하는 프로토콜 ARP에 대해 잠깐 언급을 했었다. 오늘은 그 ARP에 대해 공부해보겠다.

ARP

실제로 통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 된다.

-> 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP

ARP란?

IP 주소와 MAC 주소를 연계시켜 주기 위한 매커니즘

ARP 프로토콜 필드(ARP 헤더 + ARP 데이터)
1. 하드웨어 주소 타입(2 byte)
- 사용중인 Hardware 주소 타입을 나타내는 필드. 네트워크 유형을 나타냄.
- 1(Ethernet), 2(Experimental Ethernet), 3(Amateur Radio AX.25), 4(Proteon ProNET Token Ring), 5(Chaos), 6(IEEE 802.3 networks)

[IANA에서 할당한 ARP 파라미터들]

  1. 프로토콜 타입 (2 byte)
    • 어떠한 유형의 프로토콜(IPv4,IPv6,ATM등)을 사용하는가 정의
      0x0800 은 IPv4 를 의미
  2. H/W 주소 길이(1 byte)
    • 하드웨어 주소(MAC)의 길이를 byte로 나타냄.
    • 6(Ethernet)
  3. 프로토콜 주소 길이(1 byte)
    • 프로토콜 주소의 길이를 byte로 나타냄
    • 4(IPv4)
  4. Operation Code (2 byte)
    • 현재 ARP 패킷이 다음중 어떤 종류인지를 카르킴
      . ARP Request(요청) = 1, ARP Reply(응답) = 2,
      . RARP Request = 3, RARP Reply = 4
  5. 출발지(송신지) MAC 주소 (6 byte)
  1. 출발지(송신지) IP 주소 (4 byte)
  1. 목적지(수신지) MAC 주소 (6 byte)

    • APP 요청의 경우에,
      . 송신자의 MAC 주소 및 IP 주소, 목적지의 IP 주소는 채워놓지만,
      목적지 MAC 주소는 0 으로 채워짐
      왜냐하면 IP주소를 사용하여 MAC 주소를 알아내기 위함
      (이더넷 헤더의 Dst 주소가 ff:ff:ff:ff:ff:ff로 설정되어 브로드캐스팅됨.)
  2. 목적지(수신지) IP 주소 (4 byte)

호스트에서 아무 통신이 없다가 처음 통신을 시도하면 패킷을 캡슐화 할 수 없음 => 상대방의 MAC 주소를 알 수 없기 때문에 2계층 캡슐화를 할 수 없음
상대방의 MAC 주소를 알아내기 위해선 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC주소를 질의해야함

ARP 브로드캐스트를 받은 목적지는 자신의 MAC주소를 응답 => 패킷이 정상적으로 인캡슐레이션되어 상대방에게 전달 할 수 있다.

패킷 네트워크에서는 데이터를 잘라 전송하므로 여러 개의 패킷을 전송, 패킷을 전송할 떄마다 ARP 브로드캐스트를 수행하면 효율성 크게 저하
=> 메모리에 정보를 저장해두고 재사용, 성능 유지를 위해 ARP 테이블이 오래 유지되는 것이 좋지만 논리 주소는 언제든 바뀔 수 있으므로 일정 시간 동안 통신이 없으면 테이블 삭제

네트워크 장비에서 ARP 작업은 CPU에서 직접 수행 => 짧은 시간 많은 ARP 요청이 들어오면 네트워크 장비에 큰 부하 작용.
=> 네트워크 장비를 무력화하려는 해커들은 다량의 ARP를 이용한 공격 수행
=> 대응하기 위해 ARP 요청 필터링, 천천히 처리하기
=> 또는 ARP 테이블을 수동으로만 갱신하도록 설정해 운영

참고
패킷으로 데이터를 전송하는 네트워크에서는 데이터를 보내기 위해 여러 개의 패킷을 사용해야함
=> 반복잡업을 줄이기 위해 참조할 수 있는 여러 가지 테이블을 사용
=> ARP 테이블 외에도 DNS 캐시나 라우팅 캐시와 같은 다양한 계층에서 네트워크 성능을 높이기 위한 캐시 테이블을 가지고 있음

ARP 동작

ARP 패킷의 여러 가지 필드 중 ARP 데이터에 사용되는 송신자 하드웨어 MAC 주소, 송신자 IP 프로토콜 주소, 대상자 MAC 주소, 대샂아 IP 프로토콜 주소 4개의 필드가 중요하게 사용

서버 A에서 서버 B로 요청을 보낼 때, 서버 A는 서버 B의 MAC 주소를 알지 못하기 때문에 3계층까지 밖에 캡슐화를 할 수 없음

서버 A는 B의 MAC주소를 알아내기 위해서 ARP요청을 네트워크에 브로드캐스트함
브로드캐스트 할 때, 출발지 MAC은 자신의 MAC주소 목적지 MAC주소는 브로트 캐스트인 (FF-FF-FF-FF-FF-FF)이다. 전송자MAC,IP 는 사용자의 주소를 이용하고, 대상자 IP 주소는 목적지 IP 주소를 이용하고 대상자 MAC주소는 00-00-00-00-00-00을 채워서 넣어준다. 그 이유는 대상자 MAC주소를 찾아줘야하기 때문이다.

A가 브로드캐스트로 요청을 했을 때 서버B에서 브로드캐스트 요청을 받고 대상IP가 자신의 IP인것을 확인하면 ARP 응답을 보낼 때 출발지와 도착지 MAC 주소가 명시되어 있는 유니캐스트로 보내주게 된다.
서버A는 서버 B로 부터 ARP 응답을 받아 자신의 ARP 캐시 테이블을 갱신

GARP

ARP 프로토콜 필드를 그대로 사용하지만 ARP 와는 다른 목적으로 사용하는 GARP, RARP같은 프로토콜이 있음

GARP는 자신의 IP와 MAC 주소를 알릴 목적으로 사용 => GARP의 목적지 MAC 주소는 브로드캐스트 MAC주소 사용, 송신자 MAC,IP 대상자 IP 주소 모두 자신의 주소를 사용

GARP를 사용하는 이유

  1. IP 주소 충돌 감지
  2. 동일 서브넷 상의 다른 상대방의 ARP 테이블 갱신
  3. HA(고가용성) 용도의 클러스터링, VRRP, HSRP

IP 주소 충돌 감지

IP주소는 유일하게 할당되어야 하지만 예외적인 경우 다른사람도 같은 IP 주소를 사용할 수 있음
=> IP 충돌이 나는지 확인하고 예방하기 위해 자신에게 할당된 IP가 네트워크에서 이미 사용되는지 GARP를 통해 확인. 응답이 오면 네트워크상에서 해당 IP를 이미 사용중이라는 뜻.

동일 서브넷 상의 다른 상대방의 ARP 테이블 갱신

가상 MAC 주소를 사용하지 않는 데이터베이스 HA솔루션에서 주로 사용
데이터 베이스 JA는 주로 두 데이터베이스 서버가 하나의 가상 IP주소로 서비스
두 대의 데이터베이스 중 한 대만 동작 나머지 한 대는 대기하는 액티브-스탠바이로 동작
액티브 상태인 서버의 IP는 가상 IP 주소 요청에 응답 하지만 MAC 주소는 실제 데이터베이스의 MAC주소를 사용

스탠바이의 데이터베이스가 작동하게 되고 액티브 데이터베이스가 대기로 바뀌게 되면 MAC 주소는 변경됨. 하지만 이 데이터베이스를 사용하고 있는 사용자의 캐시 테이블의 MAC 주소는 현재 액티브 데이터베이스가 아닌 전 액티브 데이터 베이스이므로 캐시 테이블을 갱신하기 위해서 통신

참고
최근 네트워크 장비에서는 이런 형태의 HA를 사용하지 않음
GARP를 이용해 패킷을 가로채는 기법이 많이 사용
보안상 + 운영상의 이유로 가상 MAC을 사용하는 HA 솔루션 사용

HA(고가용성) 용도의 클러스터링, VRRP, HSRP

위의 HA 경우와 다르게 실제 MAC 주소를 사용하지 않는 가상 MAC주소를 사용하는 클러스터링 VRRP,HSRP와 같은 FHRP에서도 GARP가 사용됨
클러스터링과 VRRP,HSRP의 GARP 사용 이유는 사용 네트워크에 있는 스위치 장비의 MAC 테이블 갱신

참고
VRRP, HSRP는 디폴트 게이트웨이에 장애가 발생할 경우, 외부 네트워크로 통신할 수 없는 문제를 해결하기 위해 개발
두 대의 디폴트 게이트웨이 라우터가 한 대처럼 동작해서 한 대에 문제가 생기더라도 다른 한 대에서 서비스를 지속할 수 있도록 사용

클러스터링의 경우 단말은 가상 MAC 주소로 이용하기 때문에 ARP 테이블 갱신 필요x
중간 스위치의 MAC 테이블의 경우 마스터가 변경되었을 때(디폴트 라우터가 변경되었을 때) 가상 MAC 주소의 위치를 제대로 찾아가도록 업데이트해야함 => 마스터가 변경되는 시점에 MAC 테이블의 갱신 필요 => 마스터 변경 시 GARP 전송 스위치에서는 GARP를 통해 MAC주소에 대한 포트 정보를 새로 변경해서 MAC 테이블 갱신

참고
클러스터링이나 HA 솔루션에서 빠른시간 안에 장애가 해결되지 않는 다면 HA 솔루션이나 클러스터링 문제가 있을 수도 있지만 GARP를 받은 수위치가 MAC테이블을 빨리 갱신해주지 않아 문제가 생기는 경우도 존재
사전에 이런 부분을 고려한 테스트가 되어야함.
HA 솔루션에서 GARP를 보내는 시간이나 횟수를 조절하거나 스위치와 연결된 포트를 순간적으로 리셋해서 MAC 테이블을 초기화하는 기법도 사용

RARP

ARP를 반대로 동작하는 법 MAC주소는 알지만 IP주소를 모를 때 사용

제한된 기능 때문에 BOOTP, DHCP로 대체


배운 점

  • MAC 주소와 IP 주소가 연계될 ARP에 대해서 조금 더 알게 됐다.
  • ARP에 들어가는 MAC 주소는 출발지 / 목적지 / 전송자 / 대상자 이고 요청 시 목적지에는 브로드캐스트 대상자에는 00-00-00-00-00-00 이 들어가서 이 대상자를 채워주기 위한 활동을 한다는 것을 깨달았다.

참고 자료
https://galid1.tistory.com/168
https://m.blog.naver.com/kjh131222/220454539207
https://security-nanglam.tistory.com/195
https://m.blog.naver.com/nackji80/220998936085
http://www.ktword.co.kr/test/view/view.php?m_temp1=2188

profile
열심히 공부하자

0개의 댓글