Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
phantun — UDP stream을 Layer 3 및 Layer 4 (NAPT) 방화벽/NAT를 통과할 수 있는 (가짜) TCP 스트림으로 변환합니다. | Kitploit
도구/GitHubGitHub/dndx/phantun
IDS/IPS EvasionNetwork Security
GitHubdndx/phantun

phantun

UDP stream을 Layer 3 및 Layer 4 (NAPT) 방화벽/NAT를 통과할 수 있는 (가짜) TCP 스트림으로 변환합니다.

저장소 보기
2.4k217261개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Phantun

가벼우면서 빠른 UDP to TCP 난독화 도구입니다.

GitHub Workflow Status docs.rs

목차

  • Phantun
  • 최신 릴리스
  • 개요
  • 사용법
    • 1. 커널 IP 포워딩 활성화
    • 2. 필요한 방화벽 규칙 추가
      • 클라이언트
        • nftables 사용
        • iptables 사용
      • 서버
        • nftables 사용
        • iptables 사용
    • 3. Phantun 바이너리를 루트 권한 없이 실행 (선택사항)
    • 4. Phantun 데몬 시작
      • 서버
      • 클라이언트
  • MTU 오버헤드
    • WireGuard용 MTU 계산
  • 버전 호환성
  • 문서
  • 성능
  • 향후 계획
  • udp2raw와의 비교
  • 라이선스

최신 릴리스

v0.8.1

Phantun의 MIPS 아키텍처 지원

Rust는 2023년부터 MIPS 기반 플랫폼에 대해 Tier 3 지원만 제공합니다. 따라서 Phantun의 MIPS 빌드는 nightly Rust 툴체인을 사용하여 빌드되며, 최선의 노력 기반으로만 제공됩니다.

개요

Phantun은 UDP 패킷을 TCP 연결로 난독화하는 프로젝트입니다. 최소한의 처리 및 캡슐화 오버헤드로 최대 성능을 달성하는 것을 목표로 합니다.

일반적으로 UDP가 차단되거나 제한되지만 TCP는 허용되는 환경에서 사용됩니다.

Phantun은 UDP 패킷 스트림을 난독화된 TCP 스트림 패킷으로 변환합니다. Phantun이 사용하는 TCP 스택은 대부분의 L3/L4 상태 저장/무상태 방화벽/NAT 장치를 통과하도록 설계되었습니다. L7 프록시는 통과할 수 없습니다. 그러나 이 접근 방식의 장점은 재전송 및 흐름 제어와 같은 일반적인 UDP over TCP 성능 저하 요소가 발생하지 않는다는 점입니다. 패킷의 순서가 뒤바뀌는 전송과 같은 기본 UDP 속성은 방화벽/NAT 장치의 관점에서 연결이 TCP 연결처럼 보이더라도 완전히 유지됩니다.

Phantun은 Phantom TUN(Phantom TUN)을 의미하며, 상태 저장 방화벽/NAT를 통해 TCP 패킷처럼 통과할 수 있을 만큼만 UDP 트래픽을 난독화하는 도구입니다.

Phantun은 100% 안전한 Rust로 작성되었습니다. 멀티 코어 시스템에서 잘 확장되도록 광범위하게 최적화되었으며, 빠른 연결에서 모든 가용 CPU 리소스를 포화시키는 데 문제가 없습니다. 벤치마크 결과는 성능 섹션을 참조하세요.

Phantun 벤치마크 결과 트래픽 흐름 다이어그램

사용법

아래 예제에서는 Phantun 서버가 4567 포트(서버의 --local 옵션)에서 들어오는 Phantun 클라이언트 연결을 수신하고, UDP 패킷을 127.0.0.1:1234의 UDP 서버(서버의 --remote 옵션)로 전달한다고 가정합니다.

또한 Phantun 클라이언트가 127.0.0.1:1234(클라이언트의 --local 옵션)에서 들어오는 UDP 패킷을 수신하고, 10.0.0.1:4567(클라이언트의 --remote 옵션)의 Phantun 서버에 연결한다고 가정합니다.

