반응형
반응형
1. Scapy 란?: Scapy는 네트워크 패킷 생성 툴로 패킷을 직접 만들거나 수정해서 보내고, 이를 캡처하거나 분석해서 네트워크 테스트, 디버깅 등에 활용할 수 있다. Scapy는 python 기반의 도구로 python 설치를 꼭 해줘야 한다. Linux에서 주로 사용되지만, Windows에서도 WSL을 통해 간단히 사용할 수 있다. 2. Scapy 특징L2~L7 패킷 생성 및 분석 가능간단한 Python 코드로 네트워크 테스트 가능ICMP, TCP, UDP, ARP 같은 다양한 프로토콜 지원 3. 윈도우 WSL에서 Scapy 설치하기3.1) WSL 사용하는 이유: Windows에서는 네트워크 패킷을 직접 조작하거나 전송하는 기능이 제한적이다. WSL은 Windows에서 Linux 환경을 만들어주는..
1. 사용 중인 인터페이스 확인하기: tcpdump 를 사용하기 위해 사용 중인 네트워크 인터페이스를 먼저 확인해야한다. 리눅스 쉘에서 ip link 명령어를 치면 아래처럼 나올 것이다. 현재 내가 사용중인 네트워크 인터페이스의 명칭은 'eth0' 이다.ip link2. tcpdump 명령어 종류리눅스에서 사용할 거라면 위처럼 ip link로 인터페이스를 확인 후 명령어에 적어주면 되고, 필자는 네트워크 스위치의 vlan 에서 tcpdump 를 사용할 예정이라 인터페이스 명에 vlan 을 적어주었다. 아래는 vlan 인터페이스를 통해 tcpdump 를 사용하는 예제이다. 2.1) 패킷 내용을 자세히 보기 (-vv): vlan1 인터페이스를 통해 ip address 로 부터 오는 패킷의 상세한 정보를 출력..
오늘은 필자가 네트워크 엔지니어로 근무하면서 겪었던 네트워크 트러블 슈팅에 관한 글을 써보려고 한다. 네트워크 모니터링 솔루션, 스위치 혹은 직접 현장에서 문제 상황을 인지한 후 스위치에서 원인을 찾고 어떤식으로 해결했는지 과정을 전체적으로 써보려고 한다. 지금도 주니어지만 극 주니어일 때 했던 일이라 별거 없을 수도 있다.. 그래도 기록하는 습관은 중요하니까! * 아래의 내용은 모두 IPv4 와 Cisco / Huawei 스위치를 기준으로 작성하였습니다.1. DHCP, IP 트러블 슈팅1-1) IP Pool 이 가득 찬 경우지난 회사의 한 사옥에서 갑자기 일부 사용자들이 IP를 받아오지 못해 네트워크에 연결할 수 없다는 문제가 접수됐었다. 황당한 건 어쩔땐 연결되고, 어쩔땐 붙었다 떨어지는 등 ip할..
엔디안(Endianness)엔디안은 컴퓨터 메모리나 다른 데이터 포맷에서 다중 바이트 데이터를 메모리에 저장하거나 전송할 때, 바이트를 배열하는 방식을 말한다. 서로 다른 엔디안을 사용하는 시스템 간의 데이터 교환 시 각각의 시스템에 맞는 네트워크 바이트 순서로 변환해줘야 한다. 1. 빅엔디안(Big-endian) 데이터를 메모리의 가장 큰 주소부터 저장하는 방식이다. (큰 단위의 바이트가 메모리의 낮은 주소에 저장됨) ex) '0x12345678' 은 메모리에 [12 34 56 78] 순서로 저장 -> 네트워크 프로토콜, 특히 TCP/IP 스택은 빅엔디안을 사용한다.주소 1 | 0x12주소 2 | 0x34주소 3 | 0x56주소 4 | 0x78 2. 리틀엔디안(Little-endian) 데이터를 메모리..
몇주 전 지인분께서 네트워크쪽은 트래픽 모니터링을 어떻게 하나요? 라고 물어보셔서 트래픽을 모니터링하고 네트워크 스위치에서 직접 제어했던 경험을 바탕으로 글을 쓰게 되었다. 필자는 네트워크 엔지니어로 근무하면서 오픈소스를 통해 성능 및 트래픽을 모니터링하고, 스위치 장비에서 QoS 를 제어하는 방식으로 운영해왔다. 내가 엔지니어로 근무하면서 경험했던 내용을 바탕으로 쓸 예정이라 여러분과 상황이 다를 수 있음! 물론 내용도 틀릴 수 있음! (피드백 환영합니다.)1. 트래픽 모니터링과 QoS 제어는 왜 필요할까?이전 회사에서 근무하면서 트래픽 이슈는 심심치 않게 겪을 수 있었다. 대부분의 원인은 특정 시간대에 특정 부서에서 많은 다운로드(혹은 드물게 업로드)를 하게 되고, ISP 회선 트래픽의 최대 대역폭까..
1. 러스트 변수(Rust Variables)- 변수는 기본적으로 불변(immutable)이나, 필요에 따라 변수를 가변(mutable)로 만들 수 있다. 변수가 불변일 때, 어떤 이름에 한번 값이 묶이면 그 값은 바꿀 수 없다. 이를 테스트하기 위해 workspace 안에 variables라는 프로젝트를 만들어 보자.cargo new variables // variables 라는 프로젝트 생성cd variables/src // variables 디렉토리로 이동vi main.rc // src 디렉토리 내 main.rc 파일을 열어 코드 편집 아래의 프로그램을 작성하고 cargo run 명령어로 프로그램을 실행해보자. fn main() { let x = 5; println!("The value ..