View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 코드
  • NetworkExtension으로 네트워크 트래픽 필터링 및 터널링하기

    시스템의 핵심 네트워킹 기능을 확장할 수 있는 기능과 유연성을 앱에 부여하는 NetworkExtension 프레임워크의 API를 알아보세요. 이러한 기능으로는 네트워크 콘텐츠 필터 구현 및 VPN 구성 생성 및 관리 등이 있습니다. iOS, iPadOS 및 macOS 26에서 이제 개인정보 보호 및 보안을 저해하지 않으면서 호스트 이름뿐만 아니라 전체 URL을 사용하여 트래픽 결정을 내리는 강력한 콘텐츠 필터를 빌드할 수 있습니다. 네트워크 릴레이 및 VPN을 비롯하여 NetworkExtension 프레임워크의 다양한 주요 사용 사례를 간략하게 소개한 후, Private Information Retrieval 및 Privacy Pass 등 새로운 URL 필터 API와 주요 구성 요소를 자세히 살펴보겠습니다.

    챕터

    • 0:00 - 인사말
    • 1:48 - NetworkExtension 소개
    • 3:21 - 원격 리소스에 접근하기
    • 8:40 - 콘텐츠 필터링하기
    • 10:54 - URL 필터 생성하기

    리소스

    • Filtering traffic by URL
    • NEHotspotManager
    • Network Extension
    • NEURLFilterManager
    • PIRService
    • TN3120: Expected use cases for Network Extension packet tunnel providers
    • TN3165: Packet Filter is not API
    • verdict(for:)
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • 개발 과정에 개인정보 보호 통합하기

    WWDC19

    • Network Extensions for the Modern Mac
  • 비디오 검색…

    안녕하세요. 저는 Maria Alice Dos Santos이며 Apple Internet Technologies 팀 소속입니다 저는 Network Extension 프레임워크와 iOS 및 macOS 26의 최신 향상된 사항에 대해 소개하겠습니다

    Network Extension은 Apple 플랫폼에서 네트워크 기능을 확장하고 맞춤화할 수 있는 앱을 개발하기 위해 다양한 API를 제공하는 프레임워크입니다

    Network Extension 앱은 네트워크 스택 전반에서 끊김 없이 원활하게 작동하며 Network 프레임워크 CFNetwork, WebKit, Sockets API와 긴밀히 통합됩니다 또한 라우팅, 트래픽 정책 다양한 시스템 관리 기능과 같은 시스템 수준 구성요소와도 연동됩니다 이를 통해 Network Extension은 네트워크 성능과 보안 측면에서 가장 최적화된 방식으로 원하는 기능을 구현할 수 있게 합니다

    Network Extension은 시스템 전체의 네트워크 설정을 변경할 수 있는 유용한 프레임워크입니다 앱이 다른 앱 및 시스템과 일관되게 작동하도록 하려면 구축하려는 앱의 유형에 맞는 적절한 API를 선택할 필요가 있죠

    이번 세션에서는 Network Extension 프레임워크를 사용해 만들 수 있는 다양한 앱을 소개하고 릴레이와 VPN을 활용해 원격 리소스에 접근 가능한 앱을 만드는 방법에 대해 알아보겠습니다 Network Extension 기능으로 콘텐츠 필터를 만드는 방법과 iOS 및 macOS 26에서 URL 기반 필터를 만드는 방법도 알아보죠 Network Extension 프레임워크는 앱이 네트워크 기능을 사용자화, 확장할 수 있는 다양한 방법을 지원합니다

    iOS에서는 Wi-Fi 관리와 Hotspots API를 사용하면 앱이 Wi-Fi 설정을 구성하고 핫스팟과 상호 작용할 수 있습니다 iOS 26의 새로운 NEHotspot Helper 확장 프로그램 API도

    여기에 포함됩니다. iOS 앱은 Local Push API도 사용 가능합니다 이 API는 크루즈선이나 병원 같은 곳의 네트워크에서 Apple Push Notification service를 쓸 수 없을 때 활용되죠 문자 메세지나 VoIP 통화 같은 기능을 제한된 네트워크에서도 지원할 수 있게 되죠

    DNS Configuration 및 Proxy API를 사용하여 DNS 트래픽을 공격으로부터 보호하는 보안 앱을 구축할 수 있습니다. DNS 구성을 설치하고 내장된 암호화된 DNS 프로토콜을 사용하거나 자체 보안 채널을 통해 DNS 트래픽을 프록시할 수 있습니다

    Mac 앱은 Transparent Proxy API를 이용해 특정 웹사이트의 트래픽을 클라우드 기반 보안 서비스로 우회시켜 인증과 인가를 처리할 수 있습니다 또한 안전하게 원격 리소스에 접근하거나 네트워크에서 접근하는 콘텐츠를 안전하고 개인적으로 필터링하는 앱도 만들 수 있습니다

    보안 원격 접속은 사람들이 외부에서 내부 시스템에 안전하게 연결하거나 기기에서 원격 서버로 트래픽을 터널링해 개인 트래픽을 보호하는 다양한 방식을 포함하는 넓은 범주의 기술입니다 Network Extension에서는 두 가지 주요 접근 방식이 있죠 바로 네트워크 릴레이와 IP 기반 VPN입니다 터널링하려는 트래픽 유형에 따라 필요에 가장 적합한 방식을 사용하면 됩니다 특정 앱에 접근하기 위해 TCP 또는 UDP 트래픽을 터널링하려면 기존 VPN 대신 네트워크 릴레이 고려해 보세요 이메일이나 협업용 클라우드 기반 엔터프라이즈 앱은 릴레이에 적합한 예시입니다 MASQUE 프로토콜은 성능에 최적화된 보안 프록시를 지원하며 최신클라우드 환경에 쉽게 통합할 수 있습니다 플랫폼에 릴레이 지원이 내장되어 있어 별도로 확장 프로그램을 만들 필요가 없습니다 NERelayManager API나 MDM 서버의 구성 프로필을 통해 릴레이 설정과 인증을 구성할 수 있습니다 IP 트래픽을 터널링하려면 IP 기반 VPN 옵션을 사용하세요 예를 들어, IP 기반 VPN은 기업 네트워크를 직원에게 확장해 마치 사무실에 있는 것 처럼 전체 네트워크에 완전히 접근할 수 있도록 합니다 이 솔루션은 지속적이거나 전체 터널 접속이 필요한 신뢰할 수 있는 장기 근무 직원에게 이상적입니다

    또는 엄격한 네트워크 보안 정책을 갖춘 강력하게 규제되는 조직은 관리되는 기기에서 모든 트래픽을 기업 네트워크를 통해 전송해야 할 수 있습니다 사람들은

    개인정보 보호와 익명성을 지키기 위해 보안되지 않은 네트워크에서 VPN으로 트래픽을 보호하고자 할 수 있습니다

    IP 기반 VPN 터널을 생성하려면 NEVPNManager API로 내장된 IKEv2 또는 IPsec 프로토콜을 사용하거나 NEPacketTunnelProvider로 맞춤형 터널링 프로토콜을 구현하면 됩니다 IP 기반 VPN을 생성할 때 구현은 시스템에 어떤 트래픽을 터널링할지, 어떤 경로를 포함하거나 제외할지 지정합니다 macOS에서는 관리자나 다른 프로세스로 앱 외부에서 라우팅 테이블을 변경할 수 있습니다 더 정확한 경로는 VPN 경로와 충돌할 수 있습니다 Network Extension은 앱이 VPN 경로를 항상 우선 적용하도록 강제할 수 있게 해줍니다 Network Extension은 앱이 터널 라우팅 요구사항을 쉽게 관리할 수 있도록 도와줍니다 스플릿 터널 VPN의 경우 enforceRoutes 옵션을 활성화해서 포함 경로와 제외 경로를 모두 강제할 수 있습니다 전체 터널 VPN에서는 includeAllNetworks 옵션을 켜서 모든 트래픽이 터널을 통해 라우팅하도록 강제할 수 있습니다 이 옵션이 활성화되면 지정한 제외 경로는 무효화됩니다 두 옵션 모두 시스템이 정의한 특정 트래픽이 터널 외부로 나가도록 하는 예외를 설정해 VPN 실행 중에도 필수 서비스가 예상대로 작동하도록 지원합니다 예를 들어 AirDrop이나 AirPlay 같은 로컬 네트워크 서비스가 터널을 우회하도록 하려면 excludeLocalNetworks 옵션을 켜야 합니다 또는 통화, 메세지, Apple Push Notification service 기기 통신등이 터널을 우회하도록 예외 옵션을 켤 수도 있습니다 대부분의 예외는 기본적으로 활성화 되어 있지만 보안 요구에 맞게 조정할 수 있습니다

    Network Extension은 VPN 앱을 구축하는 데 권장되는 API이며 다른 네트워킹 및 시스템 구성 요소와 원활하게 작동합니다 Packet Filter나 라우팅 테이블 직접 수정은 권장되지 않으며 Mac에서 Packet Filter를 사용하거나 라우팅 테이블을 직접 수정하지 마세요. 시스템이나 다른 앱의 트래픽 필터링 및 라우팅 규칙과 충돌할 위험이 있습니다 기존 VPN 앱이 Network Extension을 사용하고 있지 않다면 가능한 한 빨리 마이그레이션해야 합니다 이렇게 하면 앱이 시스템과 호환성을 유지하며 고객이 기대하는 핵심 기능과 조화를 이룰 수 있습니다 예를 들어 AirDrop, Mac 가상 디스플레이, Xcode sidecar 같은 연속성 기능과 잘 작동합니다 NEPacketTunnelProvider는 IP 트래픽 터널링에만 사용해야 하며 다른 목적에 쓰는 것은 권장되지 않죠 NEPacketTunnelProvider는 IP 계층에서 동작합니다 DNS 요청 프록시나 콘텐츠 필터링 같은 작업에 필요한 흐름 또는 애플리케이션 수준 메타데이터를 받지 않습니다 콘텐츠를 필터링 하려면 Content Filter API를 사용하세요 이 API는 기기 내 트래픽을 분석하고 네트워크 스택을 모니터링하거나 필터링 결정을 내릴 수 있도록 지원합니다 일반적인 사례로는 개인 방화벽이 있습니다 이는 개인 기기에서 악성으로 간주되는 트래픽 흐름을 검사하고 차단합니다 또는 고도로 보안이 필요한 환경에서 직원의 모든 네트워크 트래픽을 모니터링 하는 기업용 트래픽 모니터링 앱이 있습니다

    원하는 트래픽을 받기 위해 하나 또는 두 가지 콘텐츠 필터 제공자 중 하나의 하위 클래스를 생성하세요 NEFilterDataProvider는 TCP 및 UDP 흐름과 ICMP 같은 다른 IP 프로토콜 트래픽을 제공합니다

    Mac 앱의 경우 NEFilterPacket Provider의 하위 클래스가 2계층 패킷을 받게 됩니다

    필터 제공자는 트래픽을 수정하지 않습니다 흐름을 허용하거나 차단할지 시스템에 전달합니다 iOS 시스템 전체 콘텐츠 필터는 감독 기기에서만 지원됩니다

    NEFilterDataProvider와 NEFilterPacketProvider는 트래픽 흐름이나 패킷 검사를 기반으로 필터링할 때 유용합니다 하지만 경우에 따라 앱은 URL 같은 애플리케이션 수준 메타데이터를 기반으로 필터링할 수도 있습니다 기존의 콘텐츠 필터는 이 HTTPS 요청의 호스트와 포트 처럼 트래픽 수준 정보를 기반으로 필터링 결정을 내리며

    어떤 앱은 사이트 전체 차단 대신 특정 리소스만 필터링하기를 원할 수 있습니다 HTTPS 요청은 암호화되어 있어 전통적인 콘텐츠 필터는 URL 요청의 세부 정보에 접근할 수 없기 때문에 정확한 필터링 결정을 내릴 수 없습니다. 예를 들면 요청된 특정 리소스나 URL 내의 쿼리 매개변수 등이 있습니다 iOS 26부터는 전체 URL을 기반으로 필터링 하는 URL 필터를 만들 수 있습니다 Network Extension URL Filter는 시스템 전체의 HTTP와 HTTPS 요청을 전체 URL 기준으로 필터링 할 수 있습니다 이를 통해 인터넷에서 특정 리소스를 차단하거나 유해 사이트로부터 자녀를 보호하는 부모용 앱, 학생이 소셜 미디어나 도박 또는 다른 유해한 콘텐츠가 있는 다양한 사이트에 접속을 막는 학교 앱 직원이 업무 외 다른 콘텐츠에 접근하는 것을 차단하는 기업용 앱을 만들 수도 있습니다

    Apple은 개인정보 보호가 기본적 인권이라고 믿습니다 URL 필터링은 최신 암호화 기술을 개인정보를 침해하지 않으면서 전체 URL을 기반으로 효과적인 필터링 결정을 내리는 앱을 만들 수 있도록 합니다 URL에는 고유 식별자나 방문 기록 같은 민감 정보가 포함됩니다 Network Extension은 전체 URL을 기반으로 정확한 필터링 결정을 내리는 콘텐츠 필터를 만들 수 있도록 설계되었습니다 URL 콘텐츠는 앱에 노출되지 않으며 백엔드 서버의 모든 데이터베이스 쿼리는 개인 정보 보호를 위해 익명화 됩니다 Apple과 여러분의 서버를 포함한 전체 서버 체인은 콘텐츠나 사용자 정보에 접근할 수 없습니다 URL 필터링은 차단할 URL을 포함한 URL 데이터 세트를 기반으로 이루어지며 URL 조회를 위한 기기 내 사전 필터와 기기 외부 데이터베이스 서버를 제공합니다 시스템은 데이터 세트를 기반으로 필터링 전체 과정을 대신 수행하며 앱은 필터링 경로에서 실행되지 않고 트래픽에 접근하지 않습니다 성능 향상을 위해 기기 내 사전 필터링을 하고 최종 판단을 위해 기기 외부 데이터베이스 조회를 수행할 수 있습니다 모든 외부 데이터베이스 교환은 콘텐츠와 사용자 정보 보호를 위해 암호화됩니다 강력한 개인 정보 보호 기능 덕분에 URL 필터는 관리된 기기와 비관리 기기 모두에서 지원됩니다 기능 작동 방식을 설명하기에 앞서 기반 기술을 먼저 소개하겠습니다 URL 필터는 Bloom 필터 개인정보 검색 프라이버시 패스, Oblivious HTTP 릴레이 이렇게 네 가지 기술에 기반합니다

    먼저 Bloom 필터부터 시작해보죠

    URL 필터링에서 Network Extension은 차단할 URL 데이터 세트로 구축한 Bloom 필터를 사용합니다 Bloom 필터는 다중 해시 함수를 통해 고정 크기 비트 배열을 설정하며 빠른 확인용 사전 필터로 사용됩니다 Bloom 필터를 생성한 후에는 해당 필터를 사용하여 어떤 요소가 집합의 요소인지 그 여부를 확인할 수 있습니다 Bloom 필터는 결코 거짓 음성 결과를 생성하지는 않지만 거짓 양성 결과를 생성할 수는 있습니다

    Bloom 필터는 빠른 확인을 위한 사전 필터로 사용됩니다 일치하지 않으면 해당 URL은 데이터 세트에 포함되지 않은 것이 확실하며 추가 확인 없이 즉시 허용됩니다 만약 일치한다면 오탐 가능성이 있기 때문에 기기 외부 데이터베이스 조회 같은 추가 확인이 필요합니다

    Bloom 필터를 사전 필터로 사용하면 기기 외부 조회를 크게 줄여 성능을 높입니다

    두 번째 핵심 기술은 Private Information Retrieval(PIR)입니다 PIR은 서버에 쿼리 키워드나 조회 결과를 공개하지 않고 키워드 값 데이터베이스를 호스팅하는 서버에 데이터베이스 조회를 수행할 수 있도록 합니다 이는 동형 암호화를 기반으로 암호화된 데이터에 대해 연산을 수행하며 RIP 서버가 암호화된 쿼리에 대해 데이터 베이스를 조회할 수 있습니다 따라서 서버가 쿼리나 응답 내용을 볼 수 없도록 합니다

    원리는 간단합니다 클라이언트는 암호화 키를 생성합니다 그리고 기기내에 보관합니다 모든 쿼리는 암호화되어 서버로 전송됩니다 서버는 이를 기반으로 데이터베이스 조회를 수행합니다 서버는 처리 과정 어느 시점에서도 쿼리를 복호화 할 수 없으며 암호화된 응답만 클라이언트로 전달합니다 클라이언트는 기기에서 응답을 받고 복호화합니다 서버가 아니라 클라이언트만이 응답을 복호화할 수 있으며 그 결과를 사용할 수 있습니다 PIR(개인정보 검색)은 이미 Live Caller ID Lookup API 같은 다양한 개인정보 보호 기능에 활용되고 있는 기술이죠 URL 필터링에서는 PIR 서버가 암호화된 쿼리로 URL을 조회해 서버가 요청된 URL이나 결과를 모르는 상태에서 필터링 기능을 제공할 수 있습니다 세 번째 핵심 기술은 Privacy Pass입니다 PIR은 프라이버시 패스를 사용해 서버에 대한 익명 인증을 수행합니다 이를 통해 서버는 인증된 기기에서 온 요청에만 응답하며 개별 요청 이력을 추적할 수 없습니다 각 기기는 초기 검증을 거쳐 장기 자격 증명을 받고 이를 통해 암호화된 블라인드 서명 토큰을 Privacy Pass Issuer로부터 받아 인증에 사용합니다 기기는 이러한 토큰을 사용하여 서버와 인증을 수행하며 신원을 노출하지 않습니다 마지막 핵심 기술은 Oblivious HTTP 릴레이입니다 개인 정보를 보호하는 프록시죠 Oblivious HTTP는 IP 주소를 숨겨 서버가 요청을 추적하거나 연결하지 못하게 합니다 여기에 클라이언트, 릴레이 게이트웨이라는 3개 개체가 있는데 클라이언트는 게이트웨이의 공개 키로 요청을 암호화합니다 그런 다음 암호화된 요청을 Relay로 전송합니다 Relay는 클라이언트의 IP주소를 제거하고 게이트웨이로 요청을 전달합니다 게이트웨이는 요청을 복호화해 대상 리소스로 전송합니다 Relay는 요청 내용에 대해 아무것도 알 수 없으며 게이트웨이와 대상 리소스는 트래픽의 출처를 알 수 없습니다

    지금까지 네 가지 기술을 소개했습니다 이제 솔루션을 설정하는 방법과 URL 필터링 작동 방식을 설명하겠습니다

    기기에 URL 필터 앱이 설치되어 앱은 Network Extension에 URL 데이터 세트를 Bloom 필터 형태로 제공하고 URL 조회를 처리하는 개인 정보 검색 서버(PIR)의 데이터베이스도 제공합니다

    서버 설정에는 익명 인증을 위한 Privacy Pass Issuer도 포함됩니다

    URL 필터 앱은 Network Extension에 개인정보 검색(PIR) 서버의 위치를 알려 줍니다 또한 앱은 Bloom 필터를 기기로 가져오기 위한 새로운 앱 확장 프로그램도 구현합니다

    모든 데이터베이스 쿼리 및 응답은 Apple이 호스팅하는 Oblivious HTTP 릴레이를 통해 교환되며 Oblivious HTTP 게이트웨이는 여러분이 호스팅해 서버로 트래픽을 전달합니다

    URL 필터링 요청은 Apple이 호스팅하는 Oblivious HTTP 릴레이를 통해 전달됩니다

    이 기능은 반드시 문서에 제공된 신청서를 통해 신청해야 합니다 Apple은 승인을 위해 Oblivious HTTP 릴레이용 서버 구성을 검증합니다 이 절차는 TestFlight, ad-hoc 개발자 ID나 기업 서명 빌드로 App Store에서 앱을 배포하기 전에 완료해야 하죠 개발용 서명 빌드는 이 요구사항에서 면제되므로 필터링 앱을 즉시 빌드하고 테스트할 수 있습니다

    모든 준비가 끝났습니다 이제 예시를 들어 URL 필터링이 작동하는 원리를 설명하겠습니다 URL 필터링은 시스템에 의해서만 수행됩니다 앱이나 앱 확장 프로그램은 이 경로에서 실행되지 않습니다 시스템은 모든 URL 요청을 검사하며 각 URL을 데이터 세트와 대조합니다 이 예시에서 브라우저가 URL 요청을 example.com의 특정 리소스에 시작하면 시스템은 먼저 Bloom 필터와 요청된 URL을 대조합니다 Bloom 필터에서 부정 일치가 나오면 URL이 데이터 세트에 없다는 의미입니다 URL이 허용되고 브라우저는 HTTP 요청을 진행합니다

    이제 브라우저는 example.com의 다른 리소스에 또 다른 URL 요청을 시작하고 Bloom 필터에서 긍정 일치를 받습니다. 이는 거짓 양성 결과일 가능성도 있기 때문에 긍정 일치 결과는 해당 URL이 여러분의 데이터 세트에 포함될 수 있음을 의미합니다 이 경우 시스템은 암호화된 쿼리를 개인정보 검색(PIR) 서버로 보내 기기 외부 조회를 수행합니다 서버에서는 암호화된 쿼리로 데이터베이스 조회가 수행되며 서버는 무엇이 조회되고 반환 되는지 전혀 알 수 없습니다 서버는 일치 결과를 암호화해 응답하며

    기기에서 시스템이 이를 복호화합니다 반환된 결과가 일치를 나타내면 URL은 차단되고 브라우저의 요청은 실패합니다

    Network Extension URL 필터링은 시스템 전체에 적용됩니다. WebKit이나 URLSession 등의 Apple 네트워킹 API를 통해 전송된 모든 HTTP 요청은 시스템에서 검사됩니다 그러나 이러한 네트워킹 API를 사용하지 않는 앱의 HTTP 트래픽은 자동으로 검사되지 않습니다 WebKit이나 URLSession을 사용하지 않는 브라우저나 앱을 개발하고 계신다면 URL 요청을 전송하기 전에 모두 검사하도록 참여 API를 도입해야 합니다 NEURLFilter의 verdictForURL을 호출해 요청 URL을 전달하고 URL이 거부되면 요청을 실패시키며 반환된 판정을 따릅니다. 이제 URL 필터 작동 방식을 이해했으니 직접 하실 수 있도록, URL 필터 생성 절차를 설명하겠습니다 개인정보 검색(PIR) 서버를 설정하고 Bloom 필터를 만든 뒤 URL 필터 앱과 앱 확장 프로그램을 빌드합니다

    개인정보 검색(PIR) 서버 설정을 시작하겠습니다 시작하려면 샘플 코드를 사용하세요 이 코드는 개인정보 검색(PIR) 샘플 서버를 제공합니다 프로젝트 저장소에는 개인정보 검색(PIR) 서버와 Privacy Pass Issuer의 샘플 구현이 포함되어 있습니다 URL 필터링용 서버를 사용자 지정하려면 특정 이름 형식으로 사용 사례를 생성해야 합니다 사용 사례 이름은 앱 번들 식별자를 접두사로 하고 그 뒤에 url.filtering 문자열이 와야 합니다

    PIR 서버는 데이터를 키 값 형식으로 저장합니다 Network Extention URL 필터용 데이터 세트는 URL 문자열을 키로 값은 정수 1로 설정해야 합니다 두 번째 단계는 URL 데이터 세트로 Bloom 필터를 구축하는 것입니다 NEURLFilterControlProvider API 문서에 지정된 해시 함수와 메서드를 사용해서 URL 데이터 세트로 Bloom 필터를 생성합니다

    데이터 세트의 정적 또는 동적 특성에 따라 Bloom 필터를 기기에 제공하는 방법과 업데이트 빈도를 결정하세요 거의 변경되지 않는 정적 데이터 세트의 경우 Bloom 필터를 앱 번들에 포함시키고 앱 확장 프로그램이 앱 번들 리소스에서 이를 가져오도록 합니다 Bloom 필터 업데이트는 앱 업데이트와 함께 포함할 수 있습니다 자주 변경되는 동적 데이터 세트의 경우 시스템이 주기적으로 가져오도록 설정하고 시스템이 fetch를 트리거하면 앱 확장 프로그램은 서버에서 Bloom 필터를 다운로드할 수 있죠 다음 단계는 URL 필터 앱을 빌드하는 것입니다 앱에 새 Network Extension url-filter-provider 권한을 추가해서 URL Filter API를 사용할 수 있도록 하고 NEURLFilterManager API로 앱에 구성을 만들고 URL 필터를 관리하세요 Network Extension 프레임워크를 가져오고 NEURLFilterManager 공유 인스턴스를 사용하도록 합니다 몇 단계만 거치면 URL 필터를 구현할 수 있습니다 먼저 디스크에 저장된 URL 필터 구성의 최신 스냅샷이 있다면 불러옵니다 그런 다음 구성에서 필요한 속성을 설정하여 시스템이 개인 정보 검색(PIR) 서버에 연결하고 통신하는 방법을 지정합니다

    기타 선택적 매개 변수를 구성하여 URL 필터를

    세밀하게 조정한 뒤 마지막으로 URL 필터 설정을 활성화하고 저장하세요. 그럼 이제 URL 필터가 적용됩니다

    URL 필터는 개인 소비자용 및 기업용 배포를 지원합니다 URL 필터 앱의 대규모 기업용 배포를 위해 Mobile Device Management(MDM)을 통해 관리되는 장치에 URL 필터 구성 프로필을 배포하세요 기존 Content Filter 페이로드는 이제 URL 필터 기능을 활성화하는 새로운 키와 URLFilterParameter를 설정하는 새 딕셔너리를 지원합니다 MDM 기반 URL 필터 구성은 기기 감독이 필요합니다

    다음 단계는 URL 필터 앱 확장 프로그램 빌드입니다 앱 확장 프로그램을 만들려면 Xcode에서 새로운 URL 필터 앱 확장 프로그램 템플릿을 사용하세요 앱 확장 프로그램에서 NEURLFilterControlProvider 프로토콜을 구현합니다 이는 앱 확장 프로그램이 Bloom 필터를 기기로 가져오게 합니다. Network Extension 프레임워크를 가져오고 NEURLFilterControlProvider 프로토콜을 구현합니다 구현한 fetchPrefilter 함수는 시스템에 의해 호출되어 설정한 주기에 따라 Bloom 필터를 가져옵니다 여러분이 구현한 시스템에서 Bloom 필터를 가져오고 시스템으로 반환합니다 여러분이 구현한 시스템은 Bloom 필터 데이터를 앱 번들 리소스에서 직접 가져오거나 서버에서 다운로드할 수 있습니다 App Store나 TestFlight에 앱을 제출하기 전에 모든 기능 요청이 승인되었는지 반드시 확인하세요. 그래야 요청이 Oblivious HTTP Gateway로 전달될 수 있습니다 Network Extension은 트래픽을 터널링하고 필터링하는 등의 작업을 수행할 수 있는 강력한 프레임워크입니다 네트워크 확장 기능을 사용하는 방법을 검토해 보세요 앱을 빌드할 때 시스템과 잘 호환되며 원하는 기능을 제공하는 적절한 API를 사용하세요 TCP, UDP 트래픽의 안전한 원격 접속에 Network 릴레이를 사용하고 VPN 솔루션은 Network Extension으로 구축하며 Network Extension URL Filter API 로 강력한 콘텐츠 필터도 만드세요 샘플 서버와 앱을 참고해 바로 시작해 보세요 시청해 주셔서 감사합니다

    • 22:15 - Use participation API to check URLs before sending requests

      // Use participation API to check URLs before sending requests
      
      import NetworkExtension
      
      func checkURL(url: URL) async throws -> Bool {
        var passRequest : Bool = true
      
        let verdict = await NEURLFilter.verdict(for: url)
      
        if verdict == .deny {
          passRequest = false
        }
        return passRequest
      }
    • 25:01 - Configure and manage URL Filter

      // Configure and manage URL Filter
      
      import NetworkExtension
      
      let manager = NEURLFilterManager.shared
      
      try await manager.loadFromPreferences()
      
      try manager.setConfiguration(
          pirServerURL: URL(string:"https://pir.example.com")!,
          pirPrivacyPassIssuerURL: URL(string:"https://privacypass.example.com")!,
          pirAuthenticationToken: "1234",
          controlProviderBundleIdentifier: "com.example.myURLFilter.extension")
      
      manager.prefilterFetchInterval = 86400 // fetch every 1 day
      manager.shouldFailClosed = false
      manager.localizedDescription = "Alice's URL Filter"
      manager.isEnabled = true
      
      try await manager.saveToPreferences()
    • 26:41 - Implement NEURLFilterControlProvider protocol

      // Implement NEURLFilterControlProvider protocol
      
      import NetworkExtension
      
      class URLFilterControlProvider: NEURLFilterControlProvider {
      
        func fetchPrefilter() async throws -> NEURLFilterPrefilter? {
              
          // Fetch your Bloom filters data from your app bundle or from your server
          let data = NEURLFilterPrefilter.PrefilterData.temporaryFilepath(fileURL)
          let result = NEURLFilterPrefilter(data: data,
                                            bitCount: numberOfBits,
                                            hashCount: numberOfHashes,
                                            murmurSeed: murmurSeed)
          return result
        }
      }
    • 0:00 - 인사말
    • Apple 플랫폼에서 네트워킹을 사용자 정의하는 앱을 빌드하는 데 사용할 수 있는 프레임워크인 Network Extension에 대해 알아보세요. iOS 및 macOS 26에서 프레임워크는 VPN, 릴레이, 콘텐츠 필터, 새로운 URL 기반 필터링 기능을 제공합니다.

    • 1:48 - NetworkExtension 소개
    • Network Extension 프레임워크를 사용하면 iOS 및 macOS에서 앱을 활성화하여 네트워킹을 사용자 지정할 수 있습니다. Wi-Fi 관리, 핫스팟 상호작용, 제한된 네트워크에 대한 로컬 푸시 알림, DNS 보안, 콘텐츠 필터링, 안전한 원격 리소스 액세스가 이에 포함됩니다.

    • 3:21 - 원격 리소스에 접근하기
    • 보안 원격 액세스를 통해 사람들은 외부 위치에서 내부 시스템에 안전하게 연결하거나 보안 기능이 적용되지 않은 네트워크에서 개인 트래픽을 보호할 수 있습니다. Network Extension은 트래픽 터널링에 대한 두 가지 주요 접근 방식을 제공합니다. 바로 네트워크 릴레이와 IP 기반 VPN입니다. MASQUE 프로토콜을 사용하는 네트워크 릴레이는 성능에 최적화되어 있으며 클라우드 호스팅 엔터프라이즈 앱과 같은 특정 앱으로 TCP 또는 UDP 트래픽을 터널링하는 데 적합합니다. ‘NERelayManager’를 사용하거나 MDM 프로필을 통해 릴레이를 구성할 수 있습니다. IP 기반 VPN은 기업 네트워크를 직원으로 확장하여 전체 네트워크 액세스를 제공하거나 모든 트래픽을 기업 네트워크를 통해 전송해야 하는 등 규제가 엄격한 조직에 가장 적합합니다. 개인은 이를 사용하여 보안 기능이 적용되지 않은 네트워크에서 개인 정보를 보호할 수도 있습니다. NEVPNManager API를 사용하여 IKEv2 또는 IPsec과 같은 내장형 프로토콜 또는 사용자 정의 프로토콜로 IP 기반 VPN 터널을 만들 수 있습니다. Network Extension을 사용하면 앱은 VPN 경로를 시행하여 우선순위를 보장하고 구성 가능한 예외를 통해 분할 터널 및 전체 터널 VPN 구성을 지원합니다. Network Extension은 VPN 앱을 구축하는 데 권장되고 이를 지원하는 API입니다. 다른 방법을 사용하는 것은 권장되지 않고 호환성 문제가 발생할 수 있습니다. 가능한 한 빨리 VPN 앱을 Network Extension으로 마이그레이션하세요.

    • 8:40 - 콘텐츠 필터링하기
    • Content Filter API를 사용하면 개인 방화벽과 기업 트래픽 모니터링 앱을 만들 수 있습니다. 앱이 트래픽 흐름을 검사하고 ‘허용’ 또는 ‘중단’ 판정을 내릴 수 있습니다.

    • 10:54 - URL 필터 생성하기
    • iOS 26에서는 앱이 인터넷 시스템 전체에서 특정 리소스를 차단하도록 URL 필터를 만들 수 있습니다. 이 기술은 특히 부모의 관리 앱, 학교, 기업에서 부적절하거나 업무와 관련 없는 콘텐츠에 대한 액세스를 제한하는 데 유용합니다. URL 필터는 고급 암호화 기술을 사용하여 사용자 개인 정보 보호를 우선시합니다. 이 시스템은 4가지 핵심 기술을 조합합니다. 바로 Bloom 필터, Private Information Retrieval(PIR), Privacy Pass, Oblivious HTTP 릴레이죠. 앱은 필터링 경로에서 실행되지 않으며 URL 트래픽에 액세스할 수 없습니다. 또한, Apple이나 사용자의 서버는 URL 트래픽 또는 신원 정보에 액세스할 수 없습니다. URL 필터는 관리형 기기 및 비관리형 기기 모두에서 지원됩니다. URL 필터는 Apple에서 호스팅되는 OHTTP 릴레이를 사용하는데, 이를 적용하여 구성하고 배포 서명 앱에 사용해야 합니다. 개발 서명 빌드는 이러한 요구 사항에서 면제됩니다. WebKit 또는 URLSession을 사용하지 않는 앱을 빌드하는 경우, 각 URL을 NEURLFilter API에 전달하고 반환된 결과를 따릅니다. 기업 배포의 경우, URL 필터 구성 프로필을 모바일 기기 관리를 통해 관리형 기기에 푸시할 수 있습니다.

Developer Footer

  • 비디오
  • WWDC25
  • NetworkExtension으로 네트워크 트래픽 필터링 및 터널링하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침