Phantun은 클라이언트와 서버 모두에 TUN 인터페이스를 생성합니다. 클라이언트의 경우, Phantun은 기본적으로 IP 주소 192.168.200.2 및 fcc8::2를 할당합니다. 서버의 경우, 기본적으로 192.168.201.2 및 fcc9::2를 할당합니다. 따라서 커널에서 IPv4/IPv6 포워딩이 활성화되어 있어야 하며, 물리적 NIC 주소와 Phantun의 Tun 인터페이스 주소 간의 NAT를 위해 적절한 iptables/nftables 규칙을 설정해야 합니다.

Phantun이 생성하는 Tun 인터페이스의 이름과 할당된 주소는 사용자 정의할 수 있습니다. 변경 방법을 보려면 -h 옵션으로 실행 파일을 실행하십시오.

이 네트워크 토폴로지를 이해하는 또 다른 방법은 다음과 같습니다(위의 다이어그램 참조).

Phantun 클라이언트는 라우터 뒤에 있는 개인 IP 주소(192.168.200.2/fcc8::2)를 가진 머신과 같습니다. 인터넷에 접속하려면 트래픽이 NIC를 떠나기 전에 개인 IP 주소를 SNAT해야 합니다.

Phantun 서버는 라우터 뒤에 있는 개인 IP 주소(192.168.201.2/fcc9::2)를 가진 서버와 같습니다. 인터넷에서 접속하려면 라우터에서 수신 포트를 DNAT하고 대상 IP 주소를 서버가 들어오는 연결을 수신하는 주소로 변경해야 합니다.

이러한 경우 Phantun을 실행하는 머신/iptables가 Phantun이 개인 IP 주소를 사용하여 외부와 통신할 수 있도록 하는 "라우터" 역할을 합니다.

Phantun v0.4.1부터 IPv6는 TCP 및 UDP 양쪽에서 완전히 지원됩니다. IPv6 주소를 지정하려면 명령줄 옵션에서 [::1]:1234 형식을 사용하세요. AAAA 레코드 확인도 지원됩니다. IPv6 동작을 제어하는 방법에 대한 자세한 옵션을 보려면 -h로 프로그램을 실행하십시오.

목차로 돌아가기

1. 커널 IP 포워딩 활성화

/etc/sysctl.conf를 편집하고 net.ipv4.ip_forward=1을 추가한 후 sudo sysctl -p /etc/sysctl.conf를 실행합니다.

IPv6 전용 설정

net.ipv6.conf.all.forwarding=1도 설정해야 합니다.

목차로 돌아가기

2. 필요한 방화벽 규칙 추가

클라이언트

클라이언트는 물리적 인터페이스에서 SNAT를 활성화하여 Phantun의 주소를 물리적 네트워크에서 사용할 수 있는 주소로 변환하기만 하면 됩니다. 이는 masquerade를 사용하여 간단히 수행할 수 있습니다.

참고: eth0을 실제 물리적 인터페이스 이름으로 변경하십시오.

목차로 돌아가기

nftables 사용

table inet nat {
    chain postrouting {
        type nat hook postrouting priority srcnat; policy accept;
        iifname tun0 oif eth0 masquerade
    }
}

참고: 위 규칙은 테이블 패밀리 유형으로 inet을 사용하므로 IPv4 및 IPv6 사용과 모두 호환됩니다.

목차로 돌아가기

iptables 사용

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

목차로 돌아가기

서버

서버는 TCP 수신 포트를 Phantun의 TUN 인터페이스 주소로 DNAT해야 합니다.

참고: eth0을 실제 물리적 인터페이스 이름으로, 4567을 Phantun 서버가 사용하는 실제 TCP 포트 번호로 변경하십시오.

목차로 돌아가기

nftables 사용

table inet nat {
    chain prerouting {
        type nat hook prerouting priority dstnat; policy accept;
        iif eth0 tcp dport 4567 dnat ip to 192.168.201.2
        iif eth0 tcp dport 4567 dnat ip6 to fcc9::2
    }
}

목차로 돌아가기

iptables 사용

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
ip6tables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination fcc9::2

