Kivuko 아이콘

Kivuko

Rust로 작성하고 WireGuard를 기반으로 만든 Mac 메뉴 막대용 NordVPN 클라이언트.

Kivuko(키부코)는 스와힐리어로 ‘건널목’ 또는 ‘나룻배’라는 뜻입니다.

Kivuko는 독립 프로젝트입니다. Nord Security가 만들거나 보증하거나 지원하지 않습니다. 본인의 NordVPN 구독이 필요합니다.

연결된 상태의 Kivuko 메뉴: Disconnect, United States로 설정된 Location, 체크된 Kill Switch, Auto-Connect, Block Ads and Trackers

킬 스위치, 자동 재연결, 광고 차단

Kivuko는 WireGuard(NordLynx)로 연결하는 macOS용 무료 오픈 소스 NordVPN 클라이언트입니다.

Kivuko의 킬 스위치는 macOS가 강제합니다. Kivuko는 잠자기나 네트워크 변경 후 다시 연결되며, NordVPN의 DNS로 광고와 추적기를 차단할 수 있습니다. 메뉴 막대 앱은 메모리를 약 23MB, 터널은 약 8MB 사용합니다.

터널은 macOS 패킷 터널 확장 프로그램 안에서 Mullvad가 Rust로 구현한 WireGuard인 GotaTun을 실행합니다. 이 확장 프로그램은 macOS가 시작하며, 잠자기 후 등에는 다시 시작합니다.

서버가 응답하지 않을 때

Kivuko는 15초마다 WireGuard 핸드셰이크를 확인합니다.

  1. 8초다음 서버 시도서버가 8초 안에 응답하지 않으면 Kivuko가 다음 서버를 시도하며, 최대 3개까지 시도합니다.
  2. 3분핸드셰이크 강제3분 동안 WireGuard 핸드셰이크가 없으면 Kivuko가 새 핸드셰이크를 강제로 시작합니다.
  3. 6분새 서버에서 다시 시작6분이 지나면 macOS가 새 서버에서 터널을 다시 시작합니다(Auto-Connect가 켜져 있는 경우).

작동 방식

Kivuko.app                     app/       menu bar app: menu, token prompt, VPN configuration
└── Contents/PlugIns/
    └── KivukoTunnel.appex     provider/  packet-tunnel extension: server choice, GotaTun, watchdog
  • 메뉴 막대 앱은 macOS가 시스템 설정 › VPN에 보관하는 VPN 구성을 관리하며, 여기에는 킬 스위치, 주문형 VPN 규칙, DNS 선택이 포함됩니다.
  • 터널은 NetworkExtension 패킷 터널 제공자입니다. 앱이 실행 중이 아닐 때의 자동 재연결을 포함해, VPN이 시작될 때마다 macOS가 터널을 시작합니다.
  • 터널은 시작할 때마다 NordVPN에 추천 WireGuard 서버를 요청하고, 주소·경로·DNS를 macOS에 전달한 다음, macOS가 만든 터널 인터페이스에서 GotaTun을 실행합니다.
  • docs/architecture.md에서 설계 결정, 연결 순서, 워치독을 설명합니다.

개인정보 보호 및 보안

Kivuko는 NordVPN API 및 연결된 VPN 서버와만 통신하며, 분석 데이터는 보내지 않습니다.

  • NordVPN 액세스 토큰은 로그인 키체인에 저장됩니다. Connect를 클릭하면 앱이 토큰을 터널에 전달하고, 터널은 이를 사용해 NordVPN에서 WireGuard 키를 가져옵니다.
  • 터널은 WireGuard 키를 자체 샌드박스 컨테이너에 보관하며, 이 키는 사용자 본인만 읽을 수 있습니다(모드 0600).
  • macOS의 VPN 구성은 Mac의 모든 사용자가 읽을 수 있으므로, Kivuko는 그곳에 국가와 DNS 선택만 저장합니다.
  • 로그에는 이벤트만 기록되며 토큰이나 키는 기록되지 않습니다. Kivuko가 만드는 모든 파일은 docs/setup.md에 나와 있습니다.

리소스 사용량

macOS 26을 사용하는 MacBook Pro에서 측정했습니다.

프로세스메모리CPU
메뉴 막대 앱23MB유휴 시 0%
터널8MB백그라운드 트래픽 시 1% 미만, 212Mbit/s로 다운로드하는 동안 코어 1개의 약 26%

Kivuko 받기

바로 쓸 수 있는 다운로드 파일은 없습니다. macOS는 유료 Apple Developer Program 멤버십으로 서명된 VPN 확장 프로그램만 불러오므로, Kivuko를 직접 빌드하고 서명해야 합니다. 전체 가이드는 docs/setup.md에 있습니다.

요구 사항

Mac
Apple Silicon
macOS
14 이상(현재까지 macOS 26에서만 테스트함)
VPN 서비스
본인의 NordVPN 구독
서명
유료 Apple Developer Program 멤버십

빌드에 필요한 것

Xcode
해당 계정으로 로그인한 상태
Rust
1.95 이상
  1. 저장소를 복제하고 com.yourname처럼 자신만의 번들 ID 접두사를 정합니다.

    git clone https://github.com/piedol/kivuko.git
    cd kivuko && cp signing/local.env.example signing/local.env

    signing/local.env에 KIVUKO_BUNDLE_PREFIX를 설정하고, Apple ID가 여러 개발자 팀에 속해 있다면 KIVUKO_TEAM도 설정합니다. scripts/bundle.sh --check를 실행하면 무엇이 서명될지 확인할 수 있습니다.

  2. 빌드, 서명, 설치를 진행합니다. 처음 실행하면 Xcode가 Mac과 두 번들 ID를 등록하고 개발 프로파일을 다운로드합니다.

    scripts/bundle.sh --install
  3. Nord Account › NordVPN › Advanced settings › Access token에서 NordVPN 액세스 토큰을 발급받습니다.

  4. 메뉴 막대의 방패 아이콘을 클릭하고 Set Up and Connect를 선택합니다. 토큰을 붙여넣고 Save and Connect를 클릭한 다음, macOS가 VPN 구성 추가를 요청하면 허용을 클릭합니다.

개발 프로파일은 1년 동안 유효합니다. 만료되면 macOS가 Kivuko를 불러오지 않으며, scripts/bundle.sh --install을 다시 실행하면 갱신됩니다. Mac에 Kivuko 사본을 하나 더 두지 마세요. 터널 확장 프로그램 사본 두 개가 등록되어 있으면, 어느 쪽 앱을 열든 macOS가 다른 쪽의 터널을 중단해 VPN 연결이 끊깁니다.

제거하려면 제거 안내를 순서대로 따르세요. 앱을 먼저 삭제하면 VPN 구성을 제거할 때까지 킬 스위치가 연결을 계속 차단할 수 있습니다.

자주 묻는 질문

Kivuko는 무료 오픈 소스인가요?

네. Kivuko는 무료로 다운로드하고 사용할 수 있으며, 소스 코드는 GNU General Public License v3.0 이상에 따라 GitHub에 공개되어 있습니다.

NordVPN 구독이 필요한가요?

네. Kivuko는 Nord Account › NordVPN › Advanced settings에서 발급한 액세스 토큰을 사용해 본인의 구독으로 NordVPN에 연결합니다.

Kivuko는 Nord Security와 관련이 있나요?

아니요. Kivuko는 독립 프로젝트입니다. Nord Security가 만들거나 보증하거나 지원하지 않습니다.

Kivuko는 어떻게 설치하나요?

Apple Silicon과 macOS 14 이상을 갖춘 Mac에서 소스로 빌드합니다. macOS는 유료 Apple Developer Program 멤버십으로 서명된 VPN 확장 프로그램만 불러오므로, 바로 쓸 수 있는 다운로드 파일은 없습니다. 자세한 단계는 docs/setup.md에 있습니다.

Kivuko는 네트워크로 무엇을 보내나요?

NordVPN API 및 연결된 VPN 서버와만 통신하며, 분석 데이터는 보내지 않습니다. 액세스 토큰은 로그인 키체인에 보관됩니다.

Kivuko는 어떻게 제거하나요?

먼저 Kivuko를 종료한 다음, 시스템 설정 › VPN에서 구성을 제거하고, Kivuko.app을 휴지통으로 옮기고, 로그인 키체인에서 토큰을 삭제합니다. 앱을 먼저 삭제하면 킬 스위치가 연결을 계속 차단할 수 있습니다.

라이선스

Kivuko는 GNU General Public License v3.0 이상에 따른 자유 소프트웨어입니다. GitHub에서 버그 리포트와 풀 리퀘스트를 환영합니다.

업무를 포함해 어디에서나 사용할 수 있으며, 소스 코드를 읽고, 변경하고, 공유할 수 있습니다. 수정한 버전을 배포하는 경우 같은 라이선스로 소스 코드를 공개해야 합니다.

크레디트: Mullvad의 GotaTun, wireguard-apple, objc2.