본문 바로가기
[네트워크]

[ARP/L2/L3/IP/MAC] 헷갈리던 내용 정리

by Hevton 2020. 12. 18.
반응형

헷갈리던 내용 ( 질문글 )

 

---------------------------------------------------------------------------------------------------------------

안녕하세요.. 이거때문에 잠못이룹니다 ㅜㅜ..

 

A 와 B가 다른 네트워크 상에 있다고 볼 때를 공부하는데 너무 헷갈립니다 ㅜ

 

본디 통신을 할 때 패킷에 맥주소와 아이피를 함께 보내는 거면,

A가 다른 네트워크의 B와 통신할 때 arp 과정 이후에

destination ip는 B의 ip주소, destination mac은 A의 게이트웨이 MAC주소로 보내면

라우터(게이트웨이)는 이 패킷을 받고 Destination ip주소가 자신의 것이 아닌걸 보고 다른 곳으로 경로를 찾아주잖아요???

 

1. 그럼 A의 라우터가 B의 라우터를 찾을 때, IP만 사용한다고 하는데(라우팅 프로토콜), 이 때 통신에서 맥주소는 아예 안쓰이나요?

 

그리고 ARP SPOOF를 할 때 타겟 컴퓨터에 1이라는 ip주소의 맥주소가 내 것이라는 페이크를 줬을 때

피해 컴퓨터가 ip주소는 1, 맥주소는 내 것인 패킷을 보내게 될 테고, 내 컴퓨터는 맥주소를 보고 cpu에 올렸다가

ip주소가 다르니 넘겨줘야(또는 버리거나) 하는 게 아닌가요?? IP주소는 달라도 그냥 무시하나요?? 똑같은 경우에 라우터가 이런 패킷

(Destination IP와 Destination MAC이 같은 기기를 대상하지 않는 경우)을 받으면 자신의 것이 아니라고 판단하고 넘겨주듯이요.

 

2. 즉, 라우터의 경우에만 자신의 맥주소에 대한 데이터가 와도 아이피를 또 비교하는 작업을 하는 것인가요?

 

-----------------------------------------------------------------------------------------------------------------

 

1. 답변 : 결론적으로는 A라우터에서는 B라우터를 찾을 때(=통신할 때) 맥 주소를 사용.

-> 모든 통신에는 MAC 주소가 기반이 된다는 결론이 나옴.

(참고로, 단말기간 모든 통신에서는 L2 계층의 주소를 사용하는데, 랜 구간 별 통신 프로토콜에 따라 그 주소가 달라진다. 이더넷을 사용하면 MAC을 쓰고 PPP나 HDLC 같은 WAN 구간 프로토콜을 사용하면 그에 따른 주소 체계가 바뀌게 된다(역할은MAC주소와 동일). 결론은 IP주소만 사용한다는건 아니라는것(L2계층 주소 사용). 추가로, 데이터는 7층~4층 / IP는 3층에 가만히 있고 2층만 바꿔가면서 최종 목적지에 도달한다.)

 

 

 

 

 

 

2에 대한 정리 전에, 내가 궁금했던 내용(잘못 알고 있던 내용)

"통신을 할 때, 도착지 MAC 주소만 보고, 본인 것이면 바로 사용하느냐" 였다. ARP spoof의 경우 도착지 IP는 공격자의 IP가 아닌데도, 도착지 MAC이 공격자의 MAC이라는 이유만으로 패킷을 읽어들이는 걸로 보였다. 따라서 데이터 링크 계층에서 "어? 도착지가 내 MAC주소네? 내꺼네" 하고 패킷을 사용할 수 있을 줄 알았다. 그리고 라우터의 경우에는 도착지가 본인일지라도, IP 주소까지 확인하고 난 뒤 IP 주소가 본인 것이 아니면 라우팅을 해주는 역할을 예외로 해주는 것 같았다.

 

"즉, 맥주소만 같으면 일단 패킷내용을 확인할 수 있으나(패킷을 내 컴퓨터 공간에 둠), PC는 도착지 IP 주소가 내 주소가 아닐지라도 확인없이 그냥 사용하고, 라우터 같은 경우는 IP 주소가 다르면 라우팅을 해주는구나. 그리고 이런 라우팅 기능을 위해선 PC에서도 fragrouter를 해주면 되는구나." 인 줄 알았다.

 

