
캡처된 네트워크 트래픽을 임의의 속도로 편집하고 재생 — *NIX 및 Windows용 pcap 도구 모음입니다.
Tcpreplay은 [tcpdump]와 [Wireshark] 같은 도구로 미리 캡처한 네트워크 트래픽을 편집하고 재생하기 위한 [GPLv3] 라이선스 유틸리티 모음으로, UNIX(및 [Cygwin] 환경의 Windows)에서 사용할 수 있습니다. 트래픽을 클라이언트 또는 서버로 분류하고, Layer 2/3/4 헤더를 재작성한 뒤, 스위치, 라우터, 방화벽, NIDS 및 IPS를 통해 네트워크로 다시 재생합니다. 속도는 아주 느린 속도부터 회선 최대 속도까지 지원합니다. Tcpreplay는 스니핑 장치와 인라인 장치 모두를 테스트할 수 있도록 단일 NIC 모드와 이중 NIC 모드를 모두 지원합니다.
Tcpreplay는 수많은 방화벽, IDS, IPS, NetFlow 및 기타 네트워킹 벤더, 기업, 대학, 연구소, 오픈 소스 프로젝트에서 사용됩니다. 여러분의 조직에서 Tcpreplay를 사용하고 있다면, 어떤 조직인지 그리고 어떤 용도로 사용하는지 알려 주세요. 중요한 기능의 우선순위를 계속 정하는 데 도움이 됩니다.
4.0 이후 Tcpreplay는 [IP Flow][flow]/[NetFlow] 어플라이언스 테스트를 특별히 겨냥합니다. 정확한 고속 재생 타이밍과 결과 보고, 초당 플로우(fps) 통계, 그리고 플로우 제품의 타임아웃 설정을 튜닝하기 위한 플로우 만료 분석을 제공하며, pcap 파일의 플로우 크기에 따라 초당 수십만 개의 플로우까지 처리할 수 있습니다.
📖 전체 문서는 https://tcpreplay.appneta.com에 있습니다 — 시작 가이드, 도구별 페이지, 활용 레시피, 이 모음의 배경 개념, 매뉴얼 페이지, FAQ를 제공합니다. 이 README는 간단한 둘러보기이며, 사이트가 참조 문서입니다.
tcpreplay-edit) IP 주소를 무작위화합니다(tcpreplay)tcpreplay는 보통 Layer 2에 머뭅니다.전체 릴리스 이력은 CHANGELOG를 참조하세요.
최신 릴리스 tarball을 다운로드한 후 (SourceForge에도 미러링되어 있음), 다음을 실행하세요:
tar xf tcpreplay-*.tar.xz && cd tcpreplay-*
./configure && make && sudo make install
릴리스 tarball에는 미리 생성된 CLI 파서와 man 페이지가 포함되어 있으므로, C 컴파일러와 libpcap 외에는 아무것도 필요하지 않습니다. git 체크아웃에서 작업하거나 CMake, netmap, AF_XDP 또는 io_uring 지원을 원하는 경우에만 아래의 소스에서 빌드를 참조하세요.
플랫폼별 자세한 지침은 tarball에 포함된 INSTALL 파일에 있습니다
(여기의 docs/INSTALL과 동일한 내용).
git 체크아웃에서 빌드하려면 *_opts.def 파일로부터 CLI 옵션 파서와
man 페이지를 생성하기 위해 python3와 asciidoctor(어느 빌드 시스템이든)가
필요합니다. 이 용도로 4.6에서 GNU AutoGen을 대체했습니다
(AutoGen은 EOL이지만, 이것들은 아닙니다). AutoGen 자체는 여전히 하나의
내부 헤더(src/tcpedit/tcpedit_stub.h)에만 필요합니다 —
scripts/autoopts/README.md를 참조하세요. 릴리스
tarball을 빌드할 때는 이 중 어느 것도 필요하지 않으며, 이미 생성된 상태로
제공됩니다.
./autogen.sh # only needed once, from a git checkout
./configure
make
sudo make install
4.6부터 이 제품군은 CMake(3.16+)로도 빌드할 수 있으며, Tcpreplay를 컴파일하는 권장되고 주요한 방법입니다. Autotools는 여전히 제공되며 릴리스 tarball에 사용되지만, 결국 폐기될 예정이므로 새로운 스크립트/패키징은 CMake를 대상으로 해야 합니다.
cmake -B build
cmake --build build
sudo cmake --install build
./configure의 모든 플래그에는 CMake 대응 항목이 있습니다. CMakeLists.txt 상단의 표를 참조하세요. 몇 가지 예시는 다음과 같습니다:
# debug build with support for the -d option
cmake -B build -DENABLE_DEBUG=ON
# AddressSanitizer or ThreadSanitizer build
cmake -B build -DENABLE_ASAN=ON
cmake -B build -DENABLE_TSAN=ON
# custom libpcap install, static linking, custom tcpdump path
cmake -B build -DWITH_LIBPCAP=/usr/local/opt/libpcap \
-DENABLE_STATIC_LINK=ON -DWITH_TCPDUMP=/usr/sbin/tcpdump
# force a specific packet injection method
cmake -B build -DFORCE_INJECT_PCAP_SENDPACKET=ON
# several configurations side by side
cmake -B build-debug -DENABLE_DEBUG=ON
cmake -B build-release
cmake --build build --target manpages는 man 페이지를 다시 생성합니다
(python3 + asciidoctor). 단순한 cmake --build build는 man 페이지를 건드리지 않습니다.
CMake Tools 확장을 사용하는 VS Code 사용자는 저장소 폴더를 열고
프롬프트가 표시되면 configure preset을 선택하기만 하면 됩니다.
기본 소켓 경로가 충분히 빠르지 않다면, Tcpreplay에는 패킷을 NIC로 직접 전송하는 오버헤드가 더 낮은 세 가지 방법이 있습니다. 대략 다음 순서대로 시도해 보세요 — io_uring은 설정이 가장 적게 필요하고, netmap은 가장 많이 필요합니다:
liburing-dev 필요 — 패치된 드라이버 불필요)liburing-dev가 설치되어 있고 io_uring을 지원하는 커널을 사용하는 Linux 시스템에서 감지됩니다.
패킷은 여전히 일반 PF_PACKET raw 소켓을 통해 나가지만, 전송은
io_uring 큐를 통해 비동기적으로 제출되어 패킷당
시스템 호출 오버헤드를 줄입니다.
sudo apt-get install liburing-dev
cmake -B build && cmake --build build && sudo cmake --install build
sudo tcpreplay -i eth0 --io-uring test.pcap
libxdp-dev/libbpf-dev + eBPF 지원 드라이버 필요)libxdp-dev와 libbpf-dev가 설치된 Linux 시스템에서 감지됩니다. 선택하면
(--xdp), 커널 네트워크 스택을 우회하고 패킷이 eBPF가 활성화된 드라이버를
통해 직접 전송됩니다 — 드라이버를 패치하지 않고도 상용 트래픽 생성기에
필적하는, 일반 어댑터에서의 완전한 라인 레이트를 제공합니다.
sudo apt-get install libxdp-dev libbpf-dev
cmake -B build && cmake --build build && sudo cmake --install build
sudo tcpreplay -i eth0 --xdp test.pcap
[netmap]은 재생이 진행되는 동안 네트워크 드라이버를 우회하고 NIC의 TX 버퍼에 직접 기록합니다. 이는 세 가지 옵션 중 가장 침습적입니다 — 활성화된 동안 해당 인터페이스의 네트워크 스택이 꺼지므로 SSH로 접속한 인터페이스에서 테스트하지 마십시오 — 하지만 지원되는 하드웨어에서는 최고 처리량 상한을 가집니다.
[프로젝트 페이지][netmap]에서 netmap을 다운로드하여 설치하십시오. /usr/src 또는 /usr/local/src에 압축을 풀었다면
자동으로 인식됩니다. 그렇지 않으면 빌드 시 해당 경로를 지정하십시오: