프로젝트 소개

프로젝트 정의: 이 프로젝트는 Cloudflare 공식 IP 주소 풀을 중심으로 운영되는 「최적 IP」 지속 스캔 및 관리 워크스테이션입니다. 핵심 스캔 엔진인 CLI 도구 cf_db.py와 이를 내장 호출하는 Web 관리 콘솔 cf_web.py로 구성되며, 두 도구 모두 Python 3.8+ 표준 라이브러리로 구현되어 외부 패키지 의존성이 없습니다. 스캔 원리 및 품질 제어: 여러 포트에 대해 동시 다발적인 다이얼링 탐색을 수행하고 TLS 핸드셰이크로 2차 확인을 거쳐 사용 가능한 CF 엣지 IP를 선별합니다. 샘플링에는 「인접 영역 가중치」 전략을 사용하여 고품질 IP가 발견된 C 클래스 대역을 우선적으로 샘플링하며, --exploit 옵션으로 편향 비율을 조정할 수 있습니다. 결과는 SQLite에 영구 저장되어 언제든 종료 후 다음 실행 시 이어서 스캔하는 단점 재개 모드를 지원합니다. 데이터베이스 크기는 상한 설정과 「비석(Tombstone)」 메커니즘으로 제어되며, 제거된 불능 IP는 일정 기간 재테스트 대상에서 제외됩니다. Web 관리 콘솔: 실행 시 기본적으로 액세스 제어가 활성화되며, 최초 실행 시 사용자 이름과 랜덤 비밀번호가 생성되어 cf_secret.json(권한 600)에 저장됩니다. 모든 페이지와 API는 Basic Auth를 통해 인증됩니다. 시스템에 openssl이 설치된 경우 기본적으로 자체 서명 HTTPS가 활성화됩니다. README에서는 자체 서명 인증서가 전송 암호화 및 로컬 네트워크 도청 방지용일 뿐 신원 공증을 제공하지 않으므로, 외부망 개방 시 강력한 비밀번호 설정이 필요함을 명시하고 있습니다. 인터페이스는 왼쪽 접이식 내비게이션(모바일에서는 드로어 형태)으로 구성되며 총 5가지 뷰를 제공합니다: - 총괄 대시보드: 통계 카드(테스트 완료 IP는 누적치)와 데이터 센터, 국가, 지연 시간, 대역폭, 라인별 5가지 분포 차트를 제공합니다. - 스캔 제어: 주소 소스(공식 전역, CF 공식, 통신사별 최적 대역), 포트, 라운드당 샘플 수, 동시성, 검증 예산, 라운드당 대역폭 실측 수, 속도 측정 동시성, 측정 도메인, 지역 보완, 재검토, 라인 탐지 예산 및 재테스트 주기, 고품질 C 클래스 비율, 최대 지연 시간, 라이브러리 상한 및 TLS 2차 확인, 라인 분류, IPv6 동시 스캔 등의 스위치를 제공합니다. 설정값은 저장 후 즉시 반영되며 스캔을 언제든 시작하거나 중지할 수 있습니다. - IP 리스트: 데이터 센터(쉼표 구분), 최소 대역폭, 최대 지연 시간, IP 포함 여부, 포트, 대역폭 보유 여부, IPv6 전용 등으로 필터링이 가능합니다. 열 헤더 클릭으로 정렬할 수 있으며, 선택 후 ip:포트#지역 형식으로 복사, 선택 항목 txt 내보내기 또는 선택 해제가 가능하며 페이지를 넘겨도 선택 상태가 유지됩니다. 페이지네이션 및 현재 필터 기준의 ADD.txt / CSV 내보내기를 지원합니다. - 클릭 효과: 블루 아카이브 스타일의 클릭 효과와 커서 트레일 스위치 및 파라미터 슬라이더를 제공하며, 조정 즉시 반영되어 브라우저 로컬에 저장됩니다. 데스크톱과 터치스크린 모두 사용 가능합니다. - 배경화면: 서버에서 NASA APOD 오늘의 사진을 분석 및 캐싱하며, 당일 콘텐츠가 영상일 경우 최근 이미지 날짜로 대체하고 인터페이스 실패 시 이전 이미지를 사용합니다. cf_settings.json에 NASA API Key를 입력하여 할당량을 높일 수 있습니다. 수동 최적화: 백그라운드 스캔을 기다리지 않고 설정한 수량 N, 대역폭 우선 또는 지연 시간 우선, 지역 필터, 대역폭 보유 여부, IPv6 전용 조건을 설정하면 로컬 라이브러리에서 조건에 맞는 후보를 max(N×5, 20)개(최대 150개) 추출합니다. 이후 실시간으로 연결성 재테스트, 지역 식별 및 대역폭 실측(동시성 20)을 수행하여 최적의 N개 항목을 표시하고 선택 복사할 수 있게 합니다. 재테스트 데이터는 일반 테스트 기록으로 로컬 라이브러리에 기록되지만, 최적화 리스트 자체는 저장되지 않습니다. 라인 탐지 및 속도 측정 엔드포인트: route_probe.py는 독립적인 라우팅 라인 분류 탐지기로, 전송 ASN 판별 및 홉별 Traceroute를 통해 프리미엄/일반/혼합 라인을 구분합니다(ping 명령 필요). 속도 측정은 기본적으로 공용 speed.cloudflare.com을 사용하지만, 대량 측정 시 속도 제한이 발생할 수 있습니다. README에서는 자체 구축 속도 측정 도메인으로 사용하기 위해 cf_speedtest_worker.js를 Cloudflare Workers에 배포할 것을 권장하며, 제로 블록 스트리밍 방식을 통해 무료 버전의 CPU 제한을 회피합니다. 인터페이스 및 명령: Web API는 GET / (인터페이스), /api/status, /api/stats, /api/table, /api/optimize, /api/copy, /api/export 및 POST /api/control, /api/settings, /api/test를 포함합니다. CLI 주요 파라미터로는 포트, 라운드당 후보 수, 동시성, 검증 및 대역폭 예산, exploit 비율, 최대 지연 시간, 라인 탐지 예산 및 재테스트 주기, IPv6, 단일/다중 라운드 모드, 라운드 간격, 고품질 IP 전용 재검토, 시드 임포트, 수량 및 지역별 내보내기, 라이브러리 IP 상한 등이 있습니다. 또한 --stats를 통해 라이브러리 통계 및 커버리지를 확인할 수 있습니다. IPv6: 공개된 최적 v6 리스트(통신사 매칭 + 공용 소스)를 우선 샘플링하며, 동시에 CF 공식 v6 대역을 랜덤 발견 대상에 포함합니다. 이를 위해 로컬 머신에 IPv6 네트워크 환경이 필요합니다. 파일 구성으로는 선택 사항인 cf_settings.json(인터페이스 파라미터), vendor/ba-click-fx.js(블루 아카이브 스타일 클릭 효과 라이브러리, MIT, 로컬 호스팅)가 포함됩니다. 실행 시 로그인 자격 증명, 자체 서명 인증서, 배경화면 캐시 및 ASN 데이터 파일이 자동 생성됩니다. 본 프로젝트는 MIT 라이선스를 채택하고 있습니다.