그리고 참고로 ARP SPOOF는 보통 A pc - B pc 간 MITM 중개가 아니라 A pc - Router 간 MITM 중개다.

 

이에 대한 자세한 생각은 ARP 관련 글 아래에 취소선으로 그어져 있는 내 이전까지의 잘못된 생각이다.

hevton.tistory.com/9

 

 

그리고 아래가 옳은 내용이다.

 

2. 정리/답변 : 

패킷을 받으면 1계층부터 차례로 올라가며 내 것인지에 대한 판단을 하고, 그 전에 내것이 아니라는게 판단되면 content를 읽지 못하고 버린다. (라우터의 경우 이때 포워딩/라우팅)

도착지 MAC주소와 도착지 IP주소가 모두 본인에 해당되어야 비로소 패킷안의 content를 읽어들이게 된다. 즉 L2에서 MAC주소만 보고 "내거네, 위로 올리자" 하고 L3로 올리더라도, IP를 비교해서 IP 주소가 다를 경우 패킷을 drop하게 된다. 그러니 스푸핑 어플리케이션에서는 drop 되기 전에 패킷을 가로챈다.(drop 되기전에 보관해놨다가, 스푸핑 어플리케이션에서 확인할 수 있게 하는 느낌인듯. 아니면 올라가기전에 중간에 거치게 하던가)

라우터의 경우, [다른 네트워크로 향하는 IP/라우터의 맥주소] 의 패킷을 받았을 때, 2계층에서 "내꺼네?" 하고 3계층으로 올렸다가 IP가 다른 네트워크인 걸 확인하고 라우팅을 해준다.(이 때 라우터는 패킷을 넘겨주는 것 뿐이지 패킷 content를 확인하지 못한다 = 3계층 위로 올라가지 않는다. 패킷을 버리는 대신 넘겨주는 것 뿐)

 

 

 

 

이해하는데 도움을 준 참고

 

▶︎ 조언

 

IP넘어가는 4계층 5계층 6계층 7계층 데이터는 IP가 본인인게 확인이 됫을떄만 확인할수있습니다.

 

 

▶︎ 고수분의 말씀

N3wrNIC->커널->애플리케이션 순으로 패킷이 넘어가는데, NIC는 기본적으로 MAC Address를 기준으로 패킷 수신 여부를 결정하고(무차별 모드나, 브로드캐스트 패킷은 무조건 수신), 그 다음 처리는 커널로 넘어갑니다.
커널의 네트워크 스택에서는 IP를 보고 수신자가 자기 자신이면 상위 레이어로 전달하고, 그렇지 않으면 라우팅 결정을 거쳐 다시 네트워크 인터페이스로 내보냅니다. 이 경우에는 PC가 '라우팅을 수행한다'고 볼 수 있습니다.
다만 커널 패러매터에서 ip forwarding 옵션이 활성화되어 있어야 합니다. 그렇지 않은 경우에는 패킷은 drop됩니다.

스푸핑된 패킷의 경우, NIC는 자신의 MAC Address와 일치하므로 수신하고, 커널의 네트워크 스택으로 넘어가기 전에 스푸핑 애플리케이션이 먼저 패킷을 받게 만듭니다. 그리고 원하는 일을 한 뒤 다시 패킷을 내보냅니다.

PC와 라우터를 일률적으로 구분하려고 하니 이런 문제가 생기는데, 실제로는 PC도 라우팅을 수행할 수 있습니다. 리눅스 커널 기반 라우터도 많고.

 

 

▶︎ cafe.naver.com/neteg/230325

 

ARP 통신 과정에 질문이 있습니다 ㅜㅜ

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

 

▶︎ cafe.naver.com/neteg/3103

 

[04호] Story of Protocol : ARP (3)

3.ARP Process와 ARP Header 구조 [03호]에서는 ARP가 네트워크의 속도 향상을 위해 제공하는 기능에 대해서 알아보았다. 이번에는 [02호]에서 간략히 알...

cafe.naver.com

 

교훈 : 너무 급하게 한번에 모든걸 알고 정리하려고 하기 보다는, 공부하다가 뒤에서 알아가게 될 거라는 확신을 갖고 안정적이게 생각하며 공부해도 좋을 것 같다.

반응형