목차로 돌아가기

3. Phantun 바이너리를 루트 권한 없이 실행 (선택사항)

네트워크 관련 애플리케이션을 루트 사용자로 실행하는 것은 권장되지 않습니다. Phantun은 cap_net_admin 기능을 사용하여 완전히 루트가 아닌 사용자로 실행될 수 있습니다.

sudo setcap cap_net_admin=+pe phantun_server
sudo setcap cap_net_admin=+pe phantun_client

목차로 돌아가기

4. Phantun 데몬 시작

참고: 자세한 옵션을 보려면 -h 옵션으로 Phantun 실행 파일을 실행하십시오.

목차로 돌아가기

서버

참고: 4567은 Phantun이 수신할 TCP 포트이며 위에서 지정한 DNAT 규칙과 일치해야 합니다. 127.0.0.1:1234는 새 연결을 위해 연결할 UDP 서버입니다.

RUST_LOG=info /usr/local/bin/phantun_server --local 4567 --remote 127.0.0.1:1234

또는 --remote와 함께 호스트 이름 사용:

RUST_LOG=info /usr/local/bin/phantun_server --local 4567 --remote example.com:1234

참고: 서버는 기본적으로 Tun 인터페이스에 IPv4 및 IPv6 개인 주소를 모두 할당합니다. IPv6를 사용하지 않으려면 위의 IPv6 DNAT 규칙을 생성하지 않으면 되며, Tun 인터페이스에 IPv6 주소가 있어도 서버에 부작용이 없습니다.

목차로 돌아가기

클라이언트

참고: 127.0.0.1:1234는 Phantun이 수신할 UDP 주소 및 포트입니다. 10.0.0.1:4567은 연결할 Phantun 서버입니다.

RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote 10.0.0.1:4567

또는 --remote와 함께 호스트 이름 사용:

RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote example.com:4567
IPv6 전용 설정
RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote [fdxx::1234]:4567

AAAA 레코드가 있는 도메인 이름도 지원됩니다.

목차로 돌아가기

MTU 오버헤드

Phantun은 터널링 오버헤드를 최소화하는 것을 목표로 합니다. 일반 UDP 패킷과 비교한 오버헤드는 다음과 같습니다(아래는 IPv4 예제).

표준 UDP 패킷: 20바이트 IP 헤더 + 8바이트 UDP 헤더 = 28바이트

난독화된 패킷: 20바이트 IP 헤더 + 20바이트 TCP 헤더 = 40바이트

Phantun은 상태 저장 패킷 검사를 통과하기 위해 IP 및 TCP 헤더 외에 추가 헤더를 추가하지 않습니다!

Phantun의 추가 오버헤드: 12바이트. 즉, Phantun을 사용할 때 UDP 패킷의 사용 가능한 페이로드가 12바이트 감소합니다. 이는 이러한 종류의 난독화에서 가능한 최소 오버헤드입니다.

패킷 헤더 다이어그램

목차로 돌아가기

WireGuard용 MTU 계산

Phantun을 사용하여 WireGuard® UDP 패킷을 터널링하는 경우 WireGuard 인터페이스에 사용할 올바른 MTU를 결정하는 방법에 대한 지침은 다음과 같습니다.

WireGuard MTU = 링크 MTU - IPv4 헤더 (20바이트) - TCP 헤더 (20바이트) - WireGuard 오버헤드 (32바이트)

또는

WireGuard MTU = 링크 MTU - IPv6 헤더 (40바이트) - TCP 헤더 (20바이트) - WireGuard 오버헤드 (32바이트)

예를 들어, MTU가 1500바이트인 네트워크 링크의 경우 WireGuard 인터페이스 MTU는 다음과 같이 설정해야 합니다.

IPv4: 1500 (링크 MTU) - 20 - 20 - 32 = 1428바이트

IPv6: 1500 (링크 MTU) - 40 - 20 - 32 = 1408바이트

결과적으로 생성되는 Phantun TCP 데이터 패킷은 1500바이트로 인터페이스 MTU 1500을 초과하지 않습니다.

도구 다운로드