웹사이트를 터널로 삼아 네트워크 흐름을 연구하는 도구
브라우저의 요청이 특정 웹 페이지를 지나 인터넷으로 나가는 장면을 상상해 보세요. OpenFlux는 TCP/UDP 트래픽을 다양한 웹 서비스로 우회시켜 전송 경로를 제어하고 관찰할 수 있게 해주는 연구용 도구입니다. 이 도구는 Go로 작성되었으며, 클라이언트와 종료 노드 역할을 수행하며 네트워크 스택의 동작을 분석하는 데 사용됩니다.
웹 기반 전송 경로와 스크립트 확장
OpenFlux는 Yandex.Docs, Mail.ru Docs, Direct 등 여러 웹 서비스를 전송 경로로 활용합니다. Go 코드를 수정하거나 재빌드하지 않고도 새로운 전송 방식을 만들 수 있는 서명된 JavaScript 엔진도 포함됩니다. 이 엔진은 goja를 기반으로 하며, 호스트 API와 서명 체계를 통해 스크립트의 신뢰성을 관리합니다. 여러 전송 경로를 동시에 실행하는 세션은 인증된 협상, 암호화, 그리고 장애 시 자동 전환을 지원합니다.
종료 노드의 두 가지 처리 방식
종료 노드는 L3와 L4 두 가지 백엔드 중 하나를 선택해 작동합니다. L3 모드는 원시 SNAT/DNAT를 사용해 TCP/UDP 패킷을 그대로 전달하며, Linux 환경에서 root 권한이 필요합니다. 이 방식은 끝에서 끝까지 터널링을 유지합니다. L4 모드는 gVisor 프록시를 통해 사용자 공간에서 트래픽을 종료하고 실제 서버로 다시 연결합니다. L4는 모든 운영체제에서 root 권한 없이 작동하며, Windows와 macOS에서 L3가 구현되지 않은 경우의 대안으로 사용됩니다.
빌드와 실행 절차
Go 모듈을 정리하고 바이너리를 빌드한 후, 종료 노드와 클라이언트를 각각 실행합니다. 종료 노드는 --role=exit와 함께 L4 모드와 특정 전송 방식을 지정하여 실행합니다. 클라이언트는 --role=client와 함께 SOCKS5 인바운드와 동일한 전송 방식을 지정하여 실행하며, 브라우저의 프록시 주소를 127.0.0.1:1080으로 설정하면 됩니다. 모바일 클라이언트 빌드는 Android NDK r27+ 또는 Xcode 26.6+가 필요하며, VPS 기반 종료 노드는 Linux VPS/VDS가 필요합니다.
사용 전 알아둘 점
이 도구는 네트워크 제한 우회나 플랫폼 규칙 위반을 장려하지 않으며, 사용 결과에 대한 책임은 사용자에게 있습니다. 코드는 GNU General Public License v3.0 또는 이후 버전으로 배포되며, 어떠한 보증도 없이 제공됩니다. 스크립트 기반 전송 엔진과 VPS 없이 PHP 호스팅을 이용하는 종료 노드는 비교적 새로운 기능으로 실제 사용 사례가 축적되는 중입니다. Windows와 macOS의 네이티브 L3 종료 백엔드는 아직 구현되지 않았으므로, 해당 플랫폼에서는 L4 모드를 사용해야 합니다.