프로젝트 소개

# EndlessNet Client EndlessNet Client는 EndlessNet 네트워크의 핵심 인프라를 제공하며, Linux, macOS, Windows 전반에서 장기 실행 에이전트, 명령줄 인터페이스(CLI), 서비스 통합으로 기능합니다. 서명된 서비스 카탈로그 소비, L3 애플리케이션 라우트 관리, 커넥터 검색, 패킷 적용 등 중요한 네트워크 작업을 처리합니다. ## 주요 기능 - **크로스 플랫폼 지원**: Linux(Ubuntu/Debian), Windows Server, macOS에서 네이티브로 동작합니다. - **보안 네트워킹**: 서명된 와이어 계약과 컨트롤 플레인 HTTP 상호작용을 구현하여 데이터 무결성과 승인된 접근을 보장합니다. - **서비스 통합**: `ipc/v2` 공개 경계를 통해 로컬 프로세스 간 통신(IPC)을 관리하며, 엄격한 전송 클라이언트를 노출하면서 내부 상태, 아이덴티티, STUN 구현은 비공개로 유지합니다. - **CLI 및 자동화**: 사용자 상호작용을 위한 CLI를 제공하며, 특정 명령은 보안 정책에 따라 제한됩니다(예: 라우트 승인은 관리 콘솔 필요). - **강력한 테스트**: 설치 테스트, 기본 서비스 수용, 연결 해제 지속성, 격리된 테스트 서버에 대한 실제 클라이언트 계약 시나리오를 포함하는 포괄적인 CI 파이프라인을 포함합니다. ## 아키텍처 및 의존성 클라이언트는 API 계약을 위해 외부 모듈에 의존합니다: - **컨트롤 플레인 API**: `github.com/endless-net/client-api/clientapi`에서 버전이 지정된 DTO와 클라이언트를 소비합니다. 여기에는 HTTP/복구 계약(v1), protobuf 메시지, Connect 바인딩이 포함됩니다. - **공개 경계**: 노출되는 유일한 Go 패키지는 `ipc/v2`이며, 로컬 서비스 IPC v2 계약을 처리합니다. ## 빌드 및 릴리스 개발자는 표준 Go 도구를 사용하여 클라이언트를 빌드할 수 있습니다: ```bash go build ./cmd/endlessnet-client ./cmd/endlessnet-client-recovery-helper go test -short ./... ``` 릴리스는 Windows amd64 및 Linux amd64용 GitHub Releases와 Debian/Ubuntu(amd64/arm64)용 APT 패키지로 게시됩니다. CI 매트릭스는 Ubuntu 22.04/24.04, Windows 2022/2025, macOS 15 전반의 호환성을 보장합니다. ## 문서 자세한 운영 가이드와 기술 사양은 저장소의 `docs` 디렉터리에서 확인할 수 있습니다: - [`docs/ru/client-and-network.md`](docs/ru/client-and-network.md): 러시아어 아키텍처 및 운영 가이드. - [`docs/service-discovery.md`](docs/service-discovery.md): 서명된 서비스 카탈로그 소비 세부사항. - [`docs/application-runtime.md`](docs/application-runtime.md): L3 라우트 및 패킷 적용. - [`docs/installation-tests.md`](docs/installation-tests.md): 설치 및 수용 기준. - [`docs/testing-control-plane.md`](docs/testing-control-plane.md): 컨트롤 플레인 시나리오 테스트. - [`docs/client-ipc-v2.openapi.yaml`](docs/client-ipc-v2.openapi.yaml): 로컬 서비스 IPC 계약. - [`docs/client-ownership-recovery.md`](docs/client-ownership-recovery.md): 소유권 복구 프로세스.