7일차 - Base learning (Tshark 실습 / 네트워크 장비)

Jk Lim·2023년 4월 18일
0

MLOps 부트캠프

목록 보기
6/34

7일차는

  1. Tshark를 사용해 CLI환경에서 네트워크 관련 트래픽 데이터를 Parsing하는 실습과
  2. 네트워크 장비 (스위치, 라우터)에 관한 내용을 학습하였다.

1. Tshark 실습

  • 목표 : CLI 환경에서 네트워크 데이터 Parsing 하기

tshark -i 1 -c 10 -w test2.pcap

→ tshark 인터페이스 1번에서 10개 신호를 읽어서 test2.pcap 파일에 저장해라

tshark -r test2.pcap

→ test2.pcap 파일을 읽어와라

tshark -r test2.pcap -T json

→ json 포맷으로 변환해라


Tshark 옵션 예제

-Y : 디스플레이 필터링 옵션
-f : 캡쳐 자체를 내가 하고싶은 것만 (tshark -i 1 -f “host 192.168.20.8” / “host 192.168.20.8 and tcp port 21” …) * (참고) wireshark 에서 인터페이스로도 f 필터를 걸 수 있다.
-Tfields -e : 필드를 지정해서 출력 (tshark -r text3.pcap -Tfields -e ip.src -e ip.dst…)
-V : 좀 더 자세한 정보를 볼 수 있음 (wireshark 인터페이스의 가운데 테이블에 표시되는…)
-O http : http 프토토콜 타입으로 추출. 헤더 정보 등…(tshark -i 1 -O http -f “…..)

  • (참고) grep : 리눅스 명령어 - 파일내 문자열 찾기
    정규표현식 활용 : 예) | grep -v -E ^[0-9a-f]{4} : 불필요한 부분을 제외
    -A 옵션 : 예) grep “Hypertext Transfer Protocol” -A 21 ⇒ Hypertext… 찾고 다음 21줄까지 출력(tshark -i 1 -O http -f "tcp port 80 or tcp port 443" -Y "http.request || http.response" | grep "Hypertext Transfer Protocol" -A 21)

-G 옵션을 찾는 옵션 (tshark -G | cut -f3 | grep "^http." | grep uri ⇒ http에 관한, 그중에서 uri에 관한 옵션) : Tfields -e 다음에 옵션을 입력하면 됨
(tshark -r http_test.pcap -Tfields -e http.content_type | sort -r | uniq)
(sort -r | uniq ⇒ 공백 제거용)

Tshark 옵션 정리

  • tshark -D 네트워크 인터페이스 정보 확인
  • tshark -i 모니터링 할 인터페이스 선택
  • tshark -i 1 -Y display filter option (ip.addr == 192.168.20.6 / tcp.port ==80, tcp.src == tcp.dst == / icmp && ip.addr ==… / arp || icmp)
  • tshark -i 1 -f captures filter option (host 192.168.20.6 / tcp port uo or arp / tcp port 80 and host 192.168.20.6 / tcp port 80 and not arp)
  • tshark -i 1 -c 10 카운트 패킷
  • tshark -i 1 -w 저장
  • tshark -r 저장된 pcap 읽기
  • tshark -r 저장된 pcap -T json 지정된 포맷으로 출력 (실시간으로도 가능하지만 너무 느림)
  • tshark -r 저장된 pcap -Tfields -e 필드를 지정해서 출력

2. 네트워크 장비

스위치

  • MAC address Table을 이용해서 스위치의 ethernet port와 연결된 pc (또는 서버)의 MAC 정보를 학습하고 학습된 MAC address Table을 이용해서 요청받은 MAC 주소와 ethernet port를 연결 시켜준다.

스위치 연결 예시
1. PC1 : ping PC2
2. PC1에 arp cache table 안에 PC2의 MAC 정보가 없으면 (arp -a로 확인 가능)
3. arp broadcast를 이용해서 PC2 ip주소의 MAC주소를 요청 (broadcast 요청해서, unicast로 학습)
4. 학습된 PC2의 MAC 정보를 이용해서 스위치에게 문의
5. eth port 2 = PC2 MAC 라는 MAC Address Table 정보를 통해 eth port 2에 연결된 디바이스가 PC2 임을 알고 연결

[STP - Spanning Tree Protocol]

  • 스위치가 자신의 네트워크에서 순서를 정의하여 broadcasting 되는 문제를 막기위해서 선언
  • 원리는 각 스위치의 순서를 정의하여 순서의 시작과 끝을 이해하여 broadcasing 되는 것을 막음
  • 만약 기업의 네트워크 환경에 스위치로 구성한 네트워크가 많다면 반드시 STP 설정을 해주어야 한다.

[VLAN]

  • 스위치는 기본적으로 자신이 사용하는 MAC Table에 존재하지 않는 정보이면 다른 스위치로 해당정보를 이어서 찾도록 정보를 넘겨준다.
  • LAN == Local Area(Address) Network (Broadcast가 미치는 범위에 대한 이해가 필요)
  • VLAN은 스위치 환경에서 가상으로(논리적으로) 만들어준 네트워크
  • Broadcast Size를 줄임. Bandwidth(대역폭)을 줄임. 도메인 분할.

SDN(Software Define Network) - 네트워크를 소프트웨어적으로 만듬

클라우드에서 소프트웨어적으로 네트워크 장비를 만들어 냄

라우터

  • OSI 7 Layer의 3계층 장비
  • 라우터 각각에 연결되는 것은 노드.
  • Static(정적) 라우팅
    • 라우팅하기 위한 네트워크 범위를 이해하고 직접 선언하여 나아가는 네트워크를 규정하는 방식
    • 단점 : 확장 및 관리가 불편하다.
    • 장점 : 직접 연결방향을 규정하였기 때문에 장애가 없고 병목 현상만 없다면 가장 빠르게 라우팅 한다.
    • 실제로는 안쓰임.
  • Dynamic(동적) 라우팅
    • 라우팅 프로토콜 : 라우터간의(노드) 최적경로 탐색 알고리즘

SNAT : 사설 IP주소를 게이트웨이를 통해서 밖으로(real IP) 전환시킴 > NAT 환경에서 DCHP를 통해 IP를 할당 받음.
DNAT : 외부에서 들어오는 신호를 내부 환경으로 연결
게이트웨이 : 3계층 (라우터는 게이트웨이 역할을 같이 한다.)
라우터는 NAT를 지원해주나, NAT가 라우터는 아님.


정리 질문

Q1. 네이버의 모니터링 담당자는 요청자의 IP/MAC Address를 알 수 있는가?

  • 보이지 않는다. 그럼 어떻게 구분하나? 세션(Session)정보로 구분한다. 라우팅 테이블에 세션정보가 유효할 때 가능하다. (공유기는 밖으로 나가는 라우팅 세션을 어떻게 이해하고 있는지?를 알아야한다.)

Q2. 수많은 라우터를 거치는 사이에 데이터를 볼 수 있는가?

  • 볼 수 없다. 중간의 라우터는 네트워크 계층까지만 decapsulation 하기 때문. 데이터 영역을 볼 수 없다. 4계층부터 데이터를 볼 수 있다.

0개의 